P
prepair.app
Пройти інтерв'ю →
EnglishУкраїнськаРусскийDeutsch
🦫

Senior Go BackendПитання на співбесіді Golang

Senior · 5+ років досвіду

Співбесіда Go фокусується на горутинах, каналах, інтерфейсах та обробці помилок — мова маленька, тому питання йдуть углиб, а не вшир. Нижче — найчастіші з еталонними відповідями. Senior: архітектуру, трейд-офи, менторство та прийняття рішень.

Спробувати — без реєстрації
Готуємо питання…

Теми для підготовки

Горутини та планувальник
Канали і select
Інтерфейси та композиція
Обробка помилок
Слайси та мапи
Контекст і скасування

6 питань рівня Senior з відповідями

1

Як обмежити паралелізм при обробці великої черги?

Відповідь

Пулом воркерів: фіксоване число горутин читає один канал, і паралелізм стає числом, яке обрали ви, а не яке вирішив вхід. Для тоншого контролю годиться канал-семафор. Уникати треба горутини на кожен елемент — виглядає витончено і кладе те, що нижче за потоком, зазвичай пул зʼєднань до бази.

2

Звідки витоки памʼяті в мові зі збирачем сміття?

Відповідь

З посилання, яке лишається досяжним: зростаюча мапа в ролі кешу без витіснення, горутина, що назавжди стала і тримає свій стек, слайс величезного масиву, який утримує все сховище. Останнє дивує: зріз великого буфера до трьох байтів тримає його цілком, доки ви не скопіюєте.

3

Як профілювати Go-сервіс, який сповільнився?

Відповідь

pprof по живому процесу, а не здогади: CPU-профіль показує, куди йде час, heap-профіль — алокації, профіль горутин — якщо пахне блокуванням. У Go частий винуватець саме алокації: скорочення сміття нерідко виграє в оптимізації алгоритму, бо робота збирача пропорційна тому, що ви створюєте.

4

Як гасити сервіс, не втрачаючи роботу в польоті?

Відповідь

Зловити SIGTERM, припинити приймати нові зʼєднання, скасувати кореневий контекст, щоб воркери згорнулися, дочекатися WaitGroup із тайм-аутом і вийти. Тайм-аут важливий: зупинка, що вічно чекає один завислий запит, — це окрема аварія. Readiness-проба має впасти до початку всього цього, щоб балансувальник припинив слати трафік першим.

5

Коли дженерики доречні, а коли ні?

Відповідь

Доречні, коли та сама логіка справді повторюється по типах: контейнер, map чи filter по слайсах, обмеження на числові типи. Недоречні, коли вимогу вже виражає інтерфейс, бо інтерфейс простіше читати і змінювати. Go прожив без них десять років не випадково, і більшій частині коду вони й досі не потрібні.

6

Як структурувати Go-проєкт, що росте?

Відповідь

За тим, що код робить, а не чим він є: пакет на предметну область, а не пакет models, куди склали все. Напрям залежностей тримати всередину, усе, що не призначене для імпорту, класти в internal/, і опиратися пакету utils — там помирає зв'язність. Стандартна бібліотека — посібник зі стилю, який варто копіювати.

🦎

Прочитати відповіді недостатньо

На співбесіді ти говориш вголос під тиском. Кем поставить ті самі питання, оцінить кожну відповідь і покаже, що саме підтягнути.

Пройти інтерв'ю Senior Go Backend →
Безкоштовно · 3 інтерв'ю на місяць

Інші рівні — Go Backend

Junior Go BackendMiddle Go BackendУсі питання Go Backend

Інші спеціалізації

🔍Senior QA Manual🤖Senior QA AutomationSenior Java Backend🐍Senior Python Backend🐘Senior PHP Backend🟢Senior Node.js Backend💎Senior Ruby on Rails🟣Senior .NET Backend Developer🔷Senior C++🟨Senior JavaScript