Golang
Что такое syscall? Как Go runtime обрабатывает блокирующие syscall'ы в модели GMP?
Почему выбрали RabbitMQ, а не Kafka для уведомлений?
Как работает HTTP сервер в Go?
У вас на текущем или предыдущем месте работы была high load система?
Расскажи о своей текущей компании и о том, чем ты там занимаешься.
Ориентируй по зарплатным ожиданиям, насколько сейчас можешь сориентироваться?
// TODO backends []*BackendImpl index int mu sync.Mutex func (b *Balancer) Invoke(ctx context.Context, req Request) (Response, error) { b.mu.Lock() index := b.index if b.index + 1 == len(b.backends) { b.index = 0 index = 0 } b.mu.Unlock() resp, err := b.backends[index].Invoke(ctx, req) b.mu.Lock() defer b.mu.Unlock() b.index += 1 return resp, err } // addr содержит ip:port конкретного экземпляра func NewBackend(addr string) *BackendImpl // addrs содержат адреса всех балансируемых экземпляров func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImpl, len(addrs)) for _, addr := addrs { backends = append(backends, NewBackend(addr)) } return &Balancer{ backends: backends, } }
Какая была ваша любимая стратегия, если кластер Elasticsearch падал или переставал отвечать? Ломалась ли функция поиска на сайте, или был резервный механизм для прямых запросов к PostgreSQL?
Расскажите весь флоу по данным и по товару — как происходит поставка на склад, как данные проходят по системам?
Как шарить память между горутинами? В каких случаях лучше использовать Atomic, а в каких Mutex/RWMutex/SyncMap?
Можешь привести пример автономной работы — какое максимальное время ты работал над одной задачей или проблемой?
Что за проект был в компании «Легион»?
Что такое принцип Durability в ACID? За счёт чего он достигается в PostgreSQL?
Что такое индексация в реляционных БД?
Какая у тебя роль и профессиональная самооценка — middle plus или senior?
Когда протухнет refresh token, который живёт в cookie, — что происходит с пользователем?
// При обновлении заказа, мы должны отправить данные по заказу в несколько сервисов (сторонние API) // количество сервисов растёт (может быть тысяч+) // мы написали код, сначала все было хорошо, но со временем наш сервис начал потреблять много памяти func (s *orderService) SendOrder(ctx context.Context, hosts []string, order Order) { for i := 0; i < len(hosts); i++ { go func() { // Представим, что это долгий сетевой вызов response, err := s.httpClient.Send(ctx, hosts[i], order) if err != nil { s.logger.Error(ctx, "failed to send", err) return } s.logger.Info(ctx, "success", response) }() } }
Задача на PostgreSQL: несколько воркеров читают задачи из таблицы и генерируют промокоды. Как избежать дублирования работы?
Есть ли ограничения по срокам поиска работы или финальные офферы от других компаний?
Как ты работаешь? Используешь ли какие-то фреймворки или инструменты?