Golang
Popište proces sběru a nastavení gRPC služby pro ruční testy nebo vývoj
Jak jsou na úrovni systému správy databází implementovány mechanismy omezení úrovní izolace transakcí?
Co může být negativní při převodu segmentu bajtů na řetězec?
Jaké důsledky nastanou, pokud data přenášená kanálem zůstanou nečtená?
Jaký formát práce zvažujete — vzdálený, hybridní nebo kancelářský?
Jakými způsoby lze zajistit zpracování Kafka až 100 tisíc zpráv za sekundu?
Jak řídí centrální procesor rozdělení úkolů mezi interní a globální fronty úkolů?
Můžete vysvětlit princip fungování a použití objektu sync.Pool v Go?
Jaké operace existují nad slices v Go?
Jak se nazývá proces přesunu prvků z jednoho Mapu do druhého?
/* Musíme přenést data ze zdroje k příjemci. Zdroj poskytuje data v malých dávkách (~deset záznamů), zatímco příjemce s nimi pracuje efektivněji ve větších dávkách (~tisíc záznamů). Reálným příkladem 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 volání Next vrací nová data. - Po restartu však zdroj začne od předchozí "potvrzené" pozice, určené cookie. Proto každý cookie vrácený Next, po uložení dat do příjemce, musí být potvrzen voláním Commit, ve stejném pořadí, v jakém byla data 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, po čemž potvrzuje pokrok ve zdroji. Zvýšená obtížnost: Metody Next, Process a Commit jsou spojeny s síťovými voláními a mohou trvat dlouho. Pro urychlení procesu je nutné paralelizovat procesy čtení, zápisu a potvrzování pokroku. Tak, aby během Process nebo Commit pokračovalo čtení ze zdroje a tvorba nového bufferu. */ 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 se používá 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 { // TODO }
Jak je implementována operace select v jazyce Go a jak funguje s kanály?
Lze pozastavit provádění gorutiny tak, aby se zablokovala na konkrétním systémovém vlákně?
Má jazyk Go vestavěnou podporu pro pole?
Jaký mechanismus abstrakce v jazyce Go je určen k reprezentaci znaků nebo tokenů?
Jaké metody lze použít k rozdělení databáze pomocí shardingu?
Jaké datové typy jsou vhodné pro použití jako klíč v datové struktuře Map?
Můžete vysvětlit mechanismus fungování plánovače úloh v operačním systému?
Můžete vysvětlit vnitřní strukturu a fungování hashovací tabulky?
Máte zkušenosti s řešením složitých problémů souvisejících s používáním Go Modules ve vašich projektech?