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

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

Junior · без досвіду / до 1 року

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

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

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

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

7 питань рівня Junior з відповідями

1

Чим масив відрізняється від слайсу?

Відповідь

У масиву фіксована довжина, і вона частина типу: [3]int і [4]int — різні типи. Слайс — це вид на масив: вказівник, довжина і місткість. На практиці ви пишете слайсами, а масив лишається тим сховищем, яке ви не називаєте.

2

Що відбувається при append за межі місткості слайсу?

Відповідь

Go виділяє новий більший масив, копіює туди елементи і повертає слайс, що вказує на новий. Старий далі дивиться на старий масив — тому append повертає значення, яке обовʼязково треба присвоїти. Ігнорування результату — класична помилка новачка, і працює вона рівно до перевищення місткості.

3

Що таке нульове значення і навіщо воно в Go?

Відповідь

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

4

Чим отримувач-значення відрізняється від отримувача-вказівника?

Відповідь

Отримувач-значення працює з копією, тому зміни не переживуть виклик; отримувач-вказівник працює з оригіналом. Вказівник беруть, коли метод змінює стан або коли структура достатньо велика, щоб копіювання коштувало. Плутанина починається при змішуванні обох на одному типі — тоді набори методів T і *T розходяться.

5

Як влаштована обробка помилок і чому немає винятків?

Відповідь

Помилки — звичайні значення, що повертаються поруч із результатом і перевіряються на місці виклику. Багатослівність тут навмисна: шлях, на якому щось ламається, видно в коді, а не сховано в розкрутці стека. panic існує для справді невідновних ситуацій, і використання його як керуючої конструкції відзначить будь-який рецензент.

6

Що таке горутина і чим вона відрізняється від потоку?

Відповідь

Горутина — функція, яку планує рантайм Go, а не операційна система. Стартує вона з пари кілобайт і росте, тому сотні тисяч — звична річ, тоді як стільки ж системних потоків не завести. Рантайм розкладає їх по невеликому пулу справжніх потоків.

7

Що робить `defer` і коли він виконується?

Відповідь

Відкладає виклик до повернення з функції — будь-яким шляхом. Тому там закривають файл і знімають мʼютекс, поруч із рядком, який його відкрив чи взяв. Аргументи обчислюються в момент defer, а не виконання, і це дивує тих, хто відкладає виклик зі змінною циклу.

🦎

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

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

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

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

Middle Go BackendSenior Go BackendУсі питання Go Backend

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

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