Sobes.tech

Data Engineer

Proporția traficului de boturi Echipa antifraudă a dezvoltat un mecanism pentru detectarea traficului de boturi pe site-ul magazinului: atunci când un bot accesează site-ul, se adaugă subșirul "bot" (fără a ține cont de majuscule/minuscule) la parametrii URL-ului său. Dacă user_id a fost identificat ca bot cel puțin o dată în decembrie, trebuie considerat întotdeauna ca bot. Studiați setul de date cu vizitele utilizatorilor pe site și calculați proporția de boturi din numărul total de utilizatori în decembrie 2024 (rotunjind la o zecimală). Formatul de intrare Tabelul visits: - event_date (date) — data vizitei - user_id (int) — identificator unic al utilizatorului - url (string) — link-ul prin care s-a făcut vizita Datele nu conțin valori lipsă sau incorecte. Formatul de ieșire Interogarea trebuie să returneze un tabel cu câmpurile: - share (float) — proporția de boturi din numărul total de utilizatori în decembrie, rotunjită la o zecimală.

Junior
167

În PostgreSQL, este necesar să se optimizeze performanța tranzacțiilor prin nivelul minim de izolare, în care: • tranzacțiile paralele pot vedea modificări nefinalizate ale celorlalte; • sunt posibile "citiri murdare" (dirty read). Ce nivel de izolare trebuie specificat pentru tranzacție pentru a atinge acest scop? dirty read nu este posibil în PostgreSQL repeatable read read uncommitted read committed serializable

Junior
166

Există două tranzacții. Mai întâi, prima tranzacție execută o comandă. Apoi, a doua tranzacție execută o comandă. Ulterior, prima tranzacție continuă. Ce secvență va duce la blocaj mutual? ```sql -- prima tranzacție update accounts set balance = balance + 100 where id = ?; -- a doua tranzacție update accounts set balance = balance - 50 where id = ?; update accounts set balance = balance + 200 where id = ?; ```

Junior
166

Cum se recuperează munca dintr-o ramură remote dacă la încercarea de a face `git checkout hotfix/missing-footer` primești un mesaj de eroare spunând că ramura nu a fost găsită?

Junior
165

Analiza activității utilizatorilor în campaniile publicitare Compania păstrează evidența evenimentelor legate de campaniile publicitare. Sunt furnizate două tabele: • campaigns — lista campaniilor publicitare cu identificatorii și denumirile lor; • events — evenimentele utilizatorilor pe campanii, cu informații despre tipul evenimentului (de exemplu 'click' (clic)) și timpul. Este necesar să se creeze un raport pentru fiecare campanie cu următorii indicatori: • Numărul total de evenimente. • Numărul de utilizatori unici care au efectuat evenimente. • Timpul primului și ultimului eveniment pentru campanie. • Rangul campaniei în ordine descrescătoare după numărul total de evenimente. Rangul este un număr atribuit fiecărei linii în setul de rezultate pe baza ordinii datelor. Dacă două sau mai multe rânduri au aceeași valoare, primesc același rang, dar următorul rang este sărit. Raportul trebuie să includă doar campaniile care au avut evenimente: campaniile fără evenimente nu sunt luate în considerare. Raportul final trebuie să fie sortat mai întâi după rangul campaniei în ordine crescătoare, apoi după campaign_name în ordine alfabetică. Formatul de intrare • campaign_name (string) — numele campaniei publicitare • start_date (timestamp) — data și ora de început a campaniei • end_date (timestamp) — data și ora de sfârșit a campaniei Tabelul events: • event_id (int) — identificator unic al evenimentului • user_id (int) — identificator unic al utilizatorului care a efectuat evenimentul • campaign_id (int) — identificator unic al campaniei • event_type (string) — tipul evenimentului, de exemplu 'click' sau 'conversion' • event_time (timestamp) — data și ora evenimentului Datele nu conțin valori lipsă sau incorecte. Formatul de ieșire Interogarea trebuie să returneze un tabel cu câmpurile în această ordine: • campaign_name (string) — numele campaniei publicitare • total_events (int) — numărul total de evenimente legate de campanie • unique_users (int) — numărul de utilizatori unici care au efectuat evenimente • first_event_time (timestamp) — data și ora primului eveniment al campaniei • last_event_time (timestamp) — data și ora ultimului eveniment al campaniei • campaign_rank (int) — rangul campaniei în ordine descrescătoare după numărul total de evenimente Sortați datele după rangul campaniei în ordine crescătoare, apoi după campaign_name în ordine alfabetică.

Junior
161

Ce trebuie să faceți dacă doriți să schimbați ramura către care indică un submodul? - Submodulele nu suportă schimbarea ramurii - Ștergeți submodulul și adăugați-l din nou cu ramura dorită - Schimbați ramura în submodul și faceți un commit în depozitul principal - Executați git checkout pe ramura dorită în submodul și înregistrați modificările în depozitul principal - Executați git submodule update --branch specificând noua ramură

Junior
158

De ce iei în considerare oferte de muncă în acest moment?

Junior
153

Ce s-a întâmplat și cum se poate recupera munca?

Junior
151

În PostgreSQL, antetul de versiune al rândului include parametrul xmax. Care este rolul său în gestionarea tranzacțiilor? - Pentru crearea unui identificator unic pentru rând în tabel - Pentru verificarea vizibilității rândului de către alte tranzacții - Pentru indicarea numărului de tranzacție care a șters sau actualizat rândul - Pentru blocarea rândului împotriva modificărilor simultane de către mai multe tranzacții - Pentru indicarea valorii maxime care poate fi scrisă într-o coloană numerică

Junior
150

