Sobes.tech

Golang

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") } }

194

Kāda ir atšķirība starp procesiem, pavedieniem un goroutines Go valodā?

191

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 );

191

Runā kopumā par projektu — kas tas bija galapatērētājam?

191

Kas ir sacensību stāvoklis (race condition) Go? Sniedziet piemēru.

188

Kā iznīcināt procesu Linux? Ko darīt, ja kill pid nepalīdz?

187

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)

187

Kas ir EXPLAIN un EXPLAIN ANALYZE PostgreSQL, kāda ir atšķirība?

186

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ā

185

Pastāstiet par interesantu vai sarežģītu tehnisko uzdevumu, ko jūs risinājāt

183

Koda pārskatīšana: kešatmiņa Go ar mutex. Atrodiet problēmas un ierosiniet uzlabojumus. Nosacījums: lasīšanas/ieraksta slodze 80/20.

180

Kādi HTTP metodi pastāv? Kurš no tiem ir idempotents?

173

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") } }

172

Aprakstiet HTTP pieprasījuma un atbildes struktūru. Kā tiek klasificēti atbildes kodi?

170

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.

165

Kāpēc apsverat jaunus piedāvājumus? Aktīva vai pasīva meklēšana?

163

Kā īstenot gludino slēgšanu Go pakalpojumā Kubernetes, ja tiek izvietota jauna versija?

163
/4