Golang
Wat is het QUIC-protocol? Waarom is het uitgevonden?
Welke patronen van parallel programmeren ken je? Geef een voorbeeld van een semaphore uit de standaardbibliotheek/praktijk van Go en leg uit hoe een kanaal als semaphore kan worden gebruikt (verwerven en vrijgeven).
Vertel ons over de samenstelling van het team en de ontwikkelprocessen (sprints, taakverdeling, code review).
Hoe optimaliseer je de zoekfunctie in een database? Wat zijn indexen en wat is hun complexiteit?
Hoe hebt u retouren en betalingen afgehandeld?
Hoeveel threads zal de Go-planner starten? En specifiek op AMD EPYC met 64 cores en 128 threads?
Wat zijn de voor- en nadelen van de twee scenario's: taken toevoegen vóór het starten van de pool en na het starten van de pool?
Heb je een idee van het verschil tussen stroom en proces?
Soorten cache-invalidatie. Welke kent u, hebt u er een gebruikt?
Wat is een index en welke soorten indexen zijn er in PostgreSQL?
SELECT u.id, u.name, o.id as order_id, o.amount FROM users u ? JOIN orders o ON u.id = o.user_id;
Welke sleutels kunnen er in een map in Go zitten?
Hoe voeg je snel 10 miljard rijen toe aan ClickHouse?
Waarvoor is HAVING bedoeld?
Wat is het verschil tussen json.Unmarshal en json.Decoder, en wanneer zou je elk gebruiken?
Algemene vraag: voorbereiding op het interview en bronnen van vragen
Ontwerp van een schaalbaar berichtenplatform dat 150 miljoen gebruikers ondersteunt, met 75 miljoen DAU, 225 miljoen MAU, 1,2 miljoen lees- / 300k schrijfsituaties QPS, 5 miljoen gelijktijdige gebruikers, 60 PB nieuwe gegevens per jaar, 30% jaarlijkse groei, SLA 99,95%, p99 <200 ms voor lezen, <300 ms voor schrijven. CONTEXTE Het is nodig om een gedistribueerd berichtenplatform te ontwerpen, vergelijkbaar met WhatsApp, dat 1:1 en groepschats ondersteunt, berichtbezorging garandeert, online statussen van gebruikers toont en multimedia-bestanden (foto's, video's, audio) overdraagt. Het systeem moet hoge beschikbaarheid en lage latentie bieden, hoge paralleliteit ondersteunen en wereldwijd schalen. FUNCTIONELE EISEN - Ondersteuning voor persoonlijke (1:1) en groepschats met de mogelijkheid om deelnemers toe te voegen/verwijderen - Verzenden en ontvangen van tekstberichten en multimedia-bestanden Er lijkt geen duidelijke implementatie van end-to-end encryptie-mechanismen op servicetoe of clientniveau, afgezien van een algemene notitie. - Er ontbreekt een expliciete beschrijving van sharding en replicatie van databases op basis van chat_id of user_id voor schaalbaarheid en fouttolerantie. - Er is geen duidelijke component of mechanisme voor offline synchronisatie van berichten en afleverbevestigingen. - Het is niet duidelijk hoe de load balancing tussen databases en services wordt uitgevoerd, vooral bij piekbelastingen. **Kritieke punten om rekening mee te houden:**
Wat gebeurt er als je Kafka moet opgeven en deze vervangt door een andere berichtenbroker? Hoe isoleer je Kafka van externe services?
Waarom worden er geen fouten geretourneerd in de methode Process? Het moet worden gecorrigeerd en de volledig werkende code moet worden gestuurd.
Vertel over je ervaring met databases — naast ClickHouse, welke databases en hoe diepgaand?