Ramura feature conține mai multe commit-uri cu un fișier config.yaml comis incorect, care a fost corectat ulterior. Ca urmare, echipa a decis să elimine complet toate modificările fișierului din istorie pentru a evita divulgarea setărilor confidențiale. Starea inițială a ramurii (ieșirea comenzii git log --oneline): 1 a4b5c67 (HEAD -> feature) Refactorizarea logicii serviciului 2 d9f0a11 Corectarea typo-ului din config.yaml 3 7c1d3f2 Adăugarea unui config.yaml temporar 4 e3a98cd Commitul inițial 5 După rescrierea istoriei pentru a elimina fișierul config.yaml, ieșirea comenzii git log --oneline a devenit: 6 b9e7d42 (HEAD -> feature) Refactorizarea logicii serviciului 7 41f3b60 Commitul inițial Ce operație a realizat echipa? - A executat git revert pe commit-ul cu config.yaml - A executat git filter-branch --index-filter "git rm --cached config.yaml" -- --all - A executat git rebase -i eliminând commits care conțineau modificări ale fișierului - A executat git commit --amend și git push --force - A folosit git cherry-pick pentru a crea o ramură nouă fără config.yaml

Junior
150

Tabela notifications conține un câmp status, în care valorile sunt: 'sent', 'delivered', 'read'. Care dintre interogări este corectă? select * from notifications where status like '%sent%' order by created_at desc limit 5 select * from notifications where status = 'read' order by created_at desc limit 5 select * from notifications order by status desc limit 5 select * from notifications where status not in ('sent', 'delivered') order by created_at asc limit 5 select * from notifications where status in ('sent', 'delivered') order by created_at desc limit 5

Junior
150

Vă rugăm să ne spuneți de ce sunteți interesat de această poziție.

Junior
150

A fost creată structura tabelelor indicată în imagine. Este necesar să executați interogarea indicată în imagine. Ce tip de join trebuie utilizat în loc de [...], pentru ca în rezultat, pentru înregistrările cu type = 'table_aw' coloana 'naming' să fie completată, iar pentru înregistrările cu type = 'table2' — coloana 'serial_number'? create table multirelation( type varchar not null, entity_id integer not null ); create table table_aw( id integer primary key, naming varchar not null ); create table table2( id integer primary key, serial_number varchar not null ); -- structura tabelelor select m.type,m.entity_id, ta.naming, t2.serial_number from multirelation m [...] join table_aw ta on m.entity_id = ta.id and m.type='table_aw' [...] join table2 t2 on m.entity_id = t2.id and m.type='table2'; -- interogare Lăsați gol inner cross right left

Junior
148

Ce comanda din directorul rădăcină al proiectului trebuie utilizată pentru a actualiza submodulul docs/ la cea mai recentă versiune din depozitul remote și pentru a pregăti această modificare pentru commit? git fetch docs/ && git merge docs/FETCH_HEAD git pull --recurse-submodules git submodule update --remote docs/ cd docs/ && git pull && cd .. && git commit -am "Actualizare" git submodule update --init docs/

Junior
145

Analiza frecventei în cluburile de fitness Lucrați ca analist într-o rețea de cluburi de fitness. Aveți informații despre vizitele utilizatorilor și abonamentele pe care le cumpără. Este necesar să analizați eficiența utilizării abonamentelor. Calculați pentru fiecare tip de abonament: • numărul total de utilizatori care au folosit acest tip de abonament. Luați în considerare doar user_id unice; • numărul total de vizite pentru acest abonament. Luați în considerare toate vizitele utilizatorilor cu acest abonament; • proporția utilizatorilor acestui abonament în procent din numărul total de utilizatori (rotunjit la o zecimală). Pentru calcularea proporției utilizatorilor, folosiți raportul dintre numărul de utilizatori cu acest abonament și numărul total de utilizatori unici. Fiecare utilizator poate avea doar un abonament. Sortați rezultatul după tipul de abonament în ordine alfabetică. Formatul de intrare Tabel memberships: • membership_id (int) — identificator unic al abonamentului • user_id (int) — identificator unic al utilizatorului • membership_type (text) — tipul abonamentului Tabel visits:

Junior
145

Trebuie să readuci rapid mai multe fișiere la versiunea ultimului commit, fără a afecta celelalte modificări. Cum să procedezi? git reset --hard HEAD Șterge și creează fișierele manual git fetch și git merge git revert HEAD git checkout HEAD^ <fișier1> <fișier2>

Junior
143

Ce s-a întâmplat și cum poți recupera munca?

Junior
142

Lați proiecte Scala la care ai lucrat anterior? Împărtășește sarcini specifice și realizări în această tehnologie.

Junior
141

Ce se poate spune despre corectitudinea următoarei interogări? select * from sessions where ended_at is null and status != 'pending';

Junior
140

Aveți două tabele legate: first_table și second_table. Doriți să executați comanda TRUNCATE TABLE second_table CASCADE;, pentru a șterge toate rândurile din second_table și toate datele dependente de aceasta. Care pot fi consecințele executării acestei comenzi? create table first_table ( id integer primary key ); create table second_table ( id serial primary key, first_table_fk integer references first_table(id) ); - Secvența second_table_id_seq va fi resetată la valoarea inițială. - Toate înregistrările din first_table legate prin cheie externă de second_table vor fi șterse. - Indicii existenți pentru second_table vor fi șterși și recreați automat. - La inserțiile ulterioare în second_table, valoarea implicită pentru id poate începe cu o valoare incorectă. - Se va produce o eroare, deoarece comanda CASCADE este interzisă pentru tabelele cu chei externe.

Junior
139
/3