Inbox va Outbox shablonlarini ishlatdingizmi?
Golang
Vazifa: «Timeout bilan ping-pong» pingPong nomli funktsiya yozing: - Ikki goroutine ishga tushiring: biri "ping" xabarlarini, ikkinchisi — "pong". - Goroutine'lar xabarlarni umumiy kanal orqali qat'iy tartibda almashishi kerak. - Almashinish 3 sekund davom etadi, so'ngra dastur tugashi kerak (g'amxo'rlik bilan yopish). - Timeout bilan bekor qilish uchun kontekstdan foydalaning. - Har bir xabarni ekranga, boshlang'ichdan boshlab millisekundlarda vaqt bilan birga chiqarib boring. Kutish mumkin bo'lgan chiqish misoli: 0ms: ping
Oddiy jonli kodlash vazifasi (asosiy raqobat) Shart: fetchAll(urls []string) map[string]string funktsiyasini yozing, u har bir URL uchun HTTP GET so'rovini raqobat bilan bajaradi va kalit - URL, qiymat - javob matni (qator) bo'lgan xaritani qaytaradi. Agar so'rov muvaffaqiyatsiz bo'lsa (xato, 200 emas), qiymat bo'sh satr bo'ladi. Cheklovlar: - Tashqi kutubxonalar ishlatilmasligi kerak (faqat standartlar). - Imzo o'zgartirilmasligi kerak. - Dastur http.Get'da panik bo'lsa, yiqilmasligi kerak. Kirish misoli: ["[link]" "[link]" "[link]"]
asosiy paket import ( "fmt" ) func a(p *string) { s2 := "string2" *p = s2 } func main() { str1 := "string1" p := &str1 fmt.Println(*p) a(&p) fmt.Println(*p) }
Boshqarmasiz 1000 element bo'lish uchun slice elementlarini to'ldiring.
Jurnallar qayerda saqlangan?
Idempotentlikni qanday ta'minladilar?
Nima aytish kerak intervyu beruvchiga (agar so'rasa) "Men worker pool bilan ishlardim, unda ishchilar soni belgilangan, vazifalar uchun kanal va sync.WaitGroup bo'ladi. Ishchilar so'rovlarni bajaradi, va timeout hamda bekor qilish kontekst orqali boshqariladi. Natijalarni, mutex bilan himoyalangan bufferga yig'aman (yoki alohida kanal orqali)." Endi sening navating Bu chatda kod yoz. Men tekshiraman va fikr-mulohaza beraman. Qayerdan boshlashni bilmasang, maslahat so'rang. Omad!
Tarqatilgan izlash haqida eshitganmisiz?
// barcha elementlar slice da noyob bo‘lishi kerak + umumiy 1000 elementdan iborat bo‘lishi kerak // dastur time.sleep sababli ortiqcha to‘xtab qolmasligi kerak func main() { checkIncrement := map[int]int32{} var data []int for i := 0; i < 1000; i++ { go func() { data = append(data, i) if _, found := checkIncrement[i]; found { fmt.Println(i) panic("takroriy inkrement") } checkIncrement[i] = 1 }() } time.Sleep(2 * time.Second) fmt.Println(len(data)) }
Pointer nima va agar funksiyaning argumenti pointer bo'lsa, nima bo'ladi?
So'nggi loyihang haqida gapir.
DELETE va TRUNCATE o'rtasidagi farq nima?
Postgres'dagi bloklar haqida gapir.
Redisni qanday ishlatdingiz?