Go'da jarayonlar, iplar va goroutinlar o'rtasidagi farq nima?
Golang
Shart 3 ta mavjudlik mavjud: foydalanuvchi, chat, xabar • Foydalanuvchining ismi va ro'yxatdan o'tish sanasi bor • Chatning nomi va yaratilgan sanasi bor • Xabar matn, muallif va yaratilgan sana bilan • Foydalanuvchi bir vaqtning o'zida bir nechta chatlarda bo'lishi mumkin • Xabar majburiy ravishda chatga tegishli bo'lishi kerak, u bir vaqtning o'zida bir nechta chatga tegishli bo'lishi mumkin emas • Domenni jadval shaklida tasvirlash kerak -- taqsimlangan -- message_count chatlarda 100 bilan cheklangan --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 );
Loyihaga umumiy tarzda gapiring — bu oxirgi foydalanuvchi uchun nima edi?
Bizda foydalanuvchilar parollari bilan ma'lumotlar bazasi bor, parollar hashlangan (hashPassword funksiyasi bilan), va shuningdek, parollarda ishlatilishi mumkin bo'lgan belgilarning to'plami (alphabet o'zgaruvchisi) ma'lum. Bizning vazifamiz, bilinen hash asosida parolni tiklash uchun RecoverPassword funksiyasini amalga oshirish va TestRecoverPassword muvaffaqiyatli bo'lishini ta'minlash. Asosiy talablar: Har qanday usul bilan yechim topish mumkin 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() {
Linuxda jarayonni qanday o'ldirish mumkin? kill pid yordam bermasa nima qilish kerak?
10 dan ortiq kitobga ega mualliflarni chiqarish uchun SQL so'rovi yozing (jadval: mualliflar, kitoblar, ko'pdan-ko'pga bog'lanish)
Go tilida raqobat holati (race condition) nima? Misol keltiring.
3 ta entity mavjud: foydalanuvchi, chat, xabar • Foydalanuvchining ismi va ro'yxatdan o'tish sanasi bor • Chatning nomi va yaratilgan sanasi bor • Xabar matn, muallif va yaratilgan sanaga ega • Foydalanuvchi bir vaqtning o'zida bir nechta chatlarda bo'lishi mumkin • Xabar majburiy ravishda chatga tegishli bo'lishi kerak va bir vaqtning o'zida bir nechta chatga tegishli bo'lishi mumkin emas • Domenani jadval shaklida tasvirlash kerak
PostgreSQL'da EXPLAIN va EXPLAIN ANALYZE nima, ularning farqi nima?
Qiziqarli yoki murakkab texnik vazifa haqida gapirib bering, uni siz hal qilgansiz
Qaysi ma'lumotlar bazalari bilan eng yaqin ishladingiz?
Qaysi to'plam bilan eng ko'p ishladingiz?
Kodni ko'rib chiqish: Go tilida mutex bilan kesh. Muammolarni toping va takomillashtirishlarni taklif qiling. Shart: o'qish/yazish yuklamasi 80/20.
Qaysi HTTP usullari mavjud? Ularning qaysilari idempotent?
paket asosiy import ( "crypto/md5" "fmt" ) var alphabet = []rune{'a', 'b', 'c', 'd', '1', '2', '3'} func PasswordiQaytaTiklash(h []byte) string { return "" } func hashPassword(kiritish string) []byte { h := md5.Sum([]byte(kiritish)) return h[:] } func main() { tests := []string{"a", "12", "abc333d"} ok := true for _, exp := range tests { h := hashPassword(exp) act := PasswordiQaytaTiklash(h) if act != exp { fmt.Printf("Xato: kutilyapti %q, olinmoqda %q\n", exp, act) ok = false } } if ok { fmt.Println("Barcha testlar muvaffaqiyatli o'tdi") } }
HTTP so'rov va javob tuzilmasini tavsiflang. Javob kodlari qanday tasniflanadi?
package main import ( "crypto/md5" "fmt" ) var alphabet = []rune{'a', 'b', 'c', 'd', '1', '2', '3'} func QaytaTiklashParol(h []byte) string { return "" } func hashParol(in string) []byte { h := md5.Sum([]byte(in)) return h[:] } func main() { tests := []string{"a", "12", "abc333d"} ok := true for _, exp := range tests { h := hashParol(exp) act := QaytaTiklashParol(h) if act != exp { fmt.Printf("Xato: kutilyapti %q, olinyapti %q\n", exp, act) ok = false } } if ok { fmt.Println("Barcha testlar muvaffaqiyatli o'tdi") } } Kodning to'g'ri ishlashi uchun kirish nuqtasi -- main funktsiyasi main paketida Vazifa: MD5 hashidan asl parolni, berilgan alfavitdan belgilardan iborat, tiklash uchun funksiyani amalga oshiring.
Kubernetesda yangi versiya joylashtirilganda Go-xizmatining ehtiyotkorlik bilan yopilishini qanday amalga oshirish mumkin?
Nima uchun yangi takliflarni ko'rib chiqyapsiz? Faol yoki passiv qidiruv?
Hozir nima istaysiz — yangi ishdan qanday kutishlaringiz bor?