Когато не можем да уловим паниката, приложението все пак ще затвори ли се?
Golang
Какво означава именуването в стил RPC? В нашия случай gRPC и REST — как се различават?
Все още работите в Магнит? Защо решихте да излезете на пазара?
Какво се случваше в пайплайна след inbox? Как се записваха данните в базата?
Какво има в пакета sync?
Трябваше ли явно да зададете нивото на изолация в кода?
// Въпрос 5. Какво ще се покаже на екрана func main() { ch := make(chan int, 5) for i := 1; i <= 5; i++ { ch <- i } for true { fmt.Println(<-ch) } }
Все още работиш в Магнит? Защо реши да излезеш на пазара?
Създавали ли сте исторически таблици — например за потребителя, където се съхранява историята на промените на неговите атрибути?
// Въпрос 3. Какво ще изведе на екрана package main import "fmt" import "math" func main() { i := int32(math.Pow(2, 64)) - 1 fmt.Println(i) }
Как оптимизираше заявките от 10-20 минути до 5-7? Какви отчети се изпълняваха толкова бавно?
Имаше ли много такива невалидни съобщения?
Къде трябва да дефинирате recover, за да не се срива приложението в случай на паника, като има няколко крайни точки, много зависимости (БД, кеш, библиотеки)?
Разкажи за себе си, с какво се занимаваше, какво правеше?
Какво се случваше в първия канал за синхронизация? Това ли е някакъв модел на данни, въз основа на който се обогатяваха?
// Въпрос 2. Какво ще се покаже на екрана package main import "fmt" func main() { { defer fmt.Println(1) } defer fmt.Println(2) }
Какво се правеше с съобщенията след ръчната обработка? Какви бяха вариантите?
Разкажи ми за валидирането: какви са опциите за валидиране, какво се случва, ако съобщението не премине валидирането?
Използвали ли сте тригери на практика?
Знаеш ли такъв модел като Saga?