Sobes.tech

Golang

Qaysi ma'lumotlar bazasi loyihasi siz amalga oshirgan yoki qo'llab-quvvatlagan eng katta loyiha bo'ldi?

Junior — Middle
294

Turli tashkilotlarda suhbat jarayonining qaysi bosqichlarida bu savol ko'pincha beriladi?

Intern — Junior
282

PostgreSQL ma'lumotlar bazasiga so'rovlar qanday amalga oshiriladi?

Junior — Middle
266

Ma'lumotlarga sekundiga nechta yozish so'rovlari kelardi?

251

Xizmat qancha instans/ konteynerda ishlagan?

245

Tashqi xizmatlar va tizimlar uchun mijozlar qaysi qatlamga joylashtiriladi?

244

Ko'p ipli va parallel hisoblashlarni qo'llagan dasturlarni ishlab chiqishda tajribangiz qanday?

Junior — Middle
235

Hostlar haqida ma'lumot berishingiz mumkinmi? Nechta host va nechta konteyner ishga tushirilgan?

228

Grafanada ma'lumotlarni ulash va ko'rsatish qanday amalga oshiriladi?

Junior — Middle
225

Ishlab chiqqan eng uzoq davom etgan loyiha nima edi?

Junior — Middle
222

Map ma'lumotlar tuzilmada elementning noyobligini vizual yoki algoritmik tarzda qanday aniqlash mumkin?

Junior — Middle
222

""" Kinozali joylashgan joylar bir qator bo'lib joylashgan. Yangi kelgan tomoshabin o'z joyini tanlaydi, qolgan tomoshabinlardan maksimal uzoqlikda o'tirish uchun. Ya'ni, u joydan, eng yaqin tomoshabinga bo'lgan masofa maksimal bo'lishi kerak. Har doim bo'sh joylar borligi va kamida bitta tomoshabin o'tirganligi kafolatlangan. Berilgan joylar qatorida (nol va birlardan iborat) tanlangan joydan eng yaqin tomoshabinga bo'lgan masofani (o'rindiqlar orasidagi bo'sh joylar soni) qaytaradigan funktsiya yozing. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 """

215

/* Biz ma'lumotlarni manbadan iste'molchiga o'tkazishimiz kerak. Manba kichik partiyalar (taxminan o'n yozuv) bilan ma'lumotlarni taqdim etadi, iste'molch esa katta partiyalar bilan samaraliroq ishlaydi. Haqiqiy misol - Kafka turidagi navbatlardan Clickhouse bazasiga ma'lumot uzatish. Manba: - deyarli cheksiz. - Manba har doim Next chaqiruvida MaxItems dan ko'p yozuvlarni qaytirmaydi. - Bir "sessiya" (bir Pipe funksiyasi chaqiruvi) davomida, manba har Next chaqiruvida yangi ma'lumotlarni qaytaradi. - Biroq, qayta ishga tushirilgandan so'ng, manba avvalgi "tasdiqlangan" pozitsiyadan, cookie bilan belgilangan joydan boshlanadi. Shuning uchun, har bir cookie qiymati, Next qaytarib bergandan so'ng, ma'lumotlar qabul qiluvchiga saqlangandan keyin, Commit chaqiruvi bilan tasdiqlanishi kerak, va ular Next tomonidan qaytarilgan tartibda bo'lishi shart. Qabul qiluvchi: - Bir vaqtning o'zida MaxItems dan ko'p ishlov berolmaydi. Asosiy daraja: Kerak bo'lsa, func Pipe(p Producer, c Consumer) error funksiyasini amalga oshiring, bu funktsiya manbadan ma'lumotlarni o'qiydi, ularni MaxItems o'lchamdagi bufferga guruhlaydi va qabul qiluvchiga saqlaydi, so'ngra manbada progressni tasdiqlaydi. */ const MaxItems = 9999 type Producer interface { // Next quyidagilarni qaytaradi: // - ishlov beriladigan elementlar partiyasi // - tasdiqlash uchun cookie // - xato Next() (items []any, cookie int, err error) // Commit, ma'lumotlar partiyasini ishlov berilgan deb belgilash uchun ishlatiladi Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { var buf []any var cookies []int for { items, cookie, err := p.Next() if err != nil { return err } buf = append(buf, items...) cookies = append(cookies, cookie) if len(buf) >= MaxItems { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } buf = buf[:0] cookies = nil } } if len(buf) > 0 { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } } return nil }

214

Biznes mantiqini bajaradigan, tashqi xizmat (Google) ga chaqiradigan va natijani ma'lumotlar bazasiga saqlaydigan so'rov uchun arxitekturani qanday tashkil qilish mumkin? Yuqoridan pastga qarab qatlamlarga bo'ling.

214

Have hisoblagichini kamaytirish yoki oshirish uchun qanday tamoyilga amal qilish kerak?

212

So'nggi loyihada ish faoliyatingizni baholash uchun qanday samaradorlik ko'rsatkichlarini ishlatdingiz?

Junior — Middle
204

Hozir ishlayapsizmi yoki yo'qmi, va qanday formatda: ofis, gibrid, masofadan?

201

func countSubs(s string) int { result := 0 left := 0 hm := make(map[rune]int) n := len(s) for right := 0; right < n; right++ { hm[s[right]]++ for hm[s[right]] > 1 { hm[s[left]]-- if hm[s[left]] == 0 { delete(hm, s[left]) } left++ } result += (right - left + 1) } return result }

200

/* Biz ma'lumotlarni manbadan iste'molchiga o'tkazishimiz kerak. Manba kichik partiyalar (~o'n yozuv) shaklida ma'lumotlarni taqdim etadi, holbuki, iste'molchi katta partiyalar (~ming yozuv) bilan ishlashni afzal ko'radi. Haqiqiy misol - Kafka turidagi navbatlardan ma'lumotlarni Clickhouse bazasiga uzatish. Manba: - deyarli cheksiz. - Manba har doim Next chaqiruvida MaxItems dan ko'p yozuvlarni qaytirmaydi. - Bir "sessiya" (bir Pipe funksiyasi chaqiruvi) davomida, manba har chaqiruvida yangi ma'lumotlarni qaytaradi. - Biroq, qayta ishga tushirilgandan so'ng, manba avvalgi "tasdiqlangan" pozitsiyadan, cookie bilan belgilangan joydan boshlanadi. Shuning uchun, Next tomonidan qaytarilgan har bir cookie qiymati, ma'lumotlar qabul qiluvchiga saqlangandan so'ng, Commit chaqiruvi bilan tasdiqlanishi kerak, vaqti-vaqti bilan Next tomonidan qaytarilgan tartibda. Qabul qiluvchi: - Bir vaqtning o'zida MaxItems dan ko'p ishlay olmaydi. Asosiy daraja: func Pipe(p Producer, c Consumer) error funksiyasini amalga oshirish talab etiladi, bu manbadan ma'lumotlarni o'qib, ularni MaxItems dan oshmaydigan bufferga to'playdi va qabul qiluvchiga saqlaydi, so'ngra manbada progressni tasdiqlaydi. Qiyinchilik: Next, Process va Commit metodlari tarmoq chaqiriqlari bilan bog'liq bo'lib, juda uzoq davom etishi mumkin. Jarayonni tezlashtirish uchun, o'qish, yozish va progressni tasdiqlash jarayonlarini parallel ravishda amalga oshirish kerak. Shunday qilib, Process yoki Commit davomida, manbadan o'qish va yangi bufferni shakllantirish davom etadi. */ const MaxItems = 9999 type Producer interface { // Next quyidagilarni qaytaradi: // - ishlash uchun elementlar partiyasi // - tasdiqlash uchun cookie // - xato Next() (items []any, cookie int, err error) // Commit, ma'lumotlar partiyasini ishlangan deb belgilash uchun ishlatiladi Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { // TODO }

196
/11