Подготовка к Go-собеседованию — это не только про синтаксис языка. Интервьюеры обычно смотрят на более широкий набор знаний и на то, как вы ими пользуетесь на практике.
В первую очередь — это примитивы языка. Вы должны уверенно понимать, как работают срезы, мапы, строки, указатели, интерфейсы, структуры, методы, defer, panic/recover. Важно не просто знать «что это», а понимать поведение в деталях: как растет capacity у slice, как передаются значения, где копирование, а где нет, какие есть подводные камни.
Дальше — рантайм Go. Нужно понимать, как работают goroutines, как устроен планировщик, как ведет себя сборщик мусора и аллокатор, что такое stack и heap, как происходит аллокация памяти. Часто задают вопросы не на уровне определения, а на уровне «почему так происходит» и «к чему это приводит в реальной системе».
Отдельный большой блок — concurrency. Это одна из ключевых тем в Go. Здесь важно понимать примитивы синхронизации, каналы, работу с context, ошибки конкурентного программирования и способы их предотвращения. Причем не в теории, а через реальные сценарии: как вы строите конкурентные системы и какие решения выбираете.
Плюс — базовый computer science. Алгоритмы, структуры данных, оценка сложности, базовые принципы работы с памятью и производительностью. В Go-собеседованиях это обычно не так глубоко, как в алгоритмических интервью, но без этого иногда бывает сложно объяснять свои решения.
И, наконец, важный момент — тонкости и нюансы языка. Именно они часто становятся решающими: поведение интерфейсов с nil, особенности работы с map, порядок выполнения defer, escape analysis. Знание таких деталей показывает, что вы действительно работали с Go, а не просто читали документацию.