In quali fasi del processo di colloquio in diverse organizzazioni viene spesso posta questa domanda?
Golang
Qual è stato il progetto di database più grande che hai dovuto realizzare o mantenere?
Come vengono eseguite le query al database PostgreSQL?
Puoi spiegare il principio di funzionamento di gRPC e le sue caratteristiche principali?
In quale strato vengono collocati i clienti per servizi esterni e sistemi?
Quante richieste di scrittura al secondo arrivavano ai dati?
Puoi orientarti sugli host? Quanti host, quanti container vengono avviati?
Su quante istanze/contenitori funzionava il servizio?
Come viene effettuata la connessione e la visualizzazione dei dati in Grafana?
Qual è la tua esperienza nello sviluppo di applicazioni che utilizzano multithreading e calcoli paralleli?
Secondo quale principio si deve diminuire o aumentare il contatore have?
Qual è stato il progetto di durata più lunga a cui hai lavorato?
Stai lavorando ora o no, e in quale formato: ufficio, ibrido, remoto?
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.
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 }
""" 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 """
Come determinare visivamente o algoritmicamente che un elemento è unico nella struttura dati Map?
/* * 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. */
/* 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 }
Come viene determinato il tempo di esecuzione dell'operazione di aggiunta di un elemento per chiave nella struttura dati Map?