Что такое gRPC? Работали ли с ним?
В чём основное преимущество ClickHouse, почему его часто используют и для чего?
Агрегат всегда работает на уровне одной транзакции. Что ещё важно знать про агрегаты в DDD?
Для булевого поля — стоит ли добавлять индекс?
Оффер: 320k gross (~280k net) + квартальная премия 20%. Как тебе условия?
Расскажи о работе со слайсами в Golang: как работают capacity, length и что будет при выходе за границу
Что произойдёт при создании индекса на большой горячей таблице обычным CREATE INDEX? Как правильно создавать индексы на проде?
Какие технические истории есть — не про архитектуру сверху, а про углубление в детали, реальный проблемный кейс?
Если у вас 100 тысяч одновременных клиентов подключаются по WebSocket к GameServer, какие проблемы возникнут? Как масштабировать такую систему?
Проектирование масштабируемого мессенджера с поддержкой 150 млн пользователей, 75 млн DAU, 225 млн MAU, 1.2M read / 300k write peak QPS, 5 млн одновременных пользователей, 60 PB новых данных в год, рост 30% в год, SLA 99.95%, p99 <200 мс для чтения, <300 мс для записи. КОНТЕКСТ Необходимо спроектировать распределённую систему мессенджера, аналогичную WhatsApp, которая поддерживает как 1:1, так и групповые чаты, обеспечивает доставку сообщений, отображение online-статусов пользователей и передачу мультимедийных файлов (фото, видео, аудио). Система должна обеспечивать высокую доступность и низкую задержку, выдерживать высокий параллелизм и масштабироваться на глобальном уровне. ФУНКЦИОНАЛЬНЫЕ ТРЕБОВАНИЯ - Поддержка личных (1:1) и групповых чатов с возможностью добавления/удаления участников - Отправка и получение текстовых сообщений и мультимедийных файлов НЕ ВИДНО ЯВНОЙ РЕАЛИЗАЦИИ МЕХАНИЗМА end-to-end шифрования на уровне сервисов или клиентов, кроме общей аннотации. - Отсутствует явное описание шардингов и репликаций баз данных по chat_id или user_id для масштабируемости и отказоустойчивости. - Нет явного компонента или механизма для обработки офлайн-синхронизации сообщений и delivery receipts. - Не прослеживается, как реализуется балансировка нагрузки между базами данных и сервисами, особенно при пиковых нагрузках. **Узкие места, на которые стоит обратить внимание:**
Пришла поставка на склад, потом отгрузили 5 штук со склада в машину. Как пройдёт флоу в информационной системе?
Какие у тебя финансовые ожидания?
Что такое ACID?
Как вы понимаете, что задача сделана качественно?
Что такое партиционирование и шардирование? Использовали ли?
Могут ли два контейнера занять один порт хоста?
Что такое асинхронный API, для чего нужен и как реализуется?
Как гарантировать доставку событий при нестабильной сети (сеть может обрываться, события нельзя терять)?
Как определяешь значения requests и limits для ресурсов в Kubernetes?
// Клиент передаёт на вход некоторый объект (Task) с данными для выполнения задачи, // в нашем примере будем использовать пустую структуру. // // Обработчик одновременно может обрабатывать не более N задач, // и не более X задач могут быть поставлены в очередь на обработку. // Если нет места в очереди, сразу возвращаем клиенту ошибку. // // Задача берется в обработку если имеются на это свободные обработчики. // Имитируем длительность обработки через time.Sleep(5*time.Second). // Как только очередная задача выполнилась – берём следующую задачу из очереди. // Если в очереди пусто, ожидаем новых задач от клиентов. // // Со звездочкой: дополнить структуру Task и получать статусы задач, через отдельный запрос package scheduler type Scheduler interface { AddTask(t Task) error Close() } type sheduler struct { queue chan Task wg sync.WaitGroup } func New(workers, queue, int) Scheduler { } type Task interface { Do() }