Sobes.tech

Golang

In quali fasi del processo di colloquio in diverse organizzazioni viene spesso posta questa domanda?

Intern — Junior
311

Qual è stato il progetto di database più grande che hai dovuto realizzare o mantenere?

Junior — Middle
302

Come vengono eseguite le query al database PostgreSQL?

Junior — Middle
291

In quale strato vengono collocati i clienti per servizi esterni e sistemi?

279

Quante richieste di scrittura al secondo arrivavano ai dati?

272

Puoi orientarti sugli host? Quanti host, quanti container vengono avviati?

268

Su quante istanze/contenitori funzionava il servizio?

259

Come viene effettuata la connessione e la visualizzazione dei dati in Grafana?

Junior — Middle
252

Qual è la tua esperienza nello sviluppo di applicazioni che utilizzano multithreading e calcoli paralleli?

Junior — Middle
248

Secondo quale principio si deve diminuire o aumentare il contatore have?

244

Qual è stato il progetto di durata più lunga a cui hai lavorato?

Junior — Middle
240

Stai lavorando ora o no, e in quale formato: ufficio, ibrido, remoto?

237

Come organizzare l'architettura per una richiesta che esegue la logica di business, chiama un servizio esterno (Google) e salva il risultato nel database? Descrivi a strati dall'alto verso il basso.

233

func maxPlaces(arr []int) int { maxDistance := 0 prev, first := -1, -1 for i := 0; i < len(arr); i++ { if arr[i] == 1 { if first == -1 { first = i maxDistance = max(maxDistance, i) } else { maxDistance = max(maxDistance, (i - prev) / 2) } prev = i } } maxDistance = max(maxDistance, len(arr) - 1 - prev) return maxDistance }

229

""" I posti in sala sono disposti in una fila. Uno spettatore appena arrivato sceglie un posto, per sedersi il più lontano possibile dagli altri spettatori nella fila. Cioè, la distanza da quel posto allo spettatore più vicino deve essere massima. Si garantisce che ci siano sempre posti liberi e che almeno uno spettatore sia già 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 """

226

Come determinare visivamente o algoritmicamente che un elemento è unico nella struttura dati Map?

Junior — Middle
225

/* * Data una serie di numeri interi e un numero X, * è necessario trovare il sottosegmento non vuoto più lungo il cui minimo è X. * Restituisci la lunghezza di tale sottosegmento o -1 se non esistono. */

224

/* Dobbiamo trasferire dati da una fonte a un consumatore. La fonte fornisce i dati in piccoli batch (~decine di record), mentre il consumatore funziona in modo più efficiente con batch più grandi. Un esempio reale è il trasferimento di dati da code di tipo Kafka al database Clickhouse. Fonte: - Quasi infinita. - La fonte non restituisce mai più di MaxItems record in una singola chiamata a Next. - All'interno di una "sessione" (una chiamata alla funzione Pipe), la fonte restituisce nuovi dati ad ogni Next. - Tuttavia, dopo un riavvio, la fonte ricomincerà dalla posizione "confermata" precedente, indicata da cookie. Pertanto, *ogni* valore di cookie restituito da Next, dopo aver salvato i dati nel ricevitore, deve essere confermato con una chiamata a Commit, nello stesso ordine in cui sono stati restituiti da Next. Ricevitore: - Non può elaborare più di MaxItems alla volta. Livello di base: È necessario implementare la funzione func Pipe(p Producer, c Consumer) error che legge i dati dalla fonte, li raggruppa in un buffer di dimensione non superiore a MaxItems e li salva nel ricevitore, e poi conferma il progresso nella fonte. */ const MaxItems = 9999 type Producer interface { // Next restituisce: // - batch di elementi da elaborare // - cookie da confermare al termine dell'elaborazione // - errore Next() (items []any, cookie int, err error) // Commit viene usato per marcare il batch di dati come processato Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { var buf []any var cookies []int for { items, cookie, err := p.Next() if err != nil { return err } buf = append(buf, items...) cookies = append(cookies, cookie) if len(buf) >= MaxItems { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } buf = buf[:0] cookies = nil } } if len(buf) > 0 { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } } return nil }

221

Come viene determinato il tempo di esecuzione dell'operazione di aggiunta di un elemento per chiave nella struttura dati Map?

Junior — Middle
221
/11