Sobes.tech

// код за функцията best() // с обработка на грешки при липса на наличен бекенд

143

На какъв програмен език работите? Защо възникнаха затруднения със синтаксиса?

143

/* Трябва да прехвърлим данни от източник към потребител. Източникът предоставя данни на малки пакети (~десет записа), докато потребителят работи по-ефективно с големи пакети (~хиляда записа). Реален пример е прехвърлянето на данни от опашки тип 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 { // TODO }

143

Нека поговорим за микросервизна архитектура. Какво беше по-често напоследък: поддръжка или разработка?

142

Готови ли сте при необходимост или по лични желания да преминете към друг програмен език?

142

4 - бързо приемане на входящи задачи, 5 - връщане на резултата от задачата по заявка 6 - ако няма резултат, връщане на съответния статус /* Процесор - услуга, която изпълнява дълга, ресурсно-интензивна операция. Вече е реализирана Грешките, които връща, са изключително свързани с неправилни входни данни, стабилни са и повторното им искане е безсмислено */ type Processor interface { Process([]byte) ([]byte, error) } /* Предполагаме, че имаме генератор на уникални идентификатори (например UUID). Генераторът гарантира, че няма да има сблъсъци */ type ID string // func NewID() ID /* Планировчикът приема задачи от клиентите, ги поставя в опашка и започва обработката. Осигурява, че не повече от 'threads' метода за обработка работят едновременно Позволява да се провери статусът на задачата и да се получи резултатът не блокира публичните си методи за обработка */ type Scheduler struct { processor Processor } func NewScheduler( prc Processor, threads int, ) *Scheduler { // логика за инициализация return &Scheduler{ processor: prc, } } func (s *Scheduler) Queue(request []byte) ID { // реализиране return "" }

141

Как да проверите дали прозорецът съдържа всички необходими символи?

139

Използвали ли сте публични облаци? Ако да, кои доставчици и услуги?

139

Имали ли сте опит в писането на програми с многонитови или асинхронни операции?

138

Разкажете ни за последните си проекти и използваната технологична стека.

138

// код за функцията best() // с обработка на грешки при липса на наличен бекенд

138

Правилно ли е, че в момента живеете в [град] и ще ви бъде удобно да работите в хибриден формат с посещения в офиса?

135

Разкажи какво се случва в крайна сметка — как натрупваме буфера?

135

Нека разгледаме пример: first=[1,1,2], second=[1,2]. Какво трябва да върне вашият алгоритъм и работи ли правилно с дублиращи се елементи?

131

Какви са вашите очаквания за заплата?

131

Как да ограничим броя на горутините, така че да не се изпълняват повече от 'threads' метода на Process едновременно? Кой ще извлича задачите от канала?

130

Кои анти-патерни в архитектурата на микросервизите знаете?

127

// код за функцията best() // с обработка на грешки при липса на наличен бекенд

127

[име] попита: при запазване на позицията на елемент по-малък от X, каква ще бъде позицията?

126

Занимахте ли се с лидерски задачи през цялото време на работата си?

126
/11