Sobes.tech

Data Analyst

Ako bi ustvaril benchmark za geometrijo? Opisati verigo od ideje do končnega nabor podatkov.

126

Kde v reálnom živote sa stretávame s normálnym rozdelením a kde nie? Uveďte konkrétne príklady s vysvetlením, prečo sú údaje normálne rozdelené alebo nie.

126

Vysvetlite logiku riešenia úlohy sum_series: ako zostaviť súčet dvoch stupňovitých časových radov?

123

Ako sa volá operátor zoradenia v SQL a kedy sa vykonáva? Kde je LIMIT v poradí vykonávania?

123

Afanasy už dva týždne pracoval na písaní kódu, ktorý dokáže riešiť japonské krížovky s podporou deviatich farieb, keď mu na ďalšom stretnutí kolega oznámil, že je schopný sám zvládnuť úlohu rýchlejšie, a v programe už nemá zmysel. Ale Afanasy, ako optimista, sa rozhodol venovať tejto úlohe ešte viac času a urobiť nasledovné — spočítať, ako dobre si kolega poradí s krížovkami. Pre toto hodnotenie si zvolil akýsi ekvivalent metriky IoU — výpočet bude prebiehať podobne ako klasické Intersection Over Union, ale podľa farieb. Pracuje to podľa plánu takto: každé zhodné políčko v origináli a riešení podľa farby bunky pridá 1 do čitateľa, a do menovateľa sa pridá 1 za každé takéto políčko v origináli aj v riešení (za zhodné bunky sa pridá len jedna jednotka). Potom bude prebiehať priemerné hodnotenie podľa počtu farieb v originálnej obrázku, zaokrúhlené na dve desatinné miesta; nula nie je farbou, preto pri výpočte nestojí za to počítať metriku pre políčka tejto farby. Na vstupe bude na prvom riadku zadané, koľko riadkov n a stĺpcov m (presne v tomto poradí) obsahuje pôvodná obrázok. Následne nasleduje 2n riadkov, obsahujúcich m čísel oddelených medzerou — prvé n riadkov sa týkajú odoslaného riešenia krížovky, a nasledujúcich n — pôvodného obrázka. Predpokladá sa, že na každom riadku, začínajúc od druhého, je presne m čísel. Ako odpoveď vypíšte jedno číslo zaokrúhlené na dve desatinné miesta, ako v príkladoch. Tu je niekoľko príkladov: 1. Prvý príklad [phone] -> 1.0 Vysvetlenie: príspevok zhodných a nezhodných buniek (1.0 + 1.0 + 1.0 + 1.0) / počet farieb (4) 2. Druhý príklad [phone] -> 0.08 Vysvetlenie: príspevok zhodných a nezhodných buniek (0.25 + 0.0 + 0.0) / počet farieb (3); nuly nepočítame, ani ako bunky v reprezentáciách, ani v počte farieb. 3. Tretí príklad [phone] tu začína odoslané obrázok [phone] -- tu končí odoslané obrázok 0 1 2 -- tu začína pôvodný obrázok [phone] -> 0.47 Vysvetlenie: príspevok zhodných a nezhodných buniek (0.4 + 0.5 + 0.5) / počet farieb (3); nuly nepočítame ani ako bunky v reprezentáciách, ani v počte farieb. 4. Štvrtý príklad [phone] -> 0.0 Vysvetlenie: príspevok zhodných a nezhodných buniek (0.0) / počet farieb (1); nuly nepočítame ani ako bunky v reprezentáciách, ani v počte farieb.

123

val_a, val_b = 0, 0 t = None kým i < dĺžka(a) alebo j < dĺžka(b): a_next = a[i][0] ak i < dĺžka(a) inak float('inf') b_next = b[j][0] ak j < dĺžka(b) inak float('inf') ak 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 inak: 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

123

Napíšte kód v Pythone, ktorý vypočíta skalárny súčin dvoch RLE-komprimovaných vektorov v jednom prechode.

123

Pseudokód 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

121

B. Predpone a Prípony Dá sa zoradený poľa n núl. Pri každom kroku môžete vybrať ľubovoľný počet prvých alebo posledných prvkov tohto poľa a pridať jednotku ku všetkým vybraným prvkom. Je možné dosiahnuť požadovaný stav po určitom počte takýchto operácií? Formát vstupu Prvý riadok obsahuje celé číslo 1 ≤ n ≤ 100000 — počet prvkov poľa. Druhý riadok obsahuje n nenegatívnych celých čísel a1, a2, ..., an oddelených medzerou, kde ai ≤ 10^18 — požadované konečné prvky. Formát výstupu Vytlačte "YES", ak je takýto stav dosiahnuteľný, a "NO" ak nie je. Príklad Vstup [phone] Výstup YES Poznámka Stavy [phone] je možné dosiahnuť nasledovne: pridaním jednotky k prvým trom prvkom, čím získame [phone] pridaním jednotky k posledným štyrom prvkom, čím získame [phone] pridaním jednotky k poslednému prvku, čím získame [phone]

