Sobes.tech

Data Analyst

Афанасије већ две недеље ради на писању кода који може решавати јапанске сканворде са подршком за девет боја, када му је на следећем састанку колега саопштио да сам може да се носи са задатком брже, и у програму већ нема смисла. Афанасије, као оптимиста, одлучио је да се још посвети овом задатку и уради следеће — да израчуна колико добро колега ради са сканвордима. За ову процену он је изабрао неки аналог метрике IoU — израчунавање ће се одвијати слично као класично Intersection Over Union, али по бојама. Ради овако: сваки поклапајући у оригиналу и решењу по боји ћелија додаје 1 у бројилац, а у именилац се додаје 1 за сваку ту ћелију у оригиналу и решењу (за поклапајуће ћелије додаје се само један јединица). После тога ће се вршити просек по броју боја у оригиналној слици, заокружен на две децимале; нула није боја, зато при рачунању не треба рачунати метрику за ћелије те боје. Улаз у првом реду ће бити дат број редова n и колона m (управо у том реду) садрже изворну слику. Затим следе 2n реда, садрже m бројева раздвојених размаком — први n редова се односе на послато решење сканворда, а следећих n — на изворну слику. Предпоставља се да на сваком реду, почев од другог, има тачно m бројева. Као одговор изађите један број заокружен на две децимале, као у примерима. Ево неколико примера: 1. Први пример [phone] -> 1.0 Објашњење: допринос поклапајућих и непоклапајућих ћелија (1.0 + 1.0 + 1.0 + 1.0) / број боја (4) 2. Други пример [phone] -> 0.08 Објашњење: допринос поклапајућих и непоклапајућих ћелија (0.25 + 0.0 + 0.0) / број боја (3); нуле не рачунамо, ни као ћелије у представљањима, ни у броју боја. 3. Трећи пример [phone] овде почиње послати слици [phone] -- овде се завршава послата слика 0 1 2 -- овде почиње изворна слика [phone] -> 0.47 Објашњење: допринос поклапајућих и непоклапајућих ћелија (0.4 + 0.5 + 0.5) / број боја (3); нуле не рачунамо ни као ћелије у представљањима, ни у броју боја. 4. Четврти пример [phone] -> 0.0 Објашњење: допринос поклапајућих и непоклапајућих ћелија (0.0) / број боја (1); нуле не рачунамо ни као ћелије у представљањима, ни у броју боја.

117

Napišite Python kod koji izračunava skalarni proizvod dva RLE-kompresovana vektora u jednom prolazu.

117

val_a, val_b = 0, 0 t = None mientras i < longitud(a) o j < longitud(b): a_next = a[i][0] si i < longitud(a) sino float('inf') b_next = b[j][0] si j < longitud(b) sino float('inf') si a_next < b_next: val_a = a[i][1] t = a[i][0] i += 1 elif b_next < a_next: val_b = b[j][1] t = b[j][0] j += 1 más: val_a = a[i][1] val_b = b[j][1] t = a[i][0] i += 1 j += 1 result.append((t, val_a + val_b)) return result

115

Koji je logički red izvršavanja FROM, JOIN, GROUP BY i SELECT u ovom SQL upitu?

114

Gde u stvarnom životu postoji normalna raspodela, a gde ne? Dajte konkretne primere sa objašnjenjem zašto su podaci normalno raspoređeni ili nisu.

114

Kako prikupiti ground truth odgovore za benchmark u geometriji?

113

-- О промоцијским кампањама послатим корисницима: -- 2.1 Напишите упит који приказује број корисника који су успешно примили комуникацију, за сваку кампању. -- 2.2 Измените упит да прикаже: број корисника који укупно нису добили ни једну успешну комуникацију, за сваку кампању. -- 3. У табели communications додато је још једно поље – event_timestamp – датум и време догађаја доставе комуникације у формату '%Y-%m-%d %H:%M:%S'. -- За све кампање, укључујући и оне које нису покренуте, израчунајте метрику: однос корисника за које је успешна испорука поруке извршена од првог покушаја. -- Могу се користити оконечне функције или не, али је важно да упит буде оптималан.

112

Псеудокод sum_series(a={{1, 2}, {5, 1}}, b={{2, 4}, {3, 6}, {9, 7}}) -> {{1, 2}, {2, 6}, {3, 8}, {5, 7}, {9, 8}} def sum_series(a, b): result = [] i , j = 0, 0 val_a, val_b = 0, 0 while i < len(a) or j < len(b): a_next = a[i][0] if i < len(a) else float('inf') b_next = b[j][0] if j < len(b) else float('inf') if a_next <= b_next: val_a = a[i][1] t = a[i][0] i += 1 else: val_b = b[j][1] t = b[j][0] j += 1 result.append((t, val_a + val_b)) return result

111

Објасните логик у решавању задатка sum_series: како изградити збир два коракна временска низа?

111

Јасно наведите критеријуме који морају бити испуњени да би подаци имали нормално расподелу.

109

Kako bi podesio/la A/B test za proveru novog algoritma pretraživanja? Kako odrediti potrebnu veličinu uzorka i trajanje testa?

109

