Yra dvi operacijos. Pirmoji operacija vykdo komandą. Po to, antroji operacija vykdo komandą. Tada pirmoji operacija tęsiasi. Kokia seka sukels tarpusavio blokavimą? ```sql -- pirmoji operacija update accounts set balance = balance + 100 where id = ?; -- antroji operacija update accounts set balance = -50 where id = ?; update accounts set balance = +200 where id = ?; ```
Data Engineer
„Botų srauto dalis Antifraud komanda sukūrė mechanizmą, skirtą aptikti botų srautą parduotuvės svetainėje: kai botas įeina į svetainę, į jo URL parametrus pridedama subeilutė "bot" (neatsižvelgiant į didžiąsias ir mažąsias raides). Jei user_id buvo bent kartą nustatytas kaip botas gruodžio mėnesį, jis visada turi būti laikomas botu. Tyrinėkite naudotojų apsilankymų duomenų rinkinį svetainėje ir apskaičiuokite botų dalį pagal bendrą naudotojų skaičių 2024 m. gruodį (suapvalinkite iki vieno skaitmens po kablelio). Įvesties formatas Lentelė visits: - event_date (date) — apsilankymo data - user_id (int) — unikalus naudotojo identifikatorius - url (string) — nuoroda, per kurią įvykdytas apsilankymas Duomenys neapima trūkstamų ar klaidingų reikšmių. Išvesties formatas Užklausa turi grąžinti lentelę su laukais: - share (float) — botų dalis pagal bendrą naudotojų skaičių gruodį, suapvalinta iki vieno skaitmens po kablelio.
Kaip atkurti darbą iš nuotolinės šakos, jei bandydami `git checkout hotfix/missing-footer` gaunate klaidos pranešimą, kad šaka nerasta?
Kokia strategija būtų efektyvi visų šakų pažeidžiamumui pašalinti su minimaliu projekto veikimo sutrikimo rizika? - Sukurti seriją revert-commitų problematiškam commitui ir visiems, kurie jį iš dalies pataisė, tada sukurti naują commitą su pilnu pataisymu - Sukurti hotfix šaką nuo taško prieš problematišką commitą, atlikti pataisas ir sujungti šią šaką su visomis paveiktomis šakomis - Sukurti vieną pataisymo commitą naudodami git revert abc123 pagrindinėje šakoje ir tada cherry-pick šį commitą į visas leidimo šakas - Naudoti git bisect tiksliai nustatyti problematišką kodą, sukurti pataisą ir taikyti ją visoms šakoms naudojant git am - Naudoti git rebase -i redaguoti problematišką commitą kiekvienoje šakoje, po to atlikti force-push (force-push)
Vartotojų aktyvumo analizė reklamos kampanijose Įmonė stebi įvykius, susijusius su reklamos kampanijomis. Įvesties lentelės: • campaigns — reklamos kampanijų sąrašas su jų identifikatoriais ir pavadinimais; • events — vartotojų įvykiai pagal kampanijas su informacija apie įvykio tipą (pavyzdžiui, 'click' (paspaudimas ant reklamos)) ir laiką. Reikia sudaryti ataskaitą kiekvienai reklamos kampanijai su šiais rodikliais: • Bendra įvykių skaičius. • Unikalių vartotojų, kurie atliko įvykius, skaičius. • Kampanijos pirmojo ir paskutinio įvykio laikas. • Kampanijos reitingas pagal bendrą įvykių skaičių mažėjimo tvarka. Reitingas — skaičius, kuris priskiriamas kiekvienai eilutei rezultato rinkinyje pagal nurodytą duomenų tvarką. Jei dvi ar daugiau eilučių turi tą pačią reikšmę, joms priskiriamas tas pats reitingas, tačiau sekantis reitingas praleidžiamas. Į ataskaitą įtraukiamos tik kampanijos, kurios turėjo įvykių: be įvykių esančios kampanijos neįtraukiamos. Galutinis ataskaita turi būti pirmiausia surūšiuota pagal reitingą mažėjimo tvarka, o tada pagal campaign_name abėcėlės tvarka. Įvesties formatas • campaign_name (string) — reklamos kampanijos pavadinimas • start_date (timestamp) — kampanijos pradžios data ir laikas • end_date (timestamp) — kampanijos pabaigos data ir laikas Įvykiai: • event_id (int) — unikalus įvykio identifikatorius • user_id (int) — unikalus vartotojo identifikatorius, kuris atliko įvykį • campaign_id (int) — unikalus kampanijos identifikatorius • event_type (string) — įvykio tipas, pavyzdžiui, 'click' (paspaudimas) arba 'conversion' (konversija — sėkmingas veiksmas, pavyzdžiui, pirkimas) • event_time (timestamp) — įvykio atlikimo laikas Duomenys nesudaro tarpelio ar klaidingų reikšmių. Išvesties formatas Užklausa turi grąžinti lentelę su laukais tokia tvarka: • campaign_name (string) — reklamos kampanijos pavadinimas • total_events (int) — bendras įvykių skaičius • unique_users (int) — unikalių vartotojų skaičius, kurie atliko įvykius • first_event_time (timestamp) — pirmojo įvykio laikas • last_event_time (timestamp) — paskutinio įvykio laikas • campaign_rank (int) — kampanijos reitingas pagal bendrą įvykių skaičių mažėjimo tvarka Duomenys turi būti surūšiuoti pagal reitingą mažėjimo tvarka, o tada pagal campaign_name abėcėlės tvarka.
Jei norite pakeisti šaką, į kurią nurodo submodulis, ką turite padaryti? - Submoduliai nepalaiko šakų keitimo - Ištrinkite submodulį ir pridėkite jį iš naujo su norima šaka - Pakeiskite šaką submodulyje ir atlikite įsipareigojimą pagrindiniame saugykloje - Paleiskite git checkout norimos šakos submodulyje ir įrašykite pakeitimus pagrindiniame saugykloje - Paleiskite git submodule update --branch nurodydami naują šaką
Kas įvyko ir kaip atkurti darbą?
Kodėl šiuo metu svarstote darbo pasiūlymus?
notifications lentelėje yra status laukas, kurio reikšmės yra: 'sent', 'delivered', 'read'. Kuris užklausa yra teisinga? 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
Kokį operaciją atliko komanda? - Atliko git revert su commit'u, kuriame buvo config.yaml - Atliko git filter-branch --index-filter "git rm --cached config.yaml" -- --all - Atliko git rebase -i, ištrindamas commit'us, kuriuose buvo pakeitimų faile - Atliko git commit --amend ir git push --force - Naudojo git cherry-pick, kad sukurtų naują šaką be config.yaml
PostgreSQL'e, eilutės versijos antraštėje yra xmax parametras. Kokią vaidmenį jis atlieka transakcijų valdyme? - Norint sukurti unikalų eilutės identifikatorių lentelėje - Norint patikrinti kitų transakcijų matomumą eilutės - Norint nurodyti transakcijos numerį, kuris ištrynė arba atnaujino eilutę - Norint užblokuoti eilutę nuo vienu metu atliekamų pakeitimų keliomis transakcijomis - Norint nurodyti maksimalų reikšmę, kuri gali būti įrašyta į skaitmeninį stulpelį
Sukurtas vaizdo nurodytos lentelės struktūra. Reikia vykdyti vaizde nurodytą užklausą. Kokią jungties rūšį reikia naudoti vietoje [...], kad rezultatuose type = 'table_aw' įrašams būtų užpildytas stulpelis 'naming', o type = 'table2' įrašams — stulpelis '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 ); -- lentelių struktūra 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'; -- užklausa Palikite tuščią inner cross right left
Prašome papasakoti, kodėl jus domina ši pozicija.
Fizinio aktyvumo klubų lankomumo analizė Jūs dirbate kaip analitikas fitneso klubų tinkle. Turite informacijos apie naudotojų lankymąsi ir jų įsigytas narystes. Reikia analizuoti narystės efektyvumą. Apskaičiuokite kiekvieno narystės tipo: • bendrą naudotojų skaičių, kurie naudojo šį narystės tipą. Laikykitės tik unikalių user_id; • bendrą lankymų skaičių su šiuo narystės tipu. Laikykite visus naudotojų lankymus su šiuo narystės tipu; • šio narystės tipo naudotojų dalį procentais nuo visų naudotojų skaičiaus (apvalinta iki vieno dešimtojo). Norėdami apskaičiuoti naudotojų dalį, naudokite santykį tarp naudotojų skaičiaus su šiuo narystės tipu ir bendro unikalių naudotojų skaičiaus. Kiekvienas naudotojas gali turėti tik vieną narystę. Rūšiuokite rezultatą pagal narystės tipą abėcėlės tvarka. Įvesties formatas Lentelė memberships: • membership_id (int) — unikalus narystės identifikatorius • user_id (int) — unikalus naudotojo identifikatorius • membership_type (text) — narystės tipas Lentelė visits:
Kuris komandas iš projekto pagrindinio katalogo turėtų būti naudojamas norint atnaujinti submodulį docs/ į naujausią versiją iš nuotolinio saugyklos ir paruošti šią pakeitimą į 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 "Atnaujinimas" git submodule update --init docs/
Kokiuose Scala projektuose dirbote anksčiau? Pasidalinkite konkrečiomis užduotimis ir pasiekimais šioje technologijoje.
Kas įvyko ir kaip grąžinti darbą?
Ką galima pasakyti apie šios užklausos teisingumą? select * from sessions where ended_at is null and status != 'pending';
Jūs turite dvi susijusias lenteles: first_table ir second_table. Norite vykdyti komandą TRUNCATE TABLE second_table CASCADE;, kad ištrintumėte visas eilutes iš second_table ir visus su ja susijusius duomenis. Kokios gali būti šios komandos vykdymo pasekmės? create table first_table ( id integer primary key ); create table second_table ( id serial primary key, first_table_fk integer references first_table(id) ); - second_table_id_seq sekvencija bus nustatyta į pradinę reikšmę. - Bus ištrinti visi įrašai iš first_table, susiję su second_table per išorinį raktą. - Esami indeksai second_table bus ištrinti ir automatiškai atkurti. - Vėlesniuose įterpimuose į second_table, numatytoji reikšmė id gali pradėti nuo netinkamos reikšmės. - Įvyksta klaida, nes komanda CASCADE yra uždrausta lentelėms su išoriniais raktais.
Ataskaita logistikos įmonei Jūs esate logistikos įmonės analitikas, kuris registruoja operacijas sandėliuose. Turite paruošti ataskaitą apie kiekvieno sandėlio efektyvumą. Kiekvienam sandėliui apskaičiuokite: • bendrą operacijų skaičių (count_operations); • bendrą apdorotų prekių kiekį sandėlyje (sum_quantity); • vidutinį operacijos apdorojimo laiką (avg_processing_time), apskaičiuotą tik iš operacijų su nurodytu laiku (ne NULL), suapvalintą iki artimiausio sveiko skaičiaus; • didžiausią ir mažiausią prekių kiekį, apdorotą vienoje operacijoje (max_quantity, min_quantity); • kiekvieno tipo operacijų skaičių («pateikimas», «siuntimas», «perdavimas») atskirose stulpeliuose: supply_operations, shipment_operations, transfer_operations. Filtruokite sandėlius, kurių bendras operacijų skaičius yra daugiau nei 2 ir vidutinis apdorojimo laikas neviršija 60 minučių. Rodyti rezultatą pagal sandėlio ID didėjimo tvarka. Įvesties formatas Operacijų lentelė: • operation_id (int) — unikalus operacijos ID • warehouse_id (int) — sandėlio ID • operation_type (text) — operacijos tipas: «pateikimas», «siuntimas», «perdavimas»