Cum ai crea un benchmark pentru geometrie? Descrie lanțul de la idee până la setul de date final.
Data Analyst
Afanasy timp de 2 săptămâni a lucrat la scrierea unui cod capabil să rezolve cuvinte încrucișate japoneze cu suport pentru nouă culori, când la o întâlnire de echipă, un coleg i-a spus că poate să se ocupe mai repede de sarcină singur, și programul nu mai avea sens. Dar Afanasy, fiind optimist, a decis să continue să exerseze această sarcină și să facă următoarele — să estimeze cât de bine se descurcă colegul său cu cuvintele încrucișate. Pentru această evaluare, a ales un analog al metricii IoU — calculul va fi similar cu cel clasic Intersection Over Union, dar după culori. Funcționează astfel: fiecare celulă care se potrivește în original și în soluție după culoare adaugă 1 la numărător, iar în numitor, 1 se adaugă pentru fiecare celulă din original și din soluție (pentru celulele care se potrivesc, se adaugă doar una). După aceea, se face o medie pe numărul de culori din imaginea originală, rotunjită la două zecimale; zero nu este considerat o culoare, așa că metrica nu trebuie calculată pentru celulele acestei culori. Intrarea începe cu o linie care conține numărul de rânduri n și coloane m (în această ordine). Apoi urmează 2n linii, conținând m numere separate prin spații — primele n linii se referă la cuvântul încrucișat trimis, iar următoarele n — la imaginea originală. Se presupune că fiecare linie, începând cu a doua, conține exact m numere. Ca răspuns, afișați un număr rotunjit la două zecimale, ca în exemple. Iată câteva exemple: 1. Primul exemplu [phone] -> 1.0 Explicație: contribuția celulelor care se potrivesc și cele care nu se potrivesc (1.0 + 1.0 + 1.0 + 1.0) / numărul de culori (4) 2. Al doilea exemplu [phone] -> 0.08 Explicație: contribuția celulelor care se potrivesc și cele care nu se potrivesc (0.25 + 0.0 + 0.0) / numărul de culori (3); zerourile nu sunt luate în considerare, nici ca celule în reprezentări, nici în numărul de culori. 3. Al treilea exemplu [phone] unde imaginea trimisă începe [phone] — unde se termină imaginea trimisă 0 1 2 — unde începe imaginea originală [phone] -> 0.47 Explicație: contribuția celulelor care se potrivesc și cele care nu se potrivesc (0.4 + 0.5 + 0.5) / numărul de culori (3); zerourile nu sunt luate în considerare, nici ca celule în reprezentări, nici în numărul de culori. 4. Al patrulea exemplu [phone] -> 0.0 Explicație: contribuția celulelor care se potrivesc și cele care nu se potrivesc (0.0) / numărul de culori (1); zerourile nu sunt luate în considerare, nici ca celule în reprezentări, nici în numărul de culori.
Scrieți un cod în Python care calculează produsul scalar al doi vectori comprimați RLE într-o singură trecere.
val_a, val_b = 0, 0 t = None atunci când i < len(a) sau j < len(b): a_next = a[i][0] dacă i < len(a) altfel float('inf') b_next = b[j][0] dacă j < len(b) altfel float('inf') dacă 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 altfel: 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
Explica logica rezolvării problemei sum_series: cum se construiește suma a două serii temporale în trepte?
Care este ordinea logică de executare a FROM, JOIN, GROUP BY și SELECT în această interogare SQL?
Pseudo cod 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
Cum se numește operatorul de sortare în SQL și când se execută? Unde se află LIMIT în ordinea de execuție?
Cum ai configura un test A/B pentru a verifica un nou algoritm de căutare? Cum determini dimensiunea necesară a eșantionului și durata testului?
Cum se colectează răspunsurile ground truth pentru benchmark-ul de geometrie?
B. Prefixe și Suffixe Dat un array sortat de n zerouri. La fiecare pas, poți alege un număr arbitrar de elemente din primele sau ultimele ale acestui array și adaugi unu la toate elementele selectate. Este posibil să atingi starea specificată a array-ului după un anumit număr de astfel de operații? Format de intrare Prima linie conține un număr întreg 1 ≤ n ≤ 100000 — numărul de elemente din array. A doua linie conține n numere întregi nenegative a1, a2, ..., an separate prin spații, unde ai ≤ 10^18 — elementele finale dorite. Format de ieșire Tipărește "YES" dacă o astfel de stare este realizabilă, și "NO" dacă nu este. Exemplu Intrare [phone] Ieșire YES Notă Stările [phone] pot fi atinse după cum urmează: adăugând unu la primele trei elemente, rezultând în [phone] adăugând unu la ultimele patru elemente, rezultând în [phone] adăugând unu la ultimul element, rezultând în [phone]
-- Despre campaniile promo trimise utilizatorilor: -- 2.1 Scrieți o interogare care afișează numărul de utilizatori care au primit cu succes comunicarea, pentru fiecare campanie. -- 2.2 Modificați interogarea pentru a afișa: numărul de utilizatori care nu au primit în cele din urmă nicio comunicare de succes, pentru fiecare campanie. -- 3. A fost adăugat un câmp suplimentar în tabelul communications – event_timestamp – data și ora evenimentului de livrare a comunicării în formatul '%Y-%m-%d %H:%M:%S'. -- Pentru toate campaniile, inclusiv cele ne lansate, calculați metricile: proporția utilizatorilor pentru care livrarea mesajului de succes s-a realizat din prima încercare. -- Se pot folosi funcții de fereastră sau nu, dar este important ca interogarea să fie optimă.
Enumerați clar criteriile care trebuie îndeplinite pentru ca datele să aibă o distribuție normală.
Aveți întrebări pentru intervievator?
Pseudo-cod 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
Ce este un benchmark și cum ai evalua calitatea unui model multimodal?
-- Specialiști în marketing lansează campanii promoționale în aplicația serviciului. Există două tabele: -- campaigns – lista campaniilor -- - campaign – numele campaniei -- - action_type – tipul campaniei: "push" sau "banner" -- communications – jurnalul backend cu trimiterile de comunicări ale acestor campanii către utilizatori -- - user_id – identificatorul utilizatorului -- - campaign – numele campaniei -- - status – statutul evenimentului: "success" sau "error" --------------------------------------------------------------------------- -- 1. Inițial, în tabelul campaigns există 4 rânduri: -- | campaign | action_type | -- |-------------|-------------| -- | promo_dogs | push | <- duplicat aleatoriu -- | promo_cats | banner | -- | promo_cats | banner | <- două rânduri -- | promo_rats | push | -- Se știe, de asemenea, că: -- campaniile promo_dogs și promo_cats au fost finalizate cu succes pentru 100 de utilizatori, iar fiecare utilizator a primit o comunicare, -- iar promo_rats este doar în planificare. -- 1.1 Ce va afișa interogarea: 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 Cum se va schimba răspunsul dacă se schimbă tipul de JOIN în LEFT?
Rentabilitatea acțiunilor [nume] va fi distribuită normal? (Creșteri de preț pe minut pe întreaga istorie a tranzacțiilor din 2000 până în 2026)
-- Tabelul campaigns a fost reparat: s-au eliminat duplicatele, s-a adăugat o cheie (PK). -- S-au realizat mai multe campanii, din cauza bug-urilor, utilizatorii au început să aibă tentative nereușite de livrare a comunicărilor, iar unora nu li s-a reușit deloc să fie afișate. -- În ceea ce privește campaniile promoționale trimise utilizatorilor: -- 2.1 Scrieți o interogare care afișează numărul de utilizatori care au primit cu succes comunicarea, pentru fiecare campanie. -- 2.2 Modificați interogarea pentru a afișa: numărul de utilizatori care nu au primit nicio comunicare de succes, pentru fiecare campanie. -- 3. S-a adăugat un câmp suplimentar în tabelul communications – event_timestamp – data și ora evenimentului de livrare a comunicării în formatul '%Y-%m-%d %H:%M:%S'. -- Pentru toate campaniile, inclusiv cele neîncepute, calculați metrica: proporția utilizatorilor pentru care livrarea mesajului de succes s-a realizat din prima încercare. -- Se pot folosi funcții de fereastră, sau fără, dar este important ca interogarea să fie optimă.
D. Focuri de artificii chinezești Vladimir a cumpărat un set de 3 focuri de artificii chinezești. Arată exact la fel și sunt amestecate într-o cutie, dar conform instrucțiunilor, au fiabilități diferite: 1. "Elită" — rată de defect 10% (probabilitatea de succes 0.9). 2. "Standard" — rată de defect 20% (probabilitatea de succes 0.8). 3. "Econom" — rată de defect 40% (probabilitatea de succes 0.6). Vladimir ia aleator primul foc de artificii, îl aprinde, și acesta funcționează cu succes. Fericit, Vladimir decide să lanseze celelalte două focuri de artificii unul după altul. Care este probabilitatea ca și al doilea și al treilea foc de artificii să funcționeze cu succes — fără defect? Rotunjiți răspunsul la trei zecimale.