Golang
С какви инструменти сте работили?
Защо екипите не могат да деплойват независимо при монолит? И защо трите CI/CD пайплайна са минус за микросървисите, ако всъщност са техният плюс?
Как да разберем кога е необходим партициониране или шардиране?
Какво се случва с Xmin и Xmax при UPDATE?
Кой трябва да затвори канала?
/* Трябва да прехвърлим данни от източник към потребител. Източникът предоставя данни на малки пакети (~десет записа), докато потребителят работи по-ефективно с големи пакети (~хиляда записа). Реален пример е прехвърлянето на данни от опашки тип 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 }
Дали ви се е случвало да ви поставят задача, да започнете да я изпълнявате, но по време да разберете, че изискванията са противоречиви или технически невъзможни за изпълнение в срок? Какво направихте в такъв случай?
```go import ( "fmt" "runtime" "time" ) func main() { runtime.GOMAXPROCS(2) var c chan int for i := 0; i < 5; i++ { go sleeping(i, c) } for i := 0; i < 5; i++ { gopherID := <-c fmt.Println("routine ", gopherID, " приключи съня") } } func sleeping(id int, c chan int) { time.Sleep(3 * time.Second) fmt.Println("... ", id, " време за спиране ...") c <- id } ```
Какви са типовете/групите на дизайн патърсите?
Кой отговаряше за договорите между услугите? Кой беше собственикът на договора и как го модифицирахте?
Какъв формат на съобщенията да използваме в Kafka за услуга с висок товар: JSON или бинарен?
Разкажи за използването на Redis в проектите ти.
Кой формат на регистрация предпочитате: TK, IP? От каква сума разглеждате предложението?
Имало ли е грешки / проблеми на работното място?
Как върви потокът от задачи — от бизнеса до разработката?
Къде живееш сега и какъв формат на работа обмисляш?
Потвърждаване на търговски опит: опит по трудов договор или по ГПХ?
Когато валидирането приключи — записваме това в базата или го изпращаме нататък към Kafka?
С какво събираше данните за изчисляване на заплатите? Какъв инструмент използваше?
Живеехте ли в една инфраструктура или различните системи бяха в различни кръгове?