116

Ako zbierať ground truth odpovede pre benchmark v geometrii?

116

Ako by si nastavila/testoval A/B test na preverbo novega algoritma iskanja? Kako določiti potrebno velikost vzorca in trajanje testa?

115

-- O promo kampaniach odoslaných používateľom: -- 2.1 Napíšte dotaz, ktorý zobrazí počet používateľov, ktorí úspešne dostali komunikáciu, pre každú kampaň. -- 2.2 Upravte dotaz tak, aby zobrazoval: počet používateľov, ktorí nakoniec nedostali žiadnu úspešnú komunikáciu, pre každú kampaň. -- 3. Do tabuľky communications bol pridaný ďalší stĺpec – event_timestamp – dátum a čas udalosti doručenia komunikácie vo formáte '%Y-%m-%d %H:%M:%S'. -- Pre všetky kampane, vrátane tých nezačatých, vypočítajte metriku: podiel používateľov, u ktorých bola úspešná doručenie správy vykonaná na prvý pokus. -- Môžu sa použiť okienkové funkcie alebo nie, ale je dôležité, aby bol dotaz optimalizovaný.

113

Jasne uveďte kritériá, ktoré musia byť splnené, aby dáta mali normálne rozdelenie.

111

Pseudokód 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

108

Čo je to benchmark a ako by ste hodnotili kvalitu multimodálneho modelu?

107

-- Marketéri spúšťajú promočné kampane v aplikácii služby. Existujú dve tabuľky: -- campaigns – zoznam kampaní -- - campaign – názov kampane -- - action_type – typ kampane: "push" alebo "banner" -- communications – log backendu s odosielaním komunikácií týchto kampaní používateľom -- - user_id – identifikátor používateľa -- - campaign – názov kampane -- - status – stav udalosti: "success" alebo "error" --------------------------------------------------------------------------- -- 1. Na začiatku, v tabuľke campaigns sú 4 riadky: -- | campaign | action_type | -- |-------------|-------------| -- | promo_dogs | push | <- náhodne duplikované -- | promo_cats | banner | -- | promo_cats | banner | <- dva riadky -- | promo_rats | push | -- Je tiež známe, že: -- kampane promo_dogs a promo_cats boli úspešne realizované u 100 používateľov a každý používateľ dostal jednu komunikáciu, -- a promo_rats je ešte v plánovaní. -- 1.1 Čo ukáže dotaz: 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 Ako sa zmení odpoveď, ak sa typ JOIN zmení na LEFT?

107

Bude výnos akcií [meno] normálne rozdelený? (Minútové nárasty cien počas celej obchodnej histórie od roku 2000 do 2026)

101

D. Čínsky ohňostroj Vladimir kúpil sadu 3 čínskych ohňostrojov. Vyzerajú úplne rovnako a sú zmiešané v krabici, ale podľa návodu majú rôznu spoľahlivosť: 1. "Elitný" — miera závad 10% (pravdepodobnosť úspechu 0.9). 2. "Štandardný" — miera závad 20% (pravdepodobnosť úspechu 0.8). 3. "Ekonomický" — miera závad 40% (pravdepodobnosť úspechu 0.6). Vladimir náhodne vyberie prvý ohňostroj, zapáli ho, a ten úspešne vystrelí. Šťastný Vladimir sa rozhodne spustiť zvyšné dva jeden po druhom. Aká je pravdepodobnosť, že aj druhý a tretí ohňostroj budú úspešne vystrelené — bez vady? Zaokrúhlite odpoveď na tri desatinné miesta.

99

-- Tabuľka campaigns bola opravená: odstránené duplikáty, pridaný kľúč (PK). -- Bolo vykonaných viac kampaní, kvôli chybám začali používatelia zaznamenávať neúspešné pokusy o doručenie komunikácií, a niektoré sa vôbec nezobrazili. -- O promo kampaniach odoslaných používateľom: -- 2.1 Napíšte dotaz, ktorý ukáže počet používateľov, ktorí úspešne dostali komunikáciu, pre každú kampaň. -- 2.2 Upravte dotaz tak, aby zobrazoval: počet používateľov, ktorí nakoniec nedostali žiadnu úspešnú komunikáciu, pre každú kampaň. -- Do tabuľky communications bol pridaný ďalší stĺpec – event_timestamp – dátum a čas udalosti doručenia komunikácie vo formáte '%Y-%m-%d %H:%M:%S'. -- Pre všetky kampane, vrátane tých nezačatých, vypočítajte metriku: podiel používateľov, u ktorých bola úspešná doručenie správy vykonaná na prvý pokus. -- Môžu sa použiť okienkové funkcie, alebo bez nich, ale je dôležité, aby bola otázka optimalizovaná.

99
/3