Golang
Ispričaj mi o radu sa slices u Go: kako funkcionišu capacity i length, šta će se desiti kada pređeš granice?
Ispričaj mi o planeru Go. Kako radi sa blokirajućim operacijama?
Ispričaj o prethodnom projektu (Cloud.ru): о čemu je bio projekat, čime si se bavio?
Koji ste nivo: middle, middle+, senior?
Анализа кода у Go: шта ради код, који су проблеми?
Да ли имате високо образовање? У којој години сте дипломирали?
Šta se dešava ako čitamo iz zatvorenog kanala u Go?
Колико би вас занимало учествовање у таквом пројекту (обрада и филтрирање података од банкарских партнера)?
Servis obrađuje zahtev, počinje da radi nešto, pokušava ponovo, a u tom trenutku pod se restartuje. Šta će se desiti?
Upiti za agregaciju su izvršavani na istoj bazi gde je aktivno pisanje? Da li su postojali neki sporedni efekti? Kako PostgreSQL reaguje na promene podataka tokom duge agregacije?
Ispričaj mi o GMP modelu u Go. Kako rade redovi, što je handoff, work stealing, netpoller?
Dizajn skalabilnog sistema za razmenu poruka koji podržava 150 miliona korisnika, 75 miliona DAU, 225 miliona MAU, 1.2M peak QPS za čitanje / 300k za pisanje, 5 miliona istovremenih korisnika, 60 PB novih podataka godišnje, rast od 30% godišnje, SLA 99.95%, p99 <200 ms za čitanje, <300 ms za pisanje. KONTEKST Potrebno je dizajnirati distribuirani sistem za razmenu poruka, sličan WhatsApp-u, koji podržava 1:1 i grupne razgovore, obezbeđuje dostavu poruka, prikazuje online statuse korisnika i omogućava prenos multimedijalnih fajlova (fotografije, video, audio). Sistem mora obezbediti visoku dostupnost i nisku latenciju, podržavati visok paralelizam i skalirati na globalnom nivou. FUNKCIONALNI ZAHTEVI - Podrška za lične (1:1) i grupne razgovore sa mogućnošću dodavanja/uklanjanja učesnika - Slanje i primanje tekstualnih poruka i multimedijalnih fajlova Nije jasno implementiran mehanizam end-to-end enkripcije na nivou servisa ili klijenata, osim opšte napomene. - Nedostaje eksplicitni opis sharding-a i replikacije baza podataka po chat_id ili user_id radi skalabilnosti i otpornosti na greške. - Nema jasnog komponenta ili mehanizma za offline sinhronizaciju poruka i potvrda isporuke. - Nije jasno kako se vrši balansiranje opterećenja između baza podataka i servisa, posebno u vršnim periodima. **Kritične tačke za razmatranje:**
Navedite glavni stek u Go
Што се тиче запослења — рад на даљину, у канцеларији или хибрид, шта разматраш?
""" Места у кинотеатра расположени у једном реду. Нови гледалац бира место, да седи што даље од осталих гледалаца у реду. То јест, растојање од тог места, куда ће седети, до најближе гледаоца треба да буде максимално. Гарантовано је да увек постоје слободна места у реду и да већ седи бар један гледалац. Напишите функцију која, на основу датог реда места (низ нула и јединица), враћа растојање (број размаклица између седишта) од изабраного места до најближе гледаоца. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 [0, 0, 0, 1] [1, 0, 0, 0] place = ((right - left) / 2) """ func maxPlaces(arr []int) int { }
Када треба уклонити индексе? Шта је денормализација?
Колико је приближно микросервиса било у систему?
Šta je blokada konkurencije?
Šta će se desiti ako kapacitet nije dovoljan prilikom dodavanja (append) u pod-slice?
// Šta je loše u ovom kodu? Kako ga poboljšati? func fn() { str := "" for i := 0; i < 100000; i++ { str += fmt.Sprintf("%d", i) } fmt.Println(str) }