B. Prefiksi i Sufiksi Dat je sortirani niz od n nula. U svakom koraku, možete odabrati proizvoljan broj prvih ili poslednjih elemenata ovog niza i dodati jedan svim odabranim elementima. Da li je moguće dostići zadano stanje niza nakon određenog broja takvih operacija? Format unosa Prvi red sadrži ceo broj 1 ≤ n ≤ 100000 — broj elemenata u nizu. Drugi red sadrži n nula ili pozitivnih celih brojeva a1, a2, ..., an odvojene razmakom, gde ai ≤ 10^18 — željeni završni elementi. Format izlaza Odštampajte "YES" ako je takvo stanje dostižno, i "NO" ako nije. Primer Ulaz [phone] Izlaz YES Napomena Stanja [phone] mogu se postići na sledeći način: dodavanjem jedan na prva tri elementa, dobijamo [phone] dodavanjem jedan na poslednja četiri elementa, dobijamo [phone] dodavanjem jedan na poslednji element, dobijamo [phone]

104

-- Маркетиншки стручњаци покрећу промоције кампања у апликацији сервиса. Постоје две табеле: -- campaigns – листа кампања -- - campaign – назив кампање -- - action_type – тип кампање: "push" или "banner" -- communications – лог бекенда са слањем комуникација ових кампања корисницима -- - user_id – идентификатор корисника -- - campaign – назив кампање -- - status – статус догађаја: "success" или "error" --------------------------------------------------------------------------- -- 1. Изначално, у табели campaigns постоје 4 реда: -- | campaign | action_type | -- |-------------|-------------| -- | promo_dogs | push | <- случајно дуплирано -- | promo_cats | banner | -- | promo_cats | banner | <- два реда -- | promo_rats | push | -- Такође је познато да: -- кампање promo_dogs и promo_cats су успешно спроведене на 100 корисника и сваки корисник је добио по једну комуникацију, -- а promo_rats је тек у фази планирања. -- 1.1 Шта ће приказати упит: SELECT campaign, COUNT(*) as rows, COUNT(DISTINCT co.user_id) AS users FROM campaigns AS ca INNER JOIN communications AS co ON ca.campaign = co.campaign GROUP BY ca.campaign AS campaign -- 1.2 Како ће се променити одговор ако се промени тип JOIN на LEFT?

103

Псеудокод sum_series(a={{1, 2}, {5, 1}}, b={{2, 4}, {3, 6}, {9, 7}}) -> {{1, 2}, {2, 6}, {3, 8}, {5, 7}, {9, 8}} def sum_series(a, b): result = [] i , j = 0, 0 val_a, val_b = 0, 0 while i < len(a) or j < len(b): a_next = a[i][0] if i < len(a) else float('inf') b_next = b[j][0] if j < len(b) else float('inf') if a_next < b_next: val_a = a[i][1] t = a[i][0] i += 1 else: val_b = b[j][1] t = b[j][0] j += 1 result.append((t, val_a + val_b)) return result

102

Да ли имате питања за интервјуирача?

102

Šta je benchmark i kako bi ocenio kvalitet multimodalnog modela?

94

Да ли ће се принос акција [име] расподелити нормално? (Минутни пораст цена током целе трговачке историје од 2000 до 2026)

94

-- Таблица campaigns je popravljena: uklonjeni su duplikati, dodan je ključ (PK). -- Više kampanja je sprovedeno, zbog bagova korisnici su počeli da dobijaju neuspešne pokušaje dostave komunikacija, a nekima ni nisu prikazane. -- O promocijama poslatim korisnicima: -- 2.1 Napišite upit koji prikazuje broj korisnika koji su uspešno primili komunikaciju, za svaku kampanju. -- 2.2 Izmenite upit da prikaže: broj korisnika koji nisu primili nijednu uspešnu komunikaciju, za svaku kampanju. -- U tabelu communications je dodat još jedno polje – event_timestamp – datum i vreme događaja dostave komunikacije u formatu '%Y-%m-%d %H:%M:%S'. -- Za sve kampanje, uključujući one koje nisu pokrenute, izračunajte metriku: udeo korisnika za koje je dostava uspešne poruke izvršena od prvog pokušaja. -- Mogu se koristiti funkcije prozora, ili bez njih, ali je važno da je upit optimalan.

91

Kako se zove operator sortiranja u SQL i kada se izvršava? Gde se nalazi LIMIT u redosledu izvršavanja?

89

D. Kineski vatrometi Vladimir je kupio set od 3 kineska vatrometa. Izgledaju potpuno isto i pomešani su u kutiji, ali prema uputstvu, imaju različitu pouzdanost: 1. "Elitni" — procenat defekata 10% (verovatnoća uspeha 0.9). 2. "Standard" — procenat defekata 20% (verovatnoća uspeha 0.8). 3. "Ekonom" — procenat defekata 40% (verovatnoća uspeha 0.6). Vladimir nasumično uzima prvi vatromet, pali ga, i on uspešno funkcioniše. Srećan, Vladimir odlučuje da pokrene preostala dva jedan za drugim. Kolika je verovatnoća da i drugi i treći vatromet takođe uspešno funkcionišu — bez defekta? Zaokružite odgovor na tri decimale.

86
/3