Kaip naudojote Kafka ir RabbitMQ kaip brokerius? Kodėl du?
Golang
Kas yra Service subjektas Kubernetes?
Jei turėtum pasirinkti tarp dviejų įmonių ar dviejų komandų, į ką atkreiptum dėmesį ir kaip pasirinktum?
Kodėl tau apskritai reikalingas vadovas darbe? Kam?
Kaip veikia žemėlapių lentelė? Kokia įterpimo ir skaitymo sudėtingumas? Implementacijos ypatybės Go kalboje.
Kas yra sharding ir kam jis naudojamas? Kaip pasirinkti sharding raktą taksi paslaugos lentelėms (vairuotojai, klientai, užsakymai)?
Ar turi supratimą, kokioje komandoje norėtum dirbti? Kokia ji turėtų būti?
Ar jums kada nors buvo taip, kad ilgai ką nors darėte, o galiausiai tai nebuvo įgyvendinta arba atidėta į krūvą?
Kiek metų komercinės patirties turite su Go?
Kaip dažnai komandoje vykdėte kodo peržiūras?
Reikia sukurti backend architektūrą žinučių siuntimo programai (Slack, Teams, Mattermost). Reikalavimai ir apribojimai: tik 1x1 pokalbiai, be grupinių pokalbių tik tekstiniai pranešimai, be priedų paslauga prieinama per internetą iki 10 000 vartotojų sistemoje žinutės turi būti pristatomos greitai, per kelias sekundes turi būti išlaikytas pranešimų tvarkos, be dubliavimų galima slinkti atgal į pokalbio istoriją, t.y., saugoti žinutes klientai – mobiliosios įrenginiai, jų projektavimas nereikalingas autentifikacijos projektavimas nereikalingas
Kaip klientas sužino apie pranešimus, gautus būnant neprisijungus?
Kaip vyks žinučių siuntimo ir gavimo procesas tarp dviejų klientų? Aprašykite pilną srautą.
Kas yra HTTPS? Kaip jis skiriasi nuo HTTP? Kaip apsaugo nuo 'žmogaus viduryje' atakos?
Norint teisingai vykdyti kodą: įėjimo taškas -- main paketo main funkcija package main import ( "crypto/md5" "fmt" ) var alphabet = []rune{'a', 'b', 'c', 'd', '1', '2', '3'} func RecoverPassword(h []byte) string { return "" } func hashPassword(in string) []byte { h := md5.Sum([]byte(in)) return h[:] } func main() { tests := []string{"a", "12", "abc333d"} ok := true for _, exp := range tests { h := hashPassword(exp) act := RecoverPassword(h) if act != exp { fmt.Printf("Klaida: tikėtasi %q, gauta %q\n", exp, act) ok = false } } if ok { fmt.Println("Visi testai sėkmingai praėjo") } }
SELECT * c.id, -- pasirinkite visas pokalbių (c.id, c.name) visiems vartotojams pagal vardą ($1) where text > 'abc'
Ką dabar labiau norėtumėte: produkto kūrimą ar platformos kūrimą?
Kuo skiriasi procesai, srautai ir goroutines Go kalboje?
Sąlyga Yra 3 subjektai: vartotojas, pokalbis, žinutė • Vartotojui yra vardas ir registracijos data • Pokalbiui yra pavadinimas ir sukūrimo data • Žinutei yra tekstas, autorius ir sukūrimo data • Vartotojas gali būti keliuose pokalbiuose vienu metu • Žinutė privalo priklausyti pokalbiui, ji negali priklausyti daugiau nei vienam pokalbiui vienu metu • Reikia aprašyti sritį lentelėmis -- paskirstytas -- message_count pokalbiuose limitas 100 --getShard(time zone) -> shard_id -> 1 --getShard(time zone) -> shard_id -> 2 --shard1 [1..100] --shard2 [101..200] CREATE TABLE users ( id int PRIMARY KEY, name varchar(255) NOT NULL, reg_at TIMESTAMP NOT NULL DEFAULT NOW() ); CREATE TABLE chats ( id int PRIMARY KEY, name VARCHAR(255) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT NOW(), message_count int NOT NULL CHECK <= 100 ); CREATE TABLE user_chats ( user_id int not null REFERENCES users(id), chat_id int NOT NULL REFERENCES chats(id), PRIMARY KEY (user_id, chat_id) ); CREATE TABLE messages ( id int PRIMARY KEY, chat_id int NOT NULL REFERENCES chats(id), author_id int NOT NULL REFERENCES users(id), created_at TIMESTAMP NOT NULL DEFAULT NOW(), text TEXT NOT NULL );
Apskritai papasakok apie projektą — kas tai buvo galutiniam vartotojui?