Golang
Maximální zatížení: 25k čtení / 5k zápisů za sekundu Objem nových dat: 10 TB ročně Maximální paralelní zátěž: 120k současných požadavků Roční růst uživatelů: 30% Cílové zpoždění p99: <150 ms pro čtení, <400 ms pro zápis Cílová dostupnost: 99,95% Vaším úkolem je vyvinout architektonické řešení, které odstraní současné problémy, zajistí konzistenci a odolnost vůči chybám, a také implementuje mechanismy sledování pro úplné monitorování životního cyklu objednávky. Popište mechanismus řešení chyb, plán migrace ze současné architektury, a vysvětlete, jak navrhované řešení zlepší spolehlivost a transparentnost systému.
Máš zkušenosti se systémovým designem — navrhovat architekturu od nuly a obhajovat ji před týmem?
Jak bude probíhat proces odesílání a přijímání zpráv mezi dvěma klienty? Popište úplný tok.
Proč byla zvolena partitionace podle stavu, když historicky je více propuštěných než aktivních?
Vytváří se pro každou gorutinu nový vlákno operačního systému?
Existují 3 entity: uživatel, chat, zpráva • Uživatel má jméno a datum registrace • Chat má název a datum vytvoření • Zpráva má text, autora a datum vytvoření • Uživatel může být současně v několika chatech • Zpráva musí nutně patřit do chatu a nemůže patřit více než do jednoho současně • Obor je třeba popsat ve formě tabulek
Kolik je vám let?
// Otázka 1. Mit zobrazí na obrazovce? package main import "fmt" func main() { s := "Hello world" s[0] = "h" fmt.Println(s) }
Jaký je tvůj hlavní programovací jazyk? Používáš C++ nebo Python?
Kdo navrhl architekturu projektu — ty jako feature leader, společně s týmem, nebo jako týmový leader?
Jak jste ovlivnili změnu procesu s analytikou?
Je otázka 'Proč jste zvolili strategii Cache-aside?' správná?
Kde jsou v Go umístěny proměnné — na zásobníku nebo na haldě? Co je to escape analýza?
Co jsou to rychlé hry?
func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error { advertiser, err := r.find(advertiserID) if err != nil { return err } partner, err := r.find(partnerID) if err != nil { return err } advertiser.Balance -= amount partner.Hold -= amount partner.Balance += amount if err := r.save(advertiser); err != nil { return err } if err := r.save(partner); err != nil { return err } r.totalPayouts++ return nil }
func main() { defer func() { if r := recover(); r != nil { fmt.Println("obnoven") } }() defer func() { fmt.Println("odložené") }() go func() { fmt.Println("uvnitř gorutiny začátek") panic("boom") fmt.Println("uvnitř gorutiny konec") }() time.Sleep(time.Second) }
Proč jste se rozhodl změnit zaměstnání? Co hledáte?
Slyšel jste něco o kvaternionech? Víte, jak se používají v počítačové grafice?
Proč v sync.Map není metoda pro získání počtu prvků (len)?
Povězte mi o CI/CD pipeline: jaká prostředí, jaké kroky, jak byl proces postaven?