Golang
Есть ли военный билет?
Ты позиционируешь себя как мидл или как сеньор разработчик?
На вход сервису поступают обновления документов message Document { string Url = 1; // URL документа, его уникальный идентификатор uint64 PubDate = 2; // время заявляемой публикации документа uint64 FetchTime = 3; // время получения данного обновления документа, может рассматриваться как идентификатор версии. Пара (Url, FetchTime) уникальна. string Text = 4; // текст документа uint64 FirstFetchTime = 5; // изначально отсутствует, необходимо заполнить } Документы могут поступать в произвольном порядке (не в том, как они обновлялись), также возможно дублирование отдельных сообщений. Необходимо на выходе формировать такие же сообщения, но с исправленными отдельными полями по следующим правилам (всё нижеуказанное - для группы документов с совпадающим полем Url): Поле Text и FetchTime должны быть такими, какими были в документе с наибольшим FetchTime, полученным на данный момент Поле PubDate должно быть таким, каким было у сообщения с наименьшим FetchTime Поле FirstFetchTime должно быть равно минимальному значению FetchTime Т. е. в каждый момент времени мы берём PubDate и FirstFetchTime от самой первой из полученных на данный момент версий (если отсортировать их по FetchTime), а Text - от самой последней. Интерфейс в коде можно реализовать таким: type Processor interface { Process(doc *Document) (*Document, error) } Данный код будет работать в сервисе, читающем входные сообщения из очереди сообщений (Kafka или подобное), и записывающем результат также в очередь. Если Process возвращает Null - то в очередь ничего не пишется.
Какой технологический стек использовался на последнем месте работы?
Как у тебя с технической документацией на английском?
Какими командами можно проверить потребляемые ресурсы в Linux?
[имя] спросил: знаете ли вы какие-то другие языки программирования, или только пишете на Go?
Расскажите подробнее про проекты на Go
Сколько максимум TCP-соединений можно держать на одном сервере?
Как можно оптимизировать поиск в базе данных? Что такое индексы и какая у них сложность?
Как вы выбирали инструменты, например, как сравнивали библиотеки для JSON-парсинга?
Ты откликнулся на позицию Senior Go-разработчика. Ты сейчас работаешь в [компания], верно?
Можно ли использовать колонку в SELECT, если мы по ней не группируем в GROUP BY?
/ * Разработчику было дано задание написать сервис отправки уведомлений. Требования: - Метод Send должен отправлять сообщения параллельно. - Одновременно может выполняться не более maxworkers HTTP-запросов. - Если хотя бы одна отправка завершилась ошибкой - нужно остановить остальные отправки и вернуть ошибку. - Метод должен корректно обрабатывать отмену контекста. - Все ресурсы должны корректно освобождаться. - Метод может вызываться конкурентно из разных goroutine. - Client должен хранить количество успешно отправленных сообщений. нужно сделать code review, найти проблемы и исправить код.
What pipeline?
Каковы ваши зарплатные ожидания в рамках предложенного диапазона?
Какие протоколы использовал чаще всего и почему?
В чём принципиальное различие между контейнерами и виртуальными машинами? Можно ли запустить контейнер с Windows на Linux-хосте?
Расскажи про команду и процессы управления (спринты, канбан и т.д.)
Расскажите про очередь с приоритетом