Golang
Vazifa ishlab chiqarishga tayyor ekanligini qanday bilasiz?
O'z texnikangiz bilan ishlashni xohlaysizmi yoki ish beruvchidan texnika kerakmi?
Gorutina va oqim o'rtasidagi farq nima?
Qanday qilib chiqarilish jarayoni tashkil etilgan? So'nggi chiqarilish sizning ishtirokingiz bilan qanday o'tdi?
Kubernetesda REST API serveri (kod ombori) ishlay boshlashi uchun nima qilish kerak?
Scrum marosimlari nima?
Go'dan oldin qaysi dasturlash tillari bilan shug'ullandingiz va qachon dasturlashni boshladingiz?
Qaysi mezonlarga asoslanib yangi kompaniyani tanlaysiz? Ishda nima muhim bo'ladi?
Ma'lumotlar bazasidagi indekslar haqida va ularning juda ko'p bo'lishining kamchiliklari.
Go'da kontekst haqida gapir: nima uchun ishlatiladi, qanday ishlaydi bekor qilish?
Siz uchun ishda nima muhimroq: katta kompaniyada aniq va formalizatsiyalashgan vazifalar yoki kichik kompaniyada yuqori darajadagi mustaqillik va ijodkorlik? Qaysi vazifalar sizni ko'proq qiziqtiradi: yuqori noaniqlik darajasi bilan yoki chiziqli kod yozish bilan?
Bir protsedura yarating va undan SELECT qiling.
Qaysi muammolar paydo bo'lishi mumkin umumiy xotira bilan ishlashda? Race condition nima?
150 million foydalanuvchi, 75 million DAU, 225 million MAU, 1.2 million o'qish / 300k yozish QPS, 5 million bir vaqtning o'zida foydalanayotgan foydalanuvchilar, yillik 60 PB yangi ma'lumotlar, yillik 30% o'sish, P99 <200 ms o'qish uchun, <300 ms yozish uchun, SLA 99.95% ni qo'llab-quvvatlaydigan kengaytiriladigan xabar almashish tizimi loyihalashtirish. KONTEKST WhatsApp ga o'xshash tarqatilgan xabar tizimini loyihalashtirish, 1:1 va guruh chatlarini qo'llab-quvvatlaydigan, xabarlarni yetkazib berishni ta'minlaydigan, foydalanuvchilarning onlayn holatlarini ko'rsatadigan va multimedia fayllarini (foto, video, audio) uzatadigan tizim kerak. Tizim yuqori mavjudlik va past kechikishni ta'minlashi, yuqori parallelizmni qo'llab-quvvatlashi va global miqyosda kengayishi kerak. FUNKTSIONAL TALABLAR - Shaxsiy (1:1) va guruh chatlarini qo'llab-quvvatlash, ishtirokchilarni qo'shish/olib tashlash imkoniyati bilan - Matnli xabarlar va multimedia fayllarini yuborish va qabul qilish Nofunksional talablarga: - Xizmatlar yoki mijozlar darajasida end-to-end shifrlashning aniq amalga oshirilishi yo'q, umumiy yozuvdan tashqari. - chat_id yoki user_id bo'yicha sharding va replikatsiya haqida aniq tavsif yo'q, kengaytirilish va nosozliklarga chidamlilik uchun. - Offline sinxronizatsiya va yetkazib berish qabul qilish uchun aniq komponent yoki mexanizm yo'q. - Yukni taqsimlash qanday amalga oshirilishini, ayniqsa shiddatli yuklamalarda, qanday ta'minlanishini aniqlash qiyin. **E'tibor berilishi kerak bo'lgan muhim nuqtalar:** (Diagramda Load Balancer, API Gateway, Message Queue, Service, Cache, Database, Object Storage va CDN bilan arxitektura ko'rsatilgan)
package main import ( "fmt" "time" ) func main() { ch := make(chan int) go func() { ch <- 1 }() time.Sleep(time.Millisecond * 500) close(ch) for i := range ch { fmt.Println(i) } time.Sleep(time.Millisecond * 100) }
Rasm va konteyner o'rtasidagi farq nima?
Menga savolingiz bormi?
// mahsulotlar jadvali: // ID | cnt_view // ----------- // 1 | 100 // ikki foydalanuvchi bir vaqtning o'zida id = 1 bo'lgan mahsulotni ko'rishni boshladilar // va bizning bazamizda 2 parallel tranzaksiya ishga tushirildi // natija nima bo'ladi? postgresql func IncrementView(ctx context.Context, db *sql.DB, id int64) error { tx, err := db.BeginTx(ctx, nil) if err != nil { return err } defer tx.Rollback() var cnt int err = tx.QueryRowContext(ctx, "SELECT cnt_view FROM goods WHERE id = $1", id, ).Scan(&cnt) if err != nil { return err } cnt++ _, err = tx.ExecContext(ctx, "UPDATE goods SET cnt_view = $1 WHERE id = $2", cnt, id, ) if err != nil { return err } return tx.Commit() }
Go'da funktsiya va metod o'rtasidagi farq nima? Xotira bilan ishlash nuqtai nazaridan texnik farq nima?
Yangi kompaniya tanlashda siz uchun nima muhim bo'ladi?