Sobes.tech

Кои езици за програмиране използвате освен Go?

246

Работите ли сега или не, и в какъв формат: офис, хибриден, дистанционен?

246

/* Ние трябва да прехвърлим данни от източник към потребител. Източникът предоставя данните на малки пакети (~десет записа), докато потребителят работи по-ефективно с по-големи пакети. Реален пример е прехвърлянето на данни от Kafka тип опашки към базата данни Clickhouse. Източник: - Почти безкраен. - Източникът никога не връща повече от MaxItems записи в едно извикване на Next. - В рамките на една "сесия" (едно извикване на функцията Pipe), източникът връща нови данни при всяко Next. - След рестарт, източникът ще започне от предишната "потвърдена" позиция, указана с cookie. Затова, всяка стойност на cookie, която Next връща, след като данните са запазени в приемника, трябва да бъде потвърдена с извикване на Commit, в същия ред, в който са били върнати от Next. Приемник: - Не може да обработи повече от 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 }

244

Кои показатели за ефективност използвахте при оценката на работата си в последния проект?

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 }

242

""" Местата в киното са разположени в една редица. Новодошлият зрител избира място, за да седне възможно най-далеч от останалите зрители в редицата. Тоест, разстоянието от това място, където ще седне зрителят, до най-близкия зрител трябва да бъде максимално. Гарантира се, че винаги има свободни места в редицата и че вече има поне един зрител. Напишете функция, която по дадена редица места (масив от нули и единици) ще върне разстоянието (броя на интервалите между седалките) от избраното място до най-близкия зрител. [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 { }

241

Какъв е вашият опит в внедряването и настройката на системи за удостоверяване и авторизация?

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

238

/* * Даден е масив от цели числа и число X, * трябва да се намери най-дългият непразен подотрезък, чийто минимум е X. * Върнете дължината на такъв подотрезък или -1, ако няма. */

238

Как се определя времето за изпълнение на операцията за добавяне на елемент по ключ в структурата данни Map?

Junior — Middle
235

Кой проект да изберете за техническо интервю и как да го опишете?

234

Как визуално или алгоритмично да определите, че елементът е уникален в структурата данни Map?

Junior — Middle
231

Защо са необходими две проверки if (на ред 79 и на реда с len(buf)==MaxItems), а не една?

231

// За два масива от цели числа с дължина N, // за всички K от 1 до N, изчислете броя на общите числа в префиксите с дължина K. // Числата в масива могат да се повтарят, пресечението се счита без да се вземат предвид кратностите. // Префикс с дължина K на масива A е първите K елемента на масива A // 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

Какъв беше показателят за заявки в секунда, достигнат при записването на данни?

Junior — Middle
230

[име] посочи: на ред 20 uniq не съдържа броя на уникалните символи, а нещо друго. Какво точно?

229

Какъв показател за броя на операциите в секунда при четене на данни сте достигнали или анализирали?

Middle — Middle+
229

Как да преместите прозореца в алгоритъма за плъзгащ прозорец?

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
/11