Golang
Как подходихте към версионирането на gRPC контрактите?
Реализирайте получаването на топ 5 услуги в O(N) с помощта на помощна структура
Актуализациите на документи постъпват в услугата 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, нищо не се записва в опашката.
Знаеш ли продукта Loop?
Как получаваш задачите, от кого идват?
Имате ли опит с Docker и Kubernetes? На какво ниво?
С какви бази данни сте работили и какви SQL заявки умеете да пишете?
Как използвахте Kafka и RabbitMQ като брокери? Защо два?
Как да паралелизираме обработката на логове с използване на worker pool? Как да получаваме резултати от горутините?
Какви са масивите и слайсовете в Go, как се различават? Как работи append и разширяването на capacity?
Какво е предимството на репликацията? Какви разходи носи тя?
Влияе ли размерът на буфера на канала върху нещо в работната група?
Как да взаимодействате с търговците, които се намират в външния контур?
Какви средства за синхронизация има при многопоточността в Go?
Какви данни съхраняваха в Redis и как разбираха, че обявите са горещи?
Защо да използваме интерфейси?
Вижте схемата на базата данни по-горе — какво може да се добави, или всичко е наред?
Разкажи ми за GMP модела на планировчика Go.
Трябва ли да се появи нова номенклатура (нов продукт) в Redis?
Разкажи за последния проект, по който работи в [компания].