Golang
Какви команди обикновено използваш в операционната система Linux?
Какви подходи могат да се използват за осигуряване на потокобезопасност при работа със слайсове в многопоточна среда?
Какви операции са допустими при работа с nil слайс в езика за програмиране?
Разкажете за трудна задача, която сте успели да решите, като напишете скрипт за системата Linux
Как може да се регулира обемът на данните, съхранявани в кеша?
Готовност да изпълнявате ролята на единствения специалист по Backend в екипа
Каква е основната причина за използването на типа sync.Map в Go?
Какви са добрите практики и антипатерни в юнит тестовете? Как да разберем дали тестовете са добри?
func Exclude(a, b []int) []int { set := make(map[int]struct{}) for _, v := range b { set[v] = struct{}{} } result := make([]int, 0) for _, v := range a { if _, ok := set[v]; !ok { result = append(result, v) } } return result } Грешка при компилация # command-line-arguments ./main.go:39:32: синтактична грешка: неочакван нов ред, очакваше { след if клаузулата
Сблъсквали ли сте някога с трудности при реализирането на взаимодействия между различни услуги?
Как се предава срез (slice) към функция в език за програмиране?
Какво е моделът Saga?
Защо не използваха Testcontainers?
/* Ние трябва да прехвърлим данни от източник към потребител. Източникът предоставя данните на малки пакети (~десет записа), докато потребителят работи по-ефективно с по-големи пакети. Реален пример е прехвърлянето на данни от 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 }
Таблица с (id PRIMARY KEY, data JSON) — индексът PostgreSQL достатъчно добър ли е за търсене по ключ?
Каква е разликата между виртуализацията и контейнеризацията?
Може ли да се вмъкне още един блок код с къдрави скоби вътре в съществуваща функция?
Как определяхте и формулирахте задачите на предишната си позиция?
Как беше внедрен финалният код в продукционната среда във вашия последен проект?
Как работи операцията по добавяне на нов елемент към слайс в език за програмиране?