Използвали ли сте Kafka като хранилище? Колко обяви имаше в Kafka?
Golang
Оптимистични и песимистични блокировки — разкажи
Имали ли сте опит с инфраструктура? Трябваше ли да докоснете нещо?
За какво най-често се използва Consul в микросервисна архитектура?
RPS Средно 4-5 хиляди RPS, в пикове до 12k Но тук е важно да се разбере, че основното натоварване беше върху Kafka. Тъй като архитектурата е асинхронна, при всяко създаване на обява, моят оркестратор генерираше верига от 5-7 събития в различни услуги за проверки. Общо обработвахме средно до 30k съобщения в секунда.
Каква е разликата между senior и middle разработчик в екипа?
Дава ли компанията работно оборудване?
Какво ниво на заплата разглеждате при преместване?
Какъв е вашият общ опит с инфраструктурата, включително Docker, Kubernetes, CI/CD и мрежи?
Как беше проведено натоварването тест и кои метрики бяха наблюдавани?
Как решаваше ситуации, когато твоето решение беше отхвърлено?
Колко удобно е хибридният формат на работа в Москва с посещение в офиса поне веднъж седмично?
Защо опашка (от кое дума Q)?
Колко години търговски опит имате в разработката с Go?
Защо решихте да излезете на пазара? Какво не е наред в Магнит сега?
Как да итерирате върху подредена карта, запазвайки реда? Реализация на метода за итерация.
Ако в AddTask използвате RLock, как ще се държат двата паралелни извиквания на AddTask? Ще блокират ли се взаимно?
Разкажи за случай, когато си предложил нещо и трябваше да докажеш своята гледна точка.
// Напишете асинхронен обработчик на задачи като библиотека // Клиентът предава обект (Task) с данни за изпълнение на задачата, // в нашия пример ще използваме празна структура. // Обработчикът може да обработва не повече от N задачи едновременно, // и не повече от X задачи могат да бъдат поставени в опашката за обработка. // Ако няма място в опашката, веднага връщаме грешка на клиента. // Задачата се взема за обработка, ако има свободни обработващи. // Имитираме продължителността на обработката чрез time.Sleep(5*time.Second). // Щом една задача приключи, взимаме следващата от опашката. // Ако опашката е празна, чакаме нови задачи от клиентите. // С звездичка: допълнете структурата Task и получавайте статусите на задачите чрез отделен заявка package scheduler type Scheduler interface { AddTask(t Task) error Close() } type Task interface { Do() }
Как се запазва състоянието на потребителя при деплоймент без престой?