Sobes.tech

Golang

Ako ste používali Kafka a RabbitMQ ako brokerov? Prečo dva?

214

Ak by si mal na výber medzi dvoma spoločnosťami alebo dvomi tímami, na čo by si sa zameral a ako by si vyberal?

210

Čo je sharding a na čo sa používa? Ako vybrať kľúč sharding pre tabuľky taxi služby (vodiči, zákazníci, objednávky)?

209

Ako funguje hash tabuľka? Aká je zložitosť vkladania a čítania? Vlastnosti implementácie v Go.

209

Máš predstavu o tom, v ktorom tíme by si chcel pracovať? Aká by mala byť táto tím?

206

Stalo sa vám niekedy, že ste niečo dlho robili a nakoniec to nebolo implementované alebo odložené do zásobníka?

205

Je potrebné navrhnúť architektúru backendu pre messenger (Slack, Teams, Mattermost). Požiadavky a obmedzenia: len 1x1 chaty, bez skupinových chatov len textové správy, bez príloh služba je dostupná cez internet až 10 000 používateľov v systéme správy musia byť doručené rýchlo, v priebehu niekoľkých sekúnd je potrebné zachovať poradie správ, bez duplikátov je možné posúvať chat do minulosti, teda ukladať správy klienti sú mobilné zariadenia, ich navrhovanie nie je potrebné navrhovanie autorizácie nie je potrebné

200

Ako bude prebiehať proces odosielania a prijímania správ medzi dvoma klientmi? Opíšte úplný tok.

197

Ako sa klient dozvie o správach, ktoré dostal, keď bol offline?

197

Čo je HTTPS? Čím sa líši od HTTP? Ako chráni pred útokom 'človek uprostred'?

194

Za pravilno izvajanje kode: vstopna točka -- funkcija main v paketu main 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("Chyba: očakávané %q, získané %q\n", exp, act) ok = false } } if ok { fmt.Println("Všetky testy prešli úspešne") } }

194

Čo si teraz viac želáte — vývoj produktu alebo platformy?

192

SELECT * c.id, -- vyberte všetky chaty (c.id, c.name) pre všetkých používateľov podľa mena ($1) where text > 'abc'

192

Aký je rozdiel medzi procesmi, vláknami a goroutines v Go?

191

Podmienka Existujú 3 entity: používateľ, chat, správa • Používateľ má meno a dátum registrácie • Chat má názov a dátum vytvorenia • Správa má text, autora a dátum vytvorenia • Používateľ môže byť súčasne v niekoľkých chatov • Správa je povinná patriť do chat, nemôže patriť viacerým chatom súčasne • Je potrebné opísať predmetnú oblasť vo forme tabuliek -- distribuovaný -- message_count v chatov limit 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 );

191

Všeobecne povedz o projekte — čo to bolo pre koncového používateľa?

191
/4