Sobes.tech

Golang

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

246

Quali linguaggi di programmazione usi oltre a Go?

246

/* 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 }

242

Quali indicatori di performance hai utilizzato per valutare il tuo lavoro nell'ultimo progetto?

Junior — Middle
242

func countSubs(s string) int { result := 0 left := 0 hm := make(map[rune]int) n := len(s) for right := 0; right < n; right++ { hm[s[right]]++ for hm[s[right]] > 1 { hm[s[left]]-- if hm[s[left]] == 0 { delete(hm, s[left]) } left++ } result += (right - left + 1) } return result }

240

Qual è la tua esperienza nell'implementazione e configurazione di sistemi di autenticazione e autorizzazione?

Junior — Middle
240

Qual è la differenza tra un bilanciatore di carico L4 e uno L7?

239

""" 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 { }

239

""" 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 """

238

/* * 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. */

236

Quale progetto scegliere per un colloquio tecnico e come descriverlo?

234

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

Junior — Middle
233

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

Junior — Middle
231

Quale livello di richieste al secondo è stato raggiunto durante la scrittura dei dati?

Junior — Middle
230

// Per due array di numeri interi di lunghezza N, // per tutti K da 1 a N, conta il numero di numeri comuni nei prefissi di lunghezza K. // I numeri negli array possono ripetersi, l’intersezione si calcola senza considerare le moltiplicità. // Un prefisso di lunghezza K dell’array A è i primi K elementi dell’array A // A [1, 1] => [1], [1, 1] // B [1, 1] => [1], [1, 1] // R [1, 1] // [1, 2, 5] => [1], [1, 2], [1, 2, 5] // [1, 5, 4] => [1], [1, 5], [1, 5, 4] // [1, 1, 2]

228

Perché sono necessarie due verifiche if (alla riga 79 e alla riga con len(buf)==MaxItems), invece di una sola?

228

[nome] ha indicato: alla riga 20, uniq non contiene il numero di caratteri unici, ma qualcos'altro. Cos'è esattamente?

227

// Sono due sequenze ordinate in ordine non decrescente di numeri interi. // È necessario restituire tutti gli elementi della prima sequenza che non sono nella seconda. // 0 <= N <= 10^6 // -10^9 <= a[i] <= 10^9 // [1] // [2, 3, 4, 5, 6] // [1] // [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ...] // [1] // [2, 3, 4, 5, 6, 7, 8] func filter(first []int, second []int) []int { res := make([]int, 0, len(first)) i, j := 0, 0 for i < len(first) && j < len(second) { if first[i] < second[j] { result = append(result, first[i]) i++ } else if first[i] > second[j] { j++ } else { i++ j++ } } for i < len(first) { result = append(result, first[i]) i++ } return result }

226

Raccontaci del compito più difficile e interessante che hai affrontato, in particolare riguardo all'esperienza architettonica.

225

Come spostare la finestra nell'algoritmo di finestra scorrevole?

225
/11