Golang
Írjon kódot munkáscsoporttal az URL-ek listájának feldolgozására párhuzamos HTTP-kérésekkel.
Mi az a QUIC protokoll? Miért találták ki?
Milyen párhuzamos programozási mintákat ismersz? Adj példát egy Go standard könyvtárából/praktikájából származó szemaforral, és magyarázd el, hogyan használható egy csatorna szemaforként (elfogás és felszabadítás).
Meséljen a csapat összetételéről és a fejlesztési folyamatokról (sprintek, feladatok elosztása, kód-áttekintés).
Hogyan lehet optimalizálni a keresést egy adatbázisban? Mik azok a indexek és mi a bonyolultságuk?
Hogyan kezelte a visszatérítéseket és a fizetéseket?
Hány szálat indít a Go ütemező? És kifejezetten az AMD EPYC 64 magos és 128 szálas esetében?
Mik az előnye és hátránya a két szcenáriónak: feladatok hozzáadása a pool indítása előtt és után?
Van ötleted a folyamat és a folyamat közötti különbségről?
Gyorsítótár érvénytelenítésének típusai. Melyeket ismer, használt már valamelyiket?
Mi az index és milyen típusú indexek vannak a PostgreSQL-ben?
SELECT u.id, u.name, o.id as order_id, o.amount FROM users u ? JOIN orders o ON u.id = o.user_id;
Milyen kulcsok lehetnek egy mapben Go-ban?
Hogyan lehet gyorsan 10 milliárd sort beszúrni a ClickHouse-ba?
Mire való a HAVING?
Mi a különbség a json.Unmarshal és a json.Decoder között, és mikor használnád mindkettőt?
Általános kérdés: felkészülés az interjúra és kérdésforrások
Skálázható üzenetküldő rendszer tervezése, amely támogatja a 150 millió felhasználót, 75 millió DAU-t, 225 millió MAU-t, 1,2 millió olvasási / 300k írási csúcs QPS-t, 5 millió egyidejű felhasználót, évente 60 PB új adatot, 30%-os éves növekedést, 99,95%-os SLA-t, p99 <200 ms olvasásra, <300 ms írásra. KÖRNYEZET Olyan elosztott üzenetküldő rendszer tervezése szükséges, mint a WhatsApp, amely támogatja az 1:1 és csoportos beszélgetéseket, garantálja az üzenetek kézbesítését, megjeleníti a felhasználók online státuszát, és lehetővé teszi multimédia fájlok (képek, videók, hangok) átvitelét. A rendszernek magas rendelkezésre állást és alacsony késleltetést kell biztosítania, támogatnia kell a magas párhuzamosságot, és globálisan skálázhatónak kell lennie. FUNKCIÓS KÖVETELMÉNYEK - Személyes (1:1) és csoportos beszélgetések támogatása, résztvevők hozzáadása/eltávolítása lehetőséggel - Szöveges üzenetek és multimédia fájlok küldése és fogadása Nincs világos end-to-end titkosítási mechanizmus megvalósítása szolgáltatási vagy kliens szinten, általános megjegyzésen kívül. - Hiányzik egyértelmű leírás a shardingról és a replikációról chat_id vagy user_id szerint az skálázhatóság és hibatűrés érdekében. - Nincs világos komponens vagy mechanizmus az offline üzenet-szinkronizáció és kézbesítési igazolások kezelésére. - Nem világos, hogyan történik a terheléselosztás az adatbázisok és a szolgáltatások között, különösen csúcsidőszakokban. **Kritikus pontok, amelyeket figyelembe kell venni:**
Mi történik, ha le kell mondani a Kafka-ról és helyette más üzenetközvetítőt kell használni? Hogyan izoláljuk a Kafka-t a külső szolgáltatásoktól?
Miért nem térnek vissza hibák a Process módszerben? Javítani kell és teljesen működő kódot kell küldeni.