Golang
Ako sú na úrovni systému správy databáz implementované mechanizmy obmedzenia úrovní izolácie transakcií?
Čo môže byť negatívne pri prevode segmentu bajtov na reťazec?
Aké dôsledky nastanú, ak údaje prenášané cez kanál zostanú neprečítané?
Aké je výhody gorutín v porovnaní s vláknami z hľadiska efektívnosti a pohodlia používania?
Aké parametre je možné nastaviť pre chod plánovača úloh?
Akými spôsobmi je možné zabezpečiť spracovanie Kafka až do 100 tisíc správ za sekundu?
Ako vnímate situáciu, keď v kóde nie je explicitne uvedené použitie rozhrania?
Povedz mi o aktuálnom projekte, na ktorom pracuješ alebo na ktorom si nedávno pracoval
Aké operácie existujú nad slices v Go?
Ako sa nazýva proces presunu prvkov z jednej Mapy do druhej?
/* Musíme preniesť údaje zo zdroja k spotrebiteľovi. Zdroj poskytuje údaje v malých dávkach (~desať záznamov), zatiaľ čo spotrebiteľ efektívnejšie pracuje s väčšími dávkami (~tisíc záznamov). Reálny príklad je prenos údajov z front typu Kafka do databázy Clickhouse. Zdroj: - Takmer nekonečný. - Zdroj nikdy nevráti viac ako MaxItems záznamov v jednom volaní Next. - V rámci jednej "relácie" (jedno volanie funkcie Pipe) zdroj pri každom Next vracia nové údaje. - Po reštarte však zdroj začína od predchádzajúcej "potvrdenej" pozície, označenej cookie. Preto, každá hodnota cookie, vrátená od Next, po uložené údajoch do príjemcu, musí byť potvrdená volaním na Commit, v rovnakom poradí, v akom boli vrátené od Next. Prijímateľ: - Nedokáže spracovať viac ako MaxItems naraz. Základná úroveň: Je potrebné implementovať funkciu func Pipe(p Producer, c Consumer) error, ktorá číta údaje zo zdroja, ich zoskupuje do bufferu veľkosti nie väčšej ako MaxItems a ich ukladá do príjemcu, po čom potvrdzuje pokrok v zdroji. Zložitosť: Metódy Next, Process a Commit sú spojené s sieťovými volaniami a môžu trvať dosť dlho. Na zrýchlenie procesu je potrebné paralelizovať procesy čítania, zápisu a potvrdenia pokroku. Tak, aby počas Process alebo Commit pokračovalo čítanie zo zdroja a tvorba nového bufferu. */ const MaxItems = 9999 type Producer interface { // Next vráti: // - dávku položiek na spracovanie // - cookie na potvrdenie, keď je spracovanie dokončené // - chybu Next() (items []any, cookie int, err error) // Commit sa používa na označenie dávky dát ako spracovaných Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { // TODO }
Ako je implementovan operácia select v jazyku Go a ako funguje s kanálmi?
Je možné pozastaviť vykonávanie gorutiny tak, aby sa zablokovala na konkrétnom systémovom vlákne?
Má jazyk Go zabudovanú podporu pre polia?
Aký mechanizmus abstrakcie v jazyku Go je určený na reprezentáciu znakov alebo tokenov?
Čo znamená nulová hodnota pre rez v programovacom jazyku?
Ako je implementované paralelné a sekvenčné spracovanie úloh v jazyku Go?
Aké typy údajov sú vhodné na použitie ako kľúč v dátovej štruktúre Map?
Môžete vysvetliť mechanizmus fungovania plánovača úloh v operačnom systéme?
Môžete vysvetliť vnútornú štruktúru a fungovanie hash tabuľky?