Ako bi ustvaril benchmark za geometrijo? Opisati verigo od ideje do končnega nabor podatkov.
Data Analyst
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.
Vysvetlite logiku riešenia úlohy sum_series: ako zostaviť súčet dvoch stupňovitých časových radov?
Ako sa volá operátor zoradenia v SQL a kedy sa vykonáva? Kde je LIMIT v poradí vykonávania?
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.
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
Napíšte kód v Pythone, ktorý vypočíta skalárny súčin dvoch RLE-komprimovaných vektorov v jednom prechode.
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
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]
Ako zbierať ground truth odpovede pre benchmark v geometrii?
Ako by si nastavila/testoval A/B test na preverbo novega algoritma iskanja? Kako določiti potrebno velikost vzorca in trajanje testa?
-- 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ý.
Jasne uveďte kritériá, ktoré musia byť splnené, aby dáta mali normálne rozdelenie.
Máte otázky pre interviewéra?
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
Čo je to benchmark a ako by ste hodnotili kvalitu multimodálneho modelu?
-- 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?
Bude výnos akcií [meno] normálne rozdelený? (Minútové nárasty cien počas celej obchodnej histórie od roku 2000 do 2026)
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.
-- 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á.