Сколько потоков запустит планировщик Go? И конкретно на AMD EPYC с 64 ядрами и 128 потоками?
Проектирование масштабируемого мессенджера с поддержкой 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. - Не прослеживается, как реализуется балансировка нагрузки между базами данных и сервисами, особенно при пиковых нагрузках. **Узкие места, на которые стоит обратить внимание:**
Спроектируйте SQL схему для банковской системы с таблицами accounts и transactions. Какие ограничения и индексы необходимы?
Что такое reverse proxy и что обычно используют?
Ты сам что-нибудь описывал для observability — метрики, алерты?
Расскажите о телеметрии.
Что выведет программа? func a() { x := []int{} x = append(x, 0) x = append(x, 1) x = append(x, 2) y := append(x, 3) z := append(x, 4) fmt.Println(y, z) } func main() { a() }
Что такое init-контейнеры и sidecar-контейнеры?
Предложите индекс для таблицы users с полями gender и age, если нужно выбирать пользователей по полу или возрасту
package main import "fmt" type Person struct { Name string } func changeName(person *Person) { person = &Person{ Name: "Alice", } } func main() { person := &Person{ Name: "Bob", } fmt.Println(person.Name) // changeName(person) fmt.Println(person.Name) // }
Live coding: добавить таймаут в функцию — если выполнение превышает 1 секунду, вернуть ошибку. Использование select, time.After, context.
Чем HTTPS отличается от HTTP?
Что такое garbage collector в Go?
Сколько у тебя общего опыта в IT в коммерческом плане?
Какое максимальное количество запросов в секунду у вас сейчас на высокой нагрузке?
Сколько коннекшенов было на Postgres?
Для тебя офис 5 дней в неделю — это окей?
type TTLCache interface { Set(k string, v any, ttl time.Duration) Get(k string) (any, bool) Del(k string) bool } // Не должно утекать по памяти // гет не должен отдавать просрочку //реализация
Привезли 20 мясорубок, 5 отгрузили — сколько осталось на складе и каково актуальное состояние в системе?
Расскажите разницу между WebSocket и SSE, и кейсы использования каждого.