Golang
Parlami della progettazione del sistema di moderazione/orchestratore — come è stato progettato, quali decisioni sono state prese?
Quale strategia di caching scegliere — cache-aside o write-through — considerando il pattern di comportamento degli utenti durante la verifica dello stato dell'ordine?
Quali regole di lavoro con i canali bisogna conoscere durante lo sviluppo (chiuso, aperto, quando cosa si può fare)?
Scrivere un problema in linguaggio Go — sezione pratica (problemi della vita reale dello sviluppatore, senza algoritmi): migliorare o correggere un servizio. Durata — 1,5 ore.
Cosa fare se gli utenti si lamentano del cambiamento nel modello di monetizzazione, ma l'azienda ha un piano chiaro?
Codifica dal vivo: semaforo — come funziona e implementazione basata su un canale con buffer.
Quale metodologia utilizzi: Scrum, Kanban o una miscela?
Qual è la limitazione di un semaforo e di un canale con buffer come soluzioni per limitare le richieste parallele?
Hai già sentito parlare di [azienda] o dei nostri prodotti?
Cosa sono le stime?
Con cosa non vorresti più confrontarti al lavoro?
Qual è il tuo livello: middle, middle+, senior?
Analisi del codice in Go: cosa fa il codice, quali problemi ci sono?
A quale gruppo (mutabile/immutabile) appartiene l'interfaccia in Go?
Cosa sono i token di autorizzazione e quali ci sono?
Qual è la differenza tra database relazionali e NoSQL?
Progettazione di un sistema di messaggistica scalabile che supporti 150 milioni di utenti, 75 milioni di DAU, 225 milioni di MAU, 1,2 milioni di QPS di lettura / 300k di scrittura in picco, 5 milioni di utenti simultanei, 60 PB di nuovi dati all'anno, crescita del 30% annuo, SLA del 99,95%, p99 <200 ms per la lettura, <300 ms per la scrittura. CONTESTO È necessario progettare un sistema di messaggistica distribuito, simile a WhatsApp, che supporti chat 1:1 e di gruppo, garantisca la consegna dei messaggi, mostri gli stati online degli utenti e consenta il trasferimento di file multimediali (foto, video, audio). Il sistema deve garantire alta disponibilità e bassa latenza, supportare un alto parallelismo e scalare a livello globale. REQUISITI FUNZIONALI - Supporto per chat personali (1:1) e di gruppo con possibilità di aggiungere/rimuovere partecipanti - Invio e ricezione di messaggi di testo e file multimediali Non si vede una implementazione chiara del meccanismo di crittografia end-to-end a livello di servizi o clienti, a parte una annotazione generale. - Mancanza di una descrizione esplicita di sharding e replica dei database per chat_id o user_id per scalabilità e tolleranza ai guasti. - Non c'è un componente o meccanismo chiaro per gestire la sincronizzazione offline dei messaggi e delle ricevute di consegna. - Non è chiaro come venga effettuato il bilanciamento del carico tra database e servizi, specialmente in caso di picchi di carico. **Punti critici da considerare:**
Elenca lo stack principale in Go
Hai mai dovuto registrare le ore, tracciare il tempo in qualche sistema?
""" I posti al cinema sono disposti in una fila. Un spettatore appena arrivato sceglie un posto, per sedersi il più lontano possibile dagli altri spettatori nella fila. Cioè, la distanza dal posto, dove si siederà, al più vicino spettatore deve essere massima. Si garantisce che ci siano sempre posti liberi nella fila e che ci sia almeno uno spettatore seduto. Scrivi una funzione che, data una fila di posti (un array di zeri e uno), restituisca la distanza (numero di spazi tra i sedili) dal posto scelto allo spettatore più vicino. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 [0, 0, 0, 1] [1, 0, 0, 0] place = ((right - left) / 2) """ func maxPlaces(arr []int) int { }