Перейти к содержимому

EffectiveSoft

Актуальность: 1 кв 2026

  • Какие сервисы вы разрабатывали на Go? За какие функции они отвечали и как взаимодействовали друг с другом? go/basics
  • Представьте, что нужно обработать текстовый файл с данными пользователей. При небольшом размере файла проблем нет. Но как вы будете читать, обрабатывать и формировать файл, если его размер достигает нескольких сотен мегабайт или даже гигабайт? go/stdlib-tooling
  • Расскажите о вашем опыте работы с SQL в Go-проектах. Какой подход к организации слоя доступа к данным вы предпочитаете? hr-behavioral/about-you
  • При работе с микросервисами, как вы отслеживали ошибки, утечки памяти, перезапуски контейнеров и деградацию производительности? devops/observability
  • Работали ли вы с Grafana? devops/observability
  • На какие ключевые метрики и дашборды вы обращаете внимание в первую очередь? devops/observability
  • Работали ли вы с Loki? devops/observability
  • Представьте, что у вас есть настроенный дашборд в Grafana для микросервиса. Активных алертов нет, инциденты не зафиксированы, но вам нужно провести плановую проверку состояния сервиса. Как вы определите, что сервис действительно работает стабильно и нет скрытых проблем? architecture/microservices
  • Представьте, что вы наблюдаете за работой микросервиса и замечаете периодические «волны» в его поведении. Как можно обнаружить эти волны и что вы предпримете? architecture/microservices
  • Что такое утечка горутин и как ее предотвратить? go/concurrency
  • Что такое горутина и чем она отличается от потока? go/concurrency
  • Для создания горутины в Go требуется около 2 КБ памяти, тогда как для потока - несколько мегабайт. Из чего складывается эта разница в потреблении памяти? go/concurrency
  • Допустим, программа запускает множество горутин. Операционная система ничего не знает о горутинах. Как в таком случае они должны выполняться? linux-os/general
  • Может ли одновременно работать больше горутин, чем имеется ядер процессора? go/concurrency
  • Как значение переменной GOMAXPROCS соотносится с архитектурой процессора? По умолчанию она равна количеству физических или виртуальных ядер? go/runtime
  • Для чего нужны каналы в Go? go/channels
  • Когда блокируется небуферизированный канал? go/channels
  • Что произойдет при попытке отправить данные в небуферизированный канал без предварительного запуска горутины для чтения? go/concurrency
  • Как можно одновременно работать с несколькими каналами? go/channels
  • Что произойдет, если в операторе select указаны операции чтения из двух каналов, но на момент выполнения ни в один из них не было отправлено данных? Как выйти из такого select? go/channels
  • При чтении из закрытого канала в Go возвращается нулевое значение типа. Как отличить ситуацию, когда вы прочитали реальное нулевое значение из открытого канала, от ситуации чтения из закрытого канала? go/channels
  • Чем отличается error от panic? go/errors-panic
  • Как обработать панику и нужно ли это делать? Как правильно обрабатывать ошибки? go/errors-panic
  • При запуске сервиса обнаруживается ошибка конфигурации - не указаны параметры подключения к базе данных. Вы инициируете panic. Имеет ли смысл обрабатывать эту панику? go/errors-panic
  • Какие уровни серьезности логов вы знаете? devops/observability
  • Какие особенности типа error в Go вы можете назвать? go/errors-panic
  • Как в Go называют константы, представляющие ошибки? go/errors-panic
  • Какое правило стоит соблюдать при написании сообщений об ошибках? Чего следует избегать? go/errors-panic
  • Что такое контекст и для чего он используется? go/context
  • Где используется TODO в контексте? go/context
  • Пользователь отправил HTTP-запрос и ждет ответа. Сервис выполняет долгую операцию. Почему не стоит позволять запросу выполняться неограниченно долго? network/http
  • С какими базами данных вы работали? hr-behavioral/about-you
  • Всегда ли можно записать NULL в поле базы данных? sql/general
  • Что такое первичный ключ? Обязательно ли иметь в таблице первичный ключ? sql/schema-design
  • Что такое B-дерево? algorithms/data-structures
  • Какие еще виды деревьев знаете? algorithms/data-structures
  • У вас есть микросервис, работающий с PostgreSQL, и вам нужно изменить схему: добавить колонку или таблицу. Как вы это реализуете? architecture/microservices
  • Как применяются миграции базы данных при деплое в Kubernetes? containers/kubernetes
  • Есть высоконагруженный сервис с таблицей в PostgreSQL на несколько миллионов записей. Запрос с фильтрацией по двум колонкам (WHERE column_B =? AND column_C =? ) работает медленно. В таблице есть только первичный ключ, других индексов нет. Как вы найдете, что можно оптимизировать, и как оптимизируете этот запрос? architecture/system-design
  • Для чего нужны индексы? sql/indexes
  • Как индексы влияют на производительность операций JOIN? Если две таблицы соединяются по определенной колонке, поможет ли индекс на этой колонке ускорить поиск связанных строк? sql/indexes
  • Если сервис уже использует PostgreSQL как основное хранилище, означает ли это, что Redis не нужен, или его имеет смысл добавить? nosql-cache/caching
  • При кэшировании пользовательских данных существует риск неограниченного роста кэша: разные пользователи запрашивают разные данные, и рано или поздно оперативная память закончится. Как можно это оптимизировать или избежать? nosql-cache/caching
  • Сервису требуются справочные данные в оперативном доступе. Данные относительно небольшие, но обращаться к ним приходится на каждый запрос. Будете ли вы кэшировать такие данные в Redis? nosql-cache/redis
  • Есть микросервис, развернутый в Kubernetes с несколькими репликами за балансировщиком нагрузки. Внешняя система отправляет вебхук для обновления данных. Поскольку балансировщик направляет запрос только на одну случайную реплику, как обеспечить актуальность данных на всех экземплярах сервиса? Как организовать синхронизацию между репликами, чтобы минимизировать рассогласование? architecture/microservices