Golang
A che fase della ricerca di lavoro ti trovi: consideri attivamente o passivamente le offerte di lavoro?
Con quali database hai lavorato?
Perché si utilizza un indice B-tree invece di un albero binario?
Puoi fare un esempio di funzione hash?
Cos'è un indice composito?
Il product manager chiede di realizzare in un mese una funzionalità: in assenza di appartamenti a San Pietroburgo per le visite di maggio, mostrare opzioni simili nelle città vicine (Vyborg, Kronstadt). Nessuna analisi, nessun documento tecnico. Descrivi i passaggi dalla conversazione al primo commit.
Nel curriculum si menziona che hai implementato il tracing — puoi raccontare di più?
Cosa succede se si lascia un select senza casi in Go?
Quali metodi conosci per cambiare goroutine? Come cambiare manualmente una goroutine?
Hai priorità in termini di aree tematiche o settori che ti interessano assolutamente poco?
Quali pattern di progettazione conosci? Quali gruppi di pattern esistono?
Come fare a non andare mai al servizio che sicuramente fallirà o sarà inaccessibile?
func fanin[T any](chs ...<-chan T) chan T { out := make(chan T) wg := sync.WaitGroup{} for _, ch := range chs { wg.Add(1) go func(c <-chan T) { defer wg.Done() for v := range c { out <- v } }(ch) } go func() { wg.Wait() close(out) }() return out } func main() { ch1 := make(chan int, 5) ch2 := make(chan int, 5) for i := 1; i <= 5; i++ { ch1 <- i ch2 <- i * 2 } close(ch1) close(ch2) fmt.Println(fanin(ch1, ch2)) }
Cos'è l'allineamento delle strutture in Go? Come ottimizzare i campi della struttura in memoria?
Era possibile modificare limiti e regole in runtime? C'era un'interfaccia utente per questo?
Più consumatori di un stesso gruppo di consumatori possono leggere una partizione contemporaneamente?
Hai sempre lavorato come outsourcing/outstaff?
E poi cosa fai con questi dati?
Cosa sono le goroutine in Go e come si differenziano dai thread di sistema?
Perché sceglieresti un canale invece di WaitGroup/errgroup? In cosa è peggio errgroup?