Golang
Co dělá defer?
Existují mezi popsanými týmy nebo oblastmi nějaké příkazy nebo směry, které vás obzvlášť oslovují nebo kterým byste se raději vyhnuli?
// hledání nejlepšího -- ??? // pokud nenajdete, porovnejte inflight
Jak vypadal pomalý dotaz na zprávu a jaká byla celá cesta od uživatelské žádosti po získání výsledku?
Jaký je účel bufferu kanálu?
Co je to race condition a jak ji detekovat?
Vyprávějte případ, kdy jste zkrátili dobu hledání historie transakcí z 2–5 sekund na 150 milisekund pomocí agregace dat v Elasticsearch: jaká byla počáteční data a architektura, co přesně bylo změněno a jaký byl výsledek?
O jakém škálování mluvíme?
Co je to kontext v Go?
Které indexy jste v praxi používali a proč?
// kód pro funkci best() // s ošetřením chyb, pokud není dostupný backend
#vyjasnění #technické 1. Co je na Go skvělé? - gorutiny a plánovač, který umožňuje pracovat bez přemýšlení o tom, jak funguje konkurence. 2. Jaké nevýhody vidíš v Go? - zpracování chyb 3. Jak jsi se dostal k Go? 4. Jak je zajištěna lehkost v Go a proč se gorutiny přepínají rychleji? Proč to nemohlo být uděláno stejně v OS? 5. Čím obětujeme, když místo OS vláken používáme gorutiny? 6. Co je konkurence a paralelismus? 7. Co je rozhraní net.Listener a jaké má metody? 8. Pracoval jsi přímo sítěmi nebo přes frameworky a které? 9. Čím se liší TCP od UDP a co to je a k čemu se používá? 10. Jaká jsou rizika při používání TCP a UDP? 11. Co je bigEndian a littleEndian? 12. Co je TLS? 13. Jaké jsou způsoby přenosu dat mezi mikroservisy (například příkazy/žádosti/odpovědi/přenos souborů)? Jaké vzory nebo vývojové nástroje můžeme zvolit a jaké jsou jejich nuance? 14. Jaké jsou způsoby přenosu dat přes síť a jaké jsou jejich výhody/nevýhody? 15. S jakými databázemi jsi pracoval a jaké nástroje jsi používal? 16. Jakou knihovnu jsi použil pro každou databázi v Go? 17. Jak řešíš růst databáze během vývoje? 18. Pokud se změní schéma databáze, upraví se pole, jak řešíš tento problém, aniž bys ztratil stará data? Jak provádíš migrace a jaké jsou jejich výhody/nevýhody? 19. Jak měníš databázi v produkci? Kdo to dělal? 20. Jak můžeš abstraktně oddělit komponentu pracující s databází od hlavní logiky, aby všechny SQL dotazy a ORM nešířily se v kódu? Umísti ji do samostatného adresáře a používej rozhraní a tagy. 21. Proč jsou potřeba indexy a jaké jsou jejich nevýhody? 22. Dostali jste úkol: napiš kód, který vložíš do projektu, a jak budeš dokumentovat výsledek? 23. Jakou dokumentaci obvykle používáš a proč + kam to směřuje? Například, co je to za rozhraní, k čemu slouží atd.? Měl jsi takovou situaci? 24. Aktivně používáš go doc a je to u vás běžná praxe? 25. Dokumentuješ specifikace nebo markdown a jak to děláš? 26. Jaký byl tvůj pracovní tok, od koho přicházely úkoly a co se stalo potom? 27. Jak podrobné jsou úkoly? Tzn. jen k vstupu nebo je třeba i přemýšlet o architektuře a ptát se někoho? 28. V projektu s mnoha gorutinami, jaké synchronizační prostředky používáš, aby všechny gorutiny bezpečně skončily? 29. Kde v projektu jsi použil gorutiny? 30. Kolik bajtů zabírá rozhraní? 31. Co je to httpHandler, co přijímá a jaká je jeho struktura a co vrací, jaké má argumenty a signaturu? K čemu je potřeba a kde se dále používá? 32. Co je middleware a jak ho používáš? Jak to bylo ve tvém projektu? 33. Jaké vlastnosti jazyka Go umožňují stavět tyto middleware a co to je, co přijímá a co produkuje? 34. Máme funkci, která přijímá funkci a po jejím provedení spustí gorutinu a provede callback, a my jí předáváme metodu struktury, která také nic nepřijímá a nic nevrací - bude chyba kompilace nebo něco jiného? Tzn. její signatura je prázdná a máme nějakou metodu, která žádá takovou funkci, a místo toho, abychom předali čistou funkci, jsme předali metodu, tj. objekt.metoda. 35. Existuje funkce, která přijímá int32 a my se snažíme jí předat int16, co se stane a v jaké fázi? 36. Kolik bajtů zabírá slice v paměti například na amd64? 24 bajtů, a data se do funkce nepředávají? 37. Jak lze implementovat množinu v Go a jaké jsou jejich rozdíly a nuance? 38. Co je UUID a používal jsi ho v projektu, kde a jakou knihovnu jsi použil? 39. Máš mapu s 1 000 000 prvky, co se stane, když přidáš ještě 1 prvek? Jaké jsou možné scénáře a jak se změní rychlost přístupu k datům? 41. Používal jsi Docker (kontejnery/pody)? A jaké služby byly před Dockerem, například "jak nasadit binárku na server"? Jak jsi zabalil kód a jak jsi ho upravil, aby služba startovala při spuštění OS?
Co je problém N+1 v databázích?