Sobes.tech

Азыр иштеп жатасызбы же жокпу, жана кайсы форматта: кеңсе, гибрид, алыстан?

246

Алгоритмдин убакыт жана эс тутум боюнча татаалдыгы кандай?

244

/* Бізге деректерді белгілі бір көзден белгілі бір тұтынушыға беру керек. Бұл кезде көз шағын топтамалармен береді (~ он шақты жазбалар), ал тұтынушы үлкен батчтармен тиімді жұмыс істейді. Шынайы мысал - Kafka тәрізді кезектерден деректерді Clickhouse базасына жеткізу. Көз: - Шартты түрде шексіз. - Көз бір шақыруда MaxItems-ден көп жазбаны қайтармайды. - Бір "сессия" (бір Pipe функциясының шақыруы) ішінде көз әр шақыруда жаңа деректер қайтарады. - Алайда, қайта іске қосқаннан кейін көз алдыңғы "расталған" позициядан бастайды, ол cookie арқылы анықталады. Сондықтан, әрбір cookie мәні, Next шақыруы қайтарғаннан кейін, қабылдауда сақталғаннан кейін, Commit арқылы бекітілуі керек, және ол дәл сол тәртіпте орындалуы керек, қайсысы бірінші қайтарылса. Қабылдаушы: - Бір ретте MaxItems-ден көп өңдей алмайды. Негізгі деңгей: func Pipe(p Producer, c Consumer) error функциясын жүзеге асыру керек, ол деректерді көзден оқиды, оларды MaxItems-ден аспайтын буферге топтастырады және қабылдағышқа сақтайды, содан кейін прогресті көзде бекітеді. */ const MaxItems = 9999 type Producer interface { // Next қайтаруы керек: // - өңделетін элементтер тобы // - растайтын cookie // - қате Next() (items []any, cookie int, err error) // Commit - өңделген деректер тобын белгілеу үшін 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 }

242

Акыркы долбоордо ишиңизди баалоо үчүн кайсы натыйжалуулук көрсөткүчтөрүн колдондуңуз?

Junior — Middle
242

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 }

240

Тастыктоо жана уруксат берүү системаларын ишке киргизүү жана конфигурациялоо боюнча сиздин тажрыйбаңыз кандай?

Junior — Middle
240

L4 жана L7 жүктү теңдештирүүчүсүнүн айырмасы эмнеде?

239

""" Кинотеатрдагы орундар бир сапта жайгашкан. Жаңы келген көрүүчү орун тандайт, системеден эң алыс отуруу үчүн. Демек, отурган орундан, аларга эң жакын көрүүчүгө чейинки аралык максималдуу болушу керек. Ар дайым орун бош экендиги жана кеминде бир көрүүчү отургандыгы кепилденет. Берилген орундар саптары (нөлдөр жана бирлердин массиви) үчүн, тандалган орундан эң жакын көрүүчүгө чейинки аралыкты (орундар арасындагы аралык санын) кайтарган функция жазгыла. [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 { }

239

""" Кинотеатрдагы орундар бир сапта жайгашкан. Жаңы келген көрүүчү орунду тандоодо, сапта калган башка көрүүчүлөрдөн эң алыс отуруу үчүн тандайт. Демек, ошол орундан, алардын эң жакын көрүүчүсүнө болгон аралык максималдуу болушу керек. Ар дайым бош орундар бар жана кеминде бир көрүүчү отургандыгы кепилденет. Берилген орундар сапы (нөлдөр жана бирлер массиви) боюнча, тандалган орундан эң жакын көрүүчүсүнө болгон аралыкты (орундар арасындагы боштуктардын саны) кайтарган функция жазгыла. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 """

237

/* * Бардык бүтүн сандар массиви жана X саны берилген, * эң узун бош эмес бөлүктү табуу керек, анын минималдуу мааниси X. * Мындай бөлүктүн узундугун кайтарыңыз же -1 эгер андай болбосо. */

236

Техникалык интервью үчүн кайсы долбоорду тандап, аны кантип сүрөттөш керек?

234

Map маалыматтар түзүмүндө ачкыч боюнча элемент кошуу операциясынын аткаруу убактысы кандай аныкталат?

Junior — Middle
233

Map маалыматтардын түзүмүндө элементтин уникалдуулугун визуалдык же алгоритмдик жол менен кантип аныктоого болот?

Junior — Middle
231

Маалыматтарды жазуу учурунда секундуна сурактардын көрсөткүчү кандай болду?

Junior — Middle
230

Эмне үчүн эки жолу if текшерүү керек (сызык 79 жана len(buf)==MaxItems менен), бирөөсү эмесби?

228

[аты] көрсөткөн: 20-чы сапта uniq уникал белгилердин санын камайттырбайт, башка нерсе. Так точно эмне?

227

// N узундугуна эки бүтүн сан массивдери үчүн, // 1ден Nге чейин бардык K үчүн, K узундуктагы алдыңкы бөлүктөрдөгү жалпы сандар санын эсептеңиз. // Массивдеги сандар кайталанышы мүмкүн, кесилиштер көбөйтүүлөрдү эске албастан эсептелет. // A массивинин K узундуктагы алдыңкы бөлүгү — бул массивдин биринчи K элементтери // 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]

226

// Берилген эки сортталган бүтүн сандар тизмеги өсүүчү тартипте. // Биринчи тизмектеги, экинчи тизмекте жок бардык элементтерди кайтаруу керек. // 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 }

226

Эң кыйын жана кызыктуу тапшырмаңыз жөнүндө айтып бериңиз, өзгөчө архитектуралык тажрыйбаңыз жөнүндө.

225

Аз азыр Москвада жашайсыңбы? Эмне шаарды карап жатасың? Гибриддүү иш форматын карап жатасыңбы? Издөө кандай стадиядасың?

223
/11