Golang
Jak je v jazyce Go implementována práce s panickými stavy a zpracování chyb způsobených nouzovými situacemi?
Co přesně se dělalo s duplikáty po jejich objevení? Kde byly čištěny?
Jakými metodami a nástroji jste analyzovali a určovali příčiny zátěžových problémů v systémech?
Jakými příkazy obvykle používáš v operačním systému Linux?
Jaké přístupy lze použít k zajištění bezpečnosti vláken při práci se slices v prostředí s více vlákny?
Jaké operace jsou povoleny při práci s nil slice v programovacím jazyce?
Povězte o složité úloze, kterou jste dokázali vyřešit napsáním skriptu pro systém Linux
Jak lze regulovat objem dat uložených v mezipaměti?
Připravenost zastávat roli jediného Backend specialisty v týmu
Jaký je hlavní důvod použití typu sync.Map v Go?
Jaké jsou dobré praktiky a antipatterny v jednotkovém testování? Jak poznat, že testy jsou dobré?
Jaké jsou výhody a nevýhody používání cache v systémech?
func Exclude(a, b []int) []int { set := make(map[int]struct{}) for _, v := range b { set[v] = struct{}{} } result := make([]int, 0) for _, v := range a { if _, ok := set[v]; !ok { result = append(result, v) } } return result } Hiba a fordítás során # command-line-arguments ./main.go:39:32: szintaktikai hiba: váratlan sorvége, { várható az if feltétel után
Setkali jste se někdy s obtížemi při implementaci interakcí mezi různými službami?
Jak se předává řez (slice) do funkce v programovacím jazyce?
Co je to vzorec Saga?
Proč nepoužili Testcontainers?
/* Potřebujeme přenést data z nějakého zdroje k nějakému příjemci. Zdroj dodává data v malých dávkách (~desítky záznamů), zatímco příjemce pracuje efektivněji s většími dávkami. Reálný příklad je přenos dat z front typu Kafka do databáze Clickhouse. Zdroj: - Téměř nekonečný. - Zdroj nikdy nevrátí více než MaxItems záznamů v jednom volání Next. - V rámci jedné "seance" (jedno volání funkce Pipe) zdroj při každém Next vrací nová data. - Po restartu však zdroj začne od předchozí "potvrzené" pozice, kterou určuje cookie. Proto musí být každá hodnota cookie, kterou Next vrátí, po uložení dat do příjemce potvrzena voláním Commit, a to ve stejném pořadí, v jakém byla vrácena. Příjemce: - Nedokáže zpracovat více než MaxItems najednou. Základní úroveň: Je třeba implementovat funkci func Pipe(p Producer, c Consumer) error, která čte data ze zdroje, seskupuje je do bufferu o velikosti nejvýše MaxItems a ukládá je do příjemce, později potvrzuje pokrok ve zdroji. */ const MaxItems = 9999 type Producer interface { // Next vrací: // - dávku položek k zpracování // - cookie k potvrzení po dokončení zpracování // - chybu Next() (items []any, cookie int, err error) // Commit slouží k označení dávky dat jako zpracované 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 }
Je tabulka s (id PRIMARY KEY, data JSON) poměrně dobrý index v PostgreSQL pro hledání podle klíče?
Čím se liší virtualizace od kontejnerizace?