Роадмап 2025-2026 для подготовки к собеседованиям на валютную удаленку Go/Golang разработчиком до $10k+ в месяц.
Подготовлен АйТи Красавчиком (https://www.youtube.com/@itkrasavchik) и другими ребятами из клуба (https://boosty.to/itkrasavchik).
- Расскажи про свой опыт
- Почему ищешь работу?
- Какие задачи решал последнее время?
- Приведи пример, когда вы упростили код?
- Расскажи про то, чего нет, в твоем резюме
- Расскажи про команду, процессы в ней и свою роль
- Как ревьюишь PR-ы?
- Расскажи про кейс, когда ты с кем-то поспорил в PR-е и вы вдвоем не смогли прийти к решению?
- Как фича или фикс берутся в работу и делается до выкатки в прод?
- Как контролируете качество кода?
- Как вы понимаете, что появилась проблема в сервисе?
- Как находите проблему с производительностью и решаете ее?
- Как внедряете новые технологии в свой стэк?
- Как делаешь задачи, где не понятно сходу, что делать?
- Расскажи, как построена коммуникация с фронтами и тестерами
- Расскажи про observability на своих проектах
- Расскажи про CI/CD на своих проектах
- Как тестируете производительность своих сервисов и API?
- С какими брокерами работал? Зачем они нужны?
- Завтра придет в 5 раз больше трафика. Что делать, чтобы ничего не упало?
- Как выкатываете в продакшен? Какие способы знаешь? Преимущества и недостатки
- Как построен процесс тестирования?
- Как онбордили новичков?
- Расскажи про свои плюсы и минусы
- Как решали конфликты в команде?
- Расскажи про одну из последних твоих ошибок, как решали и какие выводы сделали?
- Что нравится и не нравится в Го?
- Как выглядит структура по папкам у ваших сервисов?
- Как принято использовать папку internal? В чем ее особенность
- Что из себя представляет тип string? Что происходит при конкатенации строк? Как эффективно слить 100к строк в одну?
- Что такое ошибка в Го? как с ней работать? Как отдаешь ошибку http клиенту?
- Слайсы: внутреннее устройство, сравнение с массивами, append, потокобезопасность
- Мапы: внутреннее устройство, бакеты, хэш-функция, эвакуация, что может быть ключом, потокобезопасность, сравнение с sync.Map, новые Swiss maps
- Каналы: виды (буферизованные/нет, открытые/закрытые), аксиомы, внутреннее устройство, есть ли мьютекс в канале
- Что такое контекст? Для чего используется? Дерево контекстов. Что будет если отменить родительский? А дочерний?
- Есть ли в Го структура set, а исключения? А деструкторы?
- Что такое горутина? Сравнение с системными тредами. Планировщик в Го, сравнение с системным. GMP модель, состояния горутин, GOMAXPROCS, NUMCPU. Netpoller. Goroutine leaks - как бороться?
- Stacks vs Heap. Escape анализ. Garbage collector - как работает? как посмотреть, убегает переменная в хип или нет
- Какие бывают мьютексы и чем отличаются? Сравнение с атомиками. Как сделать через канал?
- sync.Once vs init()
- Waitgroups и sync.Pool - зачем нужны? Изменения в waitgroups в версии Go 1.25
- Чем отличается value от pointer ресивера? Какой когда применять?
- Что такое интерфейс? а под капотом? примеры стандартных интерфейсов. Где размещать интерфейсы? Сравнение с Java интерфейсами
- Что такое мок? Какие пакеты использовал для моков?
- Есть ли наследование в Го?
- Какими гошными пакетами пользуешься каждый день?
- Panic, defer, recover. 3 правила defer. Паниковать - хорошо?
- Что такое race condition? А data race? как их ловить/дебажить?
- Как профилировать гошный код?
- Каким логгером пользуешься? Какие знаешь?
- Что такое линтер? каким пользуешься?
- Нужны ли ORM? Каким пользуешься? Какие знаешь?
- Что думаешь о дженериках в Го? Пользуешься? А go generate?
- Для чего нужен пустой интерфейс? А пустая структура?
- Как дебажишь Гошные программы?
- Если пишешь с нуля - монолит или микросервис?
- Какие преимущества и недостатки есть у микросервисов по сравнению с монолитами?
- Приведи пример инцидента, где разница между микросервисом и монолитом была очевидной?
- Как понять, сколько и какие микросервисы нужны?
- Shared Database в микросервисах - норм?
- Как делать распределенные транзакции?
- Как мигрировать монолит в микросервисы. Strangler Fig паттерн.
- Патерны микросервисов: API gateway, Saga, Circuit Breaker, Fallback, Event-Driven Architecture, Sync/Async messaging, Transaction Outbox, CQRS, Event Sourcing, Idempotency, Timeouts & Retries with jitter, Rate Limiting
- Какие concurrency patterns помнишь? (worker pool fan-in/fan-out, pipeline, singleflight, etc)
- Как добавляете новые поля в API, удаляете старые?
- Чистая/гексагональная/луковая архитектура. Что такое сервисы/хэндлеры/репозитории/слои/адаптеры и юзкейсы?
- Что такое dependency injection? Какими DI пользовался?
- DDD
- SOLID (и в Go), DRY, KISS, YAGNI
- Что такое шардирование/партиционирование/репликация?
- Модель C4. ADR (Architecture Decision Records)
- Запрос X тормозит - что делать?
- Запрос Y почти всегда работает, но иногда тормозит - что делать?
- Какие знаешь структуры данных?
- CAP/PACELC теоремы с примерами
- Distributed hashing алгоритмы. Consistent Hashing
- Как работает distributed lock и зачем он нужен? Common problems
- Сложность, примеры (вставка, удаления, поиск в списке, хэшмапе и дереве)
- Какие хэш-функции знаешь? Разница между hash и signature
- Merkle Trees, bloom фильтры, badgerDB (для крипты)
- Чем отличается авторизация и аутентификация?
- Механизмы авторизации в вебе и API (OAuth, JWT, SAML и т п)
- Разница между симметричным и асимметричным шифрованием
- Стратегии кэширования: cache-aside, read-through, write-through, write-around, write-ahead, ttl, refresh-ahead
- Типы consistency: strong, weak, eventual, read-your-own-writes, monothonic reads, causal
- Rollout strategies: all-at-once, rolling update, blue/green, canary, feature flags, shadow (mirror), A/B tests
- Альтернативы Transactional Outbox: CDC, Event Sourcing, Listen to yourself
- Rate Limiting Strategies: fixed window, sliding window, token bucket, leaky bucket, semaphore
- Как защищаться от ошибок в сторонних API? (timeouts, fail-fast, exponential backoff + jitter, retry storms, circuit breakers)
- Транзакции, ACID (расшифровка), оптимистичные и пессимистичные блокировки, аномалии, уровни изоляции. select for update.
- Что такое индекс? Зачем нужен? Может ли сделать запрос медленнее? Типы индексов в постгресе и монго + для каких операций какие нужны. Что такое btree? Сравнение с binary tree. AVL tree и красно-черные деревья. Составные индексы, префиксное правило. Селективность индексов, сложность поиска для btree, binary tree и hash.
- Профилирование запросов, explain analyze, как по explain-у понять, медленно или быстро, красные флаги в выводе explain
- MVCC, vacuum (analyze), autovacuum.
- Виды джойнов и union. Where vs Having, агрегатные функции (примеры), оконные функции
- Что такое хранимые процедуры? А триггеры? на чем писал (plpgsql)?
- Связи one-to-one, one-to-many, many-to-many.
- Какое поле обычно делают primary key? Плюсы и минусы serial vs uuid
- Что такое внешний ключ? Сослаться можно на любое поле или нет (кроме pk)?
- SQL vs NoSQL. Вертикальное и горизонтальное масштабирование
- OLAP vs OLTP бд с примерами.
- Key-value stores. Redis: data types, common use cases, deployment & scaling, performance & features
- Redis, Postgres, Mongo, Cassandra - классифицируй по CAP теореме
- Что такое write concern и read concern в MongoDB
- Как обновить только одно поле у документа, не перезаписав весь документ?
- Как удалить все документы с условием (deleteMany) и чем это отличается от drop()?
- Как выбрать только некоторые поля из документа (projection)?
- Как искать в массиве: разница между $in, $all, $elemMatch?
- Как понять, используется ли индекс в Mongo запросе?
- Разница между sparse и partial index?
- Что будет, если упадёт primary в MongoDB?
- Как работает шардинг в MongoDB?
- Kafka vs RabbitMQ vs NATS
- Как устроена кафка? producers, consumers, brokers, partitions, topics, consumer groups, consumer lag
- Гарантии доставки в кафка на продюсере и консумере. Как достичь?
- Как обеспечивается горизонтальное масштабирование консюмеров?
- Что такое offset и как им управлять?
- Когда использовать queue-based брокеры (RabbitMQ) и когда log-based (Kafka)?
- Что такое backpressure и как брокеры его решают?
- Транзакции в брокерах
- Чем отличается ack от nack?
- Что такое quorum queues (в RabbitMQ)
- DLQ в разных брокерах
- Как мониторить состояние брокеров (метрики, лаги консюмеров, задержки)
- Какие типичные проблемы бывают при использовании Kafka в продакшене?
- Как организовать схему сообщений (Avro, Protobuf, JSON Schema)?
- Какие есть альтернативы брокеру сообщений в event-driven архитектуре?
- У нас 1 млн событий в минуту, как построить систему на Kafka/RabbitMQ?
- Какие знаешь syscalls?
- Чем процесс отличается от потока?
- Чем отличается hard link от soft link?
- Разница между kill, kill -9 и kill -15
- Как посмотреть, какой процесс слушает порт?
- Что такое swap и зачем он нужен?
- Нa голом сeрвeрe зaпущeн кaкой-то сeрвис и в нeм eсть утeчкa пaмяти. Что произойдeт, когдa пaмять зaкончится? Рeчь нe про кубeр и огрaничeния контeйнeров, a про голый сeрвeр
- Как узнать, какой процесс грузит CPU?
- Чем отличается top и htop?
- Что означает load average?
- Как найти файлы больше 1 GB в системе?
- Чем отличается TCP от UDP?
- Как TCP гарантирует доставку пакетов?
- Почему DNS работает поверх UDP, а не TCP?
- Что такое QUIC?
- Как работает HTTP протокол? Виды запросов, идемпотентность. Стандартные коды http респонзов.
- В чём разница между HTTP/1.1, HTTP/2 и HTTP/3?
- Https vs httpS. TLS Хэндшэйк. Как проверяется сертификат. Чем отличается подлинный от самоподписного?
- Как проверить, открыт ли порт на сервере?
- Разница между Cookie, Session, JWT
- Команды шелла, которыми пользуешься каждый день (ls, cd, grep, find, history, cat, less, wc, chmod, chown, ps, kill, netstat, lsof, ping, wget, curl, touch, make, head, tail, ifconfig, top, tar, unzip, bg, jobs, diff, scp, ssh, rsync и т п)
- HTTP2 и GRPC. Multiplexing & Streaming. Плюсы и минусы с REST. Protobuf, protoc. 4 types of RPC calls. Headers (metadata). Versioning. GRPC gateway.
- Чем отличается докер от виртуальных машин?
- Как его настроить, чтобы все работало быстро и безопасно?
- Как уменьшить размер образа?
- Что такое Docker image и чем он отличается от контейнера?
- Что знаешь про docker-compose? Чем отличаются docker-compose и docker swarm?
- Как работать с секретами?
- Как подождать другой сервис при старте?
- Что такое docker exec -it bash и зачем его используют?
- Какие типы сетей поддерживает Docker?
- Что такое volume и чем отличается от bind mount?
- Как сделать, чтобы данные не потерялись после удаления контейнера?
- Чем отличается COPY от ADD в Dockerfile?
- Чем отличается ENTRYPOINT и CMD?
- Как посмотреть логи контейнера?
- Как узнать, какие контейнеры запущены?
- Как удалить все остановленные контейнеры и ненужные образы?
- Как ограничить использование CPU и памяти контейнером?
- Как работает Docker под капотом?
- Как мониторить контейнеры?
- Что такое провайдер, ресурс, дата-сорс в Terraform?
- Что такое state файл, зачем он нужен и где его лучше хранить?
- Что такое backend и какие виды backend вы знаете?
- Что будет, если потерять state?
- Как решать конфликты при работе нескольких разработчиков с одним state?
- Что такое locking?
- Что такое module и для чего его использовать?
- Разница между variable, local, output?
- terraform plan, terraform apply, terraform destroy
- Как работает lifecycle (ignore_changes, prevent_destroy, create_before_destroy)?
- Как хранить секреты (пароли, ключи) в Terraform?
- Когда использовать terraform import?
- Как работают provider alias и зачем они нужны?
- Kubernetes: что такое под? Чем отличается от контейнера?
- Чем отличается ReplicaSet от Deployment?
- Что такое Service? Типы сервисов
- Разница между ConfigMap и Secret?
- Что такое Namespace?
- Какими командами кубера пользовался?
- Какими UI пользовался?
- Разница между StatefulSet и Deployment? Когда использовать StatefulSet?
- Что такое Job и CronJob?
- Что такое StorageClass?
- Как посмотреть логи пода?
- Как войти внутрь контейнера?
- Статусы пода (CrashLoopBackOff/Pending и т п)
- Три столпа observability (metrics, logs, traces). Чем отличаются?
- Три типа метрик
- Как измерять SLI, SLO и SLA?
- Что такое high-cardinality метрик и чем это опасно?
- Как уменьшить high-cardinality метрики?
- Почему БД прометеуса так хороша для хранения метрик?
- Чем отличается 90-й перцентиль от 95-го?
- Что такое структурированные логи и зачем они лучше, чем plain text?
- Какие обязательные поля стоит включать в лог?
- Уровни логирования
- Какие инструменты для логирования знаешь? (DataDog, Graylog, ELK, etc)
- Что такое distributed tracing и зачем он нужен?
- Что такое span и trace?
- Как добавить OpenTelemetry в микросервис?
- Как подключить OTLP exporter и куда он может слать данные?