Тех собес на Golang Developer в ****

Доступно с премиум-подпиской

Оформите премиум-подписку, чтобы получить доступ к:

  • Фильтрации по компаниям
  • Названиям компаний в интервью
  • Видеозаписям собеседований
(2025-01-28)

Задача:

/*
Необходимо написать in-memory кэш, который будет по ключу (uuid пользователя) возвращать 
профиль и список его заказов.

1. У кэша должен быть TTL
2. Кэш может пользоваться функцией(-и), которая работает с заказами (добавляет/обновляет/удаляет)
3. Должны быть написаны тестовые сценарии использования данного кэша
*/

type UserProfile struct {
  UUID   string
  Name   string
  Orders []Order
}

type Order struct {
  UUID      string
  CreatedAt time.Time
  UpdatedAt time.Time
  Basket    interface{}
}

Вопросы:

БД

— Зачем нужны индексы в бд и сталкивался ли на практике?

— Уровни изоляции транзакций и аномалии

— Блокировки. Что такое оптимистичные и пессимистичные блокировки?

— У тебя есть несколько подов в кубере, все они ходят в одну базу. Как избежать гонки данных?

Kafka

— Что такое партиции, почему нельзя просто писать в топик?

— Что делать с сообщениями, которые не можем обработать?

— Что такое consumer lag?

— Какие есть гарантии доставки?

Микросервисы

— Как строили общение между микросервисами?

— Какие помнишь паттерны микросервисной архитектуры?

— Что такое Saga?

gRPC

— Как можно безопасно в gRPC поменять контракт в протофайле, без обновления на стороне клиента, чтобы не сломать его?

— У нас было поле address, мы его у себя решили поменять на full_address. Всё поломается?

— А если убрать полностью поле address, всё сломается?

Разное

— Для чего нужен kubernetes? Какие задачи решает?

— Какие метрики собирали? Работал ли с трассировкой?

— Работал с pprof?

Писал ли тесты? Для чего они нужны в целом?