Jak je uvnitř uspořádán slice v Go? Jak funguje funkce append?
Golang
Je nutné navrhnout architekturu backendu pro messenger (Slack, Teams, Mattermost). Požadavky a omezení: pouze 1x1 chaty, bez skupinových chatů pouze textové zprávy, bez příloh služba je dostupná přes internet až 10 000 uživatelů v systému zprávy musí být doručovány rychle, během několika sekund je třeba zachovat pořadí zpráv, bez duplicit je možné posouvat chat do minulosti, tj. ukládat zprávy klienti jsou mobilní zařízení, jejich návrh není nutný navrhování autorizace není nutné
Co je to entita Service v Kubernetes?
Kolik let komerční zkušenosti s vývojem na Go?
Pověz mi o zajímavém nebo složitém technickém úkolu, který jsi řešil
Máme databázi uživatelských hesel, hesla jsou hashována (funkce hashPassword), a je také známa sada znaků, které mohou být v heslech použity (proměnná alphabet). Naším úkolem je implementovat funkci RecoverPassword tak, aby obnovila heslo podle známého hashe a TestRecoverPassword byl úspěšný. Základní požadavky: Libovolná metoda je povolena 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() {
balíček hlavní import ( "crypto/md5" "fmt" ) var alphabet = []rune{'a', 'b', 'c', 'd', '1', '2', '3'} func ObnovitHeslo(h []byte) string { return "" } func hashHeslo(vstup string) []byte { h := md5.Sum([]byte(vstup)) return h[:] } func main() { tests := []string{"a", "12", "abc333d"} ok := true for _, exp := range tests { h := hashHeslo(exp) act := ObnovitHeslo(h) if act != exp { fmt.Printf("Chyba: očekáváno %q, kapott %q\n", exp, act) ok = false } } if ok { fmt.Println("Všechny testy úspěšně proběhly") } }
Jaké HTTP metody existují? Které z nich jsou idempotentní?
Jak bude probíhat proces odesílání a přijímání zpráv mezi dvěma klienty? Popište úplný tok.
S jakými databázemi jste pracoval nejblíže?
Recenze kódu: cache v Go s mutexem. Najděte problémy a navrhněte vylepšení. Podmínka: zatížení čtení/zápis 80/20.
package main import ( "crypto/md5" "fmt" ) var alphabet = []rune{'a', 'b', 'c', 'd', '1', '2', '3'} func ObnovitHeslo(h []byte) string { return "" } func hashHeslo(in string) []byte { h := md5.Sum([]byte(in)) return h[:] } func main() { tests := []string{"a", "12", "abc333d"} ok := true for _, exp := range tests { h := hashHeslo(exp) act := ObnovitHeslo(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") } } Pre správne spustenie kódu: vstupný bod -- funkcia main v balíku main Úloha: Implementujte funkciu ObnovitHeslo, ktorá na základe MD5 hash obnoví pôvodné heslo pozostávajúce zo znakov daného abecedy.
Jak implementovat graceful shutdown Go služby v Kubernetes při nasazení nové verze?
Popište strukturu HTTP požadavku a odpovědi. Jak jsou klasifikovány kódy odpovědí?
Co chceš teď — jaká jsou tvá očekávání od nové práce?
Proč zvažujete nové nabídky? Aktivní nebo pasivní hledání?
Jaké tabulky a pole jsou potřeba v databázi PostgreSQL pro tento messenger?
Co bylo nejtěžší a nejzajímavější při přechodu z monolitu na mikroservisy?
Co znamená, když proces v top ukazuje 150 % CPU? Je to normální?
Napsali vývojáři nějaké testy?