Golang
Jaké způsoby synchronizace gorutin jsou v Go?
Pověz mi o kanálech v Go: co jsou, co se v nich ukládá, co se stane s bufferovaným kanálem na 5 prvků při zápisu 5 hodnot?
Máte otázky ohledně procesů, pracovních podmínek a dalších kroků?
Máte nyní jiné pohovory nebo nabídky?
Návrh škálovatelného systému pro zasílání zpráv, který podporuje 150 milionů uživatelů, 75 milionů DAU, 225 milionů MAU, 1,2 milionu čtení / 300 tisíc zápisů QPS, 5 milionů současných uživatelů, 60 PB nových dat ročně, růst o 30 % ročně, P99 <200 ms pro čtení, <300 ms pro zápis, SLA 99,95 %. KONTEKST Je třeba navrhnout distribuovaný systém zasílání zpráv, podobný WhatsAppu, který podporuje 1:1 a skupinové chaty, zajišťuje doručení zpráv, zobrazuje online status uživatelů a přenáší multimediální soubory (fotky, videa, audia). Systém musí zajistit vysokou dostupnost a nízkou latenci, podporovat vysoký paralelismus a škálovat na globální úrovni. FUNKČNÍ POŽADAVKY - Podpora osobních (1:1) a skupinových chatů s možností přidávat/odstraňovat účastníky - Odesílání a přijímání textových zpráv a multimediálních souborů Nefunkční požadavky: - Neexistuje explicitní implementace end-to-end šifrování na úrovni služeb nebo klientů, kromě obecné poznámky. - Není jasně popsáno sharding a replikace databází podle chat_id nebo user_id pro škálovatelnost a odolnost vůči chybám. - Neexistuje žádná explicitní komponenta nebo mechanismus pro offline synchronizaci zpráv a potvrzení doručení. - Není jasné, jak je realizováno vyvažování zátěže mezi databázemi a službami, zejména při špičkových zatíženích. **Důležité body k zvážení:** (Diagram ukazuje architekturu s Load Balancerem, API Gateway, Message Queue, Service, Cache, Database, Object Storage a CDN)
Pracoval jste někdy s transakcemi v PostgreSQL? S jakými úrovněmi izolace transakcí jste se setkal, v jakých případech se používají?
Implementujte funkci, která přijímá []any a delta int. Je třeba zvýšit o delta pouze první výskyty unikátních čísel (int). Ostatní typy a opakující se čísla nechte beze změny. Funkce by měla vrátit aktualizovaný slice a 2 čísla: updated — kolik unikátních čísel bylo změněno, duplicates — kolik číselných prvků bylo duplicitních func IncrementUniqueIntsInMixed(xs []any, delta int) ([]any, int, int) { // váš kód }
Jak synchronizovat pracovníky přes PostgreSQL ( distribuční zámek v databázi)?
Na 7. řádku se uvádí, že vnitřní pole bude přetečeno a bude vytvořeno nové. Proč jsi tak rozhodl?
Co je to vzor Outbox a jak se realizuje?
Jak prohlížeč vykresluje stránky? Co je to compositing?
Pokud by se takový úkol nyní dostal do sprintu, od čeho bys začal a jak bys pracoval s nejistotou?
Jak jste pracovali s Kubernetes ve vašem předchozím týmu?
Proč jsou potřeba dvě kontroly if (na řádku 79 a na řádku s len(buf)==MaxItems), místo jedné?
Jaká je motivace ke změně? Proč jste se rozhodli vstoupit na trh?
Jaký typ použít pro implementaci množiny v Go?
Píšete sami vysoce zatížené služby nebo je udržujete?
Pověz mi o své zkušenosti, čím ses zabýval, na jakém projektu jsi pracoval a jakou roli jsi hrál?
Jak jsou obvykle jasné požadavky?
Jaké jsou úrovně izolace transakcí? Které jste použili?