Lai kodu pareizi izpildīties: ieejas punkts -- galvenās pakotnes galvenā 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("Kļūda: gaidīts %q, saņemts %q\n", exp, act) ok = false } } if ok { fmt.Println("Visi testi veiksmīgi izpildīti") } }
Golang
Kāda ir atšķirība starp procesiem, pavedieniem un goroutines Go valodā?
Nosacījums Ir 3 būtības: lietotājs, čats, ziņa • Lietotājam ir vārds un reģistrācijas datums • Čatam ir nosaukums un izveidošanas datums • Ziņai ir teksts, autors un izveidošanas datums • Lietotājs var būt vairākos čatos vienlaikus • Ziņa obligāti pieder pie čata, tā nevar piederēt vairāk nekā vienam čatam vienlaikus • Jāapraksta joma tabulu veidā -- sadalīts -- message_count čatos ir ierobežots līdz 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 );
Runā kopumā par projektu — kas tas bija galapatērētājam?
Kas ir sacensību stāvoklis (race condition) Go? Sniedziet piemēru.
Kā iznīcināt procesu Linux? Ko darīt, ja kill pid nepalīdz?
Uzrakstiet SQL vaicājumu, lai parādītu autorus, kuriem ir vairāk nekā 10 grāmatas (tabulas: autori, grāmatas, daudz-pret-daudz saistība)
Kas ir EXPLAIN un EXPLAIN ANALYZE PostgreSQL, kāda ir atšķirība?
3 subjektas: lietotājs, čats, ziņa • Lietotājam ir vārds un reģistrācijas datums • Čatam ir nosaukums un izveidošanas datums • Ziņai ir teksts, autors un izveidošanas datums • Lietotājs var būt vairākos čatos vienlaikus • Ziņa obligāti pieder čatam un nevar piederēt vairāk nekā vienam čatam vienlaikus • Joma jāapraksta tabulu veidā
Pastāstiet par interesantu vai sarežģītu tehnisko uzdevumu, ko jūs risinājāt
Koda pārskatīšana: kešatmiņa Go ar mutex. Atrodiet problēmas un ierosiniet uzlabojumus. Nosacījums: lasīšanas/ieraksta slodze 80/20.
Ar kurām datu bāzēm jūs strādājāt visciešāk?
Ar kuru staku jūs visbiežāk strādājāt?
Kādi HTTP metodi pastāv? Kurš no tiem ir idempotents?
galvenais pakets importēt ( "crypto/md5" "fmt" ) var alfabēts = []rune{'a', 'b', 'c', 'd', '1', '2', '3'} func AtjaunotParoli(h []byte) string { return "" } func hashParole(i string) []byte { h := md5.Sum([]byte(i)) return h[:] } func main() { tests := []string{"a", "12", "abc333d"} ok := true for _, eks := range tests { h := hashParole(eks) akt := AtjaunotParoli(h) if akt != eks { fmt.Printf("Kļūda: gaidīts %q, saņemts %q\n", eks, akt) ok = false } } if ok { fmt.Println("Visi testi veiksmīgi izieti") } }
Aprakstiet HTTP pieprasījuma un atbildes struktūru. Kā tiek klasificēti atbildes kodi?
package main import ( "crypto/md5" "fmt" ) var alphabet = []rune{'a', 'b', 'c', 'd', '1', '2', '3'} func AtjaunotParoli(h []byte) string { return "" } func hashParole(in string) []byte { h := md5.Sum([]byte(in)) return h[:] } func main() { tests := []string{"a", "12", "abc333d"} ok := true for _, exp := range tests { h := hashParole(exp) act := AtjaunotParoli(h) if act != exp { fmt.Printf("Kļūda: gaidīts %q, saņemts %q\n", exp, act) ok = false } } if ok { fmt.Println("Visi testi veiksmīgi izpildījās") } } Lai pareizi palaistu kodu: ievades punkts -- funkcija main main paketē Uzdevums: Implementēt funkciju AtjaunotParoli, kas atjauno oriģinālo paroli, pamatojoties uz MD5 hash, kas sastāv no dotā alfabēta rakstzīmēm.
Kas tevi tagad motivē meklēt jaunu darbu?
Kāpēc apsverat jaunus piedāvājumus? Aktīva vai pasīva meklēšana?
Kā īstenot gludino slēgšanu Go pakalpojumā Kubernetes, ja tiek izvietota jauna versija?