Sobes.tech

Golang

Autentifikatsiya va ruxsatnoma tizimlarini joriy etish va sozlash bo'yicha tajribangiz qanday?

Junior — Middle
248

Algoritmning vaqt va xotira bo'yicha murakkabligi qanday?

247

Algoritmik bo'lim: LeetCode o'rta va yuqori darajadagi ikki vazifa. Davomiyligi — ikki vazifa uchun 1,5 soat.

247

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

246

""" Kinoda joylar bitta qator shaklida joylashgan. Yangi kelgan tomoshabin joyni tanlaydi, qator bo'ylab boshqa tomoshabinlardan maksimal masofada o'tirish uchun. Ya'ni, u joydan, qaysi joyga o'tiradi, unga eng yaqin tomoshabinga bo'lgan masofa maksimal bo'lishi kerak. Har doim bo'sh joylar borligini va kamida bitta tomoshabin o'tirganligini kafolatlaydi. Berilgan joylar qatori (nol va birlardan iborat massiv) uchun, tanlangan joydan eng yaqin tomoshabinga bo'lgan masofani (o'rindiqlar orasidagi raqamlar 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 [0, 0, 0, 1] [1, 0, 0, 0] place = ((right - left) / 2) """ func maxPlaces(arr []int) int { }

245

/* 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 }

244

L4 va L7 balanslovchi o'rtasidagi farq nima?

243

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

Junior — Middle
242

/* * Butun butun raqamlar massiv va X soni berilgan, * eng uzun bo'sh bo'lmagan bo'lakni topish kerak, uning minimal qiymati X. * Bunday bo'lakning uzunligini yoki -1 ni qaytarish. */

241

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

240

Map ma'lumotlar tuzilmasida kalit bo'yicha element qo'shish operatsiyasining bajarilish vaqtini qanday aniqlash mumkin?

Junior — Middle
237

Texnik suhbat uchun qaysi loyihani tanlash va uni qanday tasvirlash kerak?

236

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

Junior — Middle
235

[ism] ko'rsatdi: 20-chiziqda uniq yagona belgilar sonini emas, boshqa narsani o'z ichiga oladi. Aniq nima?

233

Ma'lumotlarni o'qishda sekundiga bajarilgan operatsiyalar soni bo'yicha qanday ko'rsatkichga erishdingiz yoki tahlil qildingiz?

Middle — Middle+
233

Ma'lumotlarni yozish paytida sekundiga so'rovlar ko'rsatkichi qanday edi?

Junior — Middle
232

Nima uchun ikkita if tekshiruvi kerak (79-chi satrda va len(buf)==MaxItems bo'lgan satrda), bitta emas?

231

Jamoa ichida testlar qanday tuzilgan — kim nima yozadi, qaysi qamrov, E2E bormi?

231

// N uzunligida ikkita butun sonlar massivlari uchun, // 1 dan N gacha bo‘lgan barcha K uchun, K uzunlikdagi prefikslaridagi umumiy sonlar sonini hisoblang. // Massivdagi sonlar takrorlanishi mumkin, kesishma ko‘paytmasini hisobga olmadan hisoblanadi. // A massivining K uzunlikdagi prefiksi A massivining birinchi K elementidir // A [1, 1] => [1], [1, 1] // B [1, 1] => [1], [1, 1] // R [1, 1] // [1, 2, 5] => [1], [1, 2], [1, 2, 5] // [1, 5, 4] => [1], [1, 5], [1, 5, 4] // [1, 1, 2]

230

// Ikki tartiblangan ketma-ketliklar berilgan, ular ketma-ketliklar tartibida o'sib boradi. // Birinchi ketma-ketlikdagi, ikkinchisida bo'lmagan barcha elementlarni qaytarish kerak. // 0 <= N <= 10^6 // -10^9 <= a[i] <= 10^9 // [1] // [2, 3, 4, 5, 6] // [1] // [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ...] // [1] // [2, 3, 4, 5, 6, 7, 8] func filter(first []int, second []int) []int { res := make([]int, 0, len(first)) i, j := 0, 0 for i < len(first) && j < len(second) { if first[i] < second[j] { result = append(result, first[i]) i++ } else if first[i] > second[j] { j++ } else { i++ j++ } } for i < len(first) { result = append(result, first[i]) i++ } return result }

228
/11