Afanasy aveva lavorato per 2 settimane alla scrittura di un codice in grado di risolvere cruciverba giapponesi con supporto per nove colori, quando durante una riunione di team, un collega gli ha detto che lui stesso poteva gestire il compito più velocemente, e il programma non aveva più senso. Ma Afanasy, essendo ottimista, ha deciso di continuare a praticare questo compito e fare quanto segue — stimare quanto bene il suo collega gestisce i cruciverba. Per questa valutazione, ha scelto un analogo della metrica IoU — il calcolo sarà simile al classico Intersection Over Union, ma per colori. Funziona così: ogni cella corrispondente nell'originale e nella soluzione per colore aggiunge 1 al numeratore, e al denominatore si aggiunge 1 per ogni cella nell'originale e nella soluzione (per le celle corrispondenti, si aggiunge solo una). Successivamente, si effettua una media sul numero di colori nell'immagine originale, arrotondata a due decimali; lo zero non è considerato un colore, quindi la metrica non deve essere calcolata per le celle di questo colore. L'input inizia con una riga contenente il numero di righe n e colonne m (in quest'ordine). Poi seguono 2n righe, contenenti m numeri separati da spazi — le prime n righe si riferiscono al cruciverba inviato, e le successive n — all'immagine originale. Si assume che ogni riga, a partire dalla seconda, contenga esattamente m numeri. Come risposta, stampare un numero arrotondato a due decimali, come negli esempi. Ecco alcuni esempi: 1. Primo esempio [phone] -> 1.0 Spiegazione: il contributo delle celle corrispondenti e non corrispondenti (1.0 + 1.0 + 1.0 + 1.0) / numero di colori (4) 2. Secondo esempio [phone] -> 0.08 Spiegazione: il contributo delle celle corrispondenti e non corrispondenti (0.25 + 0.0 + 0.0) / numero di colori (3); gli zeri non vengono considerati, né come celle nelle rappresentazioni né nel numero di colori. 3. Terzo esempio [phone] dove l'immagine inviata inizia [phone] — dove termina l'immagine inviata 0 1 2 — dove inizia l'immagine originale [phone] -> 0.47 Spiegazione: il contributo delle celle corrispondenti e non corrispondenti (0.4 + 0.5 + 0.5) / numero di colori (3); gli zeri non vengono considerati né come celle nelle rappresentazioni né nel numero di colori. 4. Quarto esempio [phone] -> 0.0 Spiegazione: il contributo delle celle corrispondenti e non corrispondenti (0.0) / numero di colori (1); gli zeri non vengono considerati né come celle nelle rappresentazioni né nel numero di colori.
Data Analyst
Scrivi un codice in Python che calcoli il prodotto scalare di due vettori compressi in RLE in un solo passaggio.
val_a, val_b = 0, 0 t = None mentre i < len(a) o j < len(b): a_next = a[i][0] se i < len(a) altrimenti float('inf') b_next = b[j][0] se j < len(b) altrimenti float('inf') se 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 altrimenti: 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
Qual è l'ordine logico di esecuzione di FROM, JOIN, GROUP BY e SELECT in questa query SQL?
Dove nella vita reale si trova una distribuzione normale e dove no? Fornisci esempi concreti con una spiegazione del motivo per cui i dati sono distribuiti normalmente o meno.
Come raccogliere risposte ground truth per il benchmark sulla geometria?
-- Sulle campagne promozionali inviate agli utenti: -- 2.1 Scrivi una query che mostra il numero di utenti che hanno ricevuto con successo la comunicazione, per ogni campagna. -- 2.2 Modifica la query per mostrare: il numero di utenti che non hanno ricevuto nessuna comunicazione di successo, per ogni campagna. -- 3. È stato aggiunto un campo alla tabella communications: event_timestamp – data e ora dell'evento di consegna della comunicazione nel formato '%Y-%m-%d %H:%M:%S'. -- Per tutte le campagne, incluse quelle non avviate, calcola la metrica: la proporzione di utenti per i quali la consegna del messaggio di successo è avvenuta al primo tentativo. -- È possibile usare funzioni di finestra o meno, ma è importante che la query sia ottimizzata.
Pseudocodice 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
Spiega la logica della soluzione del problema sum_series: come costruire la somma di due serie temporali a gradini?
Elenca chiaramente i criteri che devono essere soddisfatti affinché i dati abbiano una distribuzione normale.
Come configureresti un test A/B per verificare un nuovo algoritmo di ricerca? Come determinare la dimensione del campione necessaria e la durata del test?
B. Prefissi e Suffixes Dato un array ordinato di n zeri. Ad ogni passo, puoi scegliere un numero arbitrario dei primi o ultimi elementi di questo array, e aggiungere uno a tutti gli elementi selezionati. È possibile raggiungere lo stato specificato dell'array dopo un certo numero di tali operazioni? Formato di input La prima riga contiene un intero 1 ≤ n ≤ 100000 — il numero di elementi nell'array. La seconda riga contiene n numeri interi non negativi a1, a2, ..., an separati da spazi, dove ai ≤ 10^18 — gli elementi finali desiderati. Formato di output Stampa "YES" se tale stato è raggiungibile, e "NO" se non lo è. Esempio Input [phone] Output YES Nota Gli stati [phone] possono essere raggiunti come segue: aggiungi uno ai primi tre elementi, ottenendo [phone] aggiungi uno agli ultimi quattro elementi, ottenendo [phone] aggiungi uno all'ultimo elemento, ottenendo [phone]
-- I marketer avviano campagne promozionali nell'app del servizio. Ci sono due tabelle: -- campaigns – elenco delle campagne -- - campaign – nome della campagna -- - action_type – tipo di campagna: "push" o "banner" -- communications – log del backend con le comunicazioni di queste campagne agli utenti -- - user_id – identificativo utente -- - campaign – nome della campagna -- - status – stato dell'evento: "success" o "error" --------------------------------------------------------------------------- -- 1. Inizialmente, nella tabella campaigns ci sono 4 righe: -- | campaign | action_type | -- |-------------|-------------| -- | promo_dogs | push | <- duplicato casualmente -- | promo_cats | banner | -- | promo_cats | banner | <- due righe -- | promo_rats | push | -- È anche noto che: -- le campagne promo_dogs e promo_cats sono state completate con successo su 100 utenti e ogni utente ha ricevuto una comunicazione, -- mentre promo_rats è ancora in fase di pianificazione. -- 1.1 Cosa mostrerà la query: 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 Come cambierà la risposta se si cambia il tipo di JOIN in LEFT?
Pseudo codice 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
Hai domande per l'intervistatore?
Cos'è un benchmark e come valuteresti la qualità di un modello multimodale?
La redditività delle azioni [nome] sarà distribuita normalmente? (Incrementi di prezzo minuto per minuto durante tutta la storia delle negoziazioni dal 2000 al 2026)
-- La tabella campaigns è stata sistemata: sono stati rimossi i duplicati, aggiunta una chiave (PK). -- Sono state eseguite più campagne, a causa di bug alcuni utenti hanno iniziato a ricevere tentativi di consegna delle comunicazioni falliti, e alcuni non sono riusciti a mostrare nulla. -- Per le campagne promozionali inviate agli utenti: -- 2.1 Scrivi una query che mostra il numero di utenti che hanno ricevuto con successo la comunicazione, per ogni campagna. -- 2.2 Modifica la query per mostrare: il numero di utenti che non hanno ricevuto nessuna comunicazione di successo, per ogni campagna. -- 3. È stato aggiunto un campo alla tabella communications – event_timestamp – data e ora dell'evento di consegna della comunicazione in formato '%Y-%m-%d %H:%M:%S'. -- Per tutte le campagne, incluse quelle non avviate, calcola la metrica: la proporzione di utenti per i quali la consegna del messaggio di successo è avvenuta al primo tentativo. -- È possibile usare funzioni di finestra, o farlo senza, ma è importante che la query sia ottimizzata.
Come si chiama l'operatore di ordinamento in SQL e quando viene eseguito? Dove si trova LIMIT nell'ordine di esecuzione?
D. Fuochi d'artificio cinesi Vladimir ha acquistato un set di 3 fuochi d'artificio cinesi. Sono esattamente uguali e sono mescolati in una scatola, ma secondo le istruzioni, hanno affidabilità diverse: 1. "Elite" — tasso di difetto del 10% (probabilità di successo 0.9). 2. "Standard" — tasso di difetto del 20% (probabilità di successo 0.8). 3. "Economy" — tasso di difetto del 40% (probabilità di successo 0.6). Vladimir prende casualmente il primo fuoco d'artificio, lo accende, e funziona con successo. Felice, Vladimir decide di lanciare gli altri due fuochi uno dopo l'altro. Qual è la probabilità che anche il secondo e il terzo fuoco funzionino con successo — senza difetti? Arrotonda la risposta a tre decimali.