Как оцениваешь свои знания Go по пятибалльной шкале
Что проверяют
Не цифру, а насколько трезво вы себя видите. Названная оценка задаёт планку для остальной части собеседования: после «четвёрки» следующий вопрос будет про планировщик горутин или модель памяти, и ответ должен ей соответствовать.
Как отвечать
Назовите оценку и сразу объясните, что за ней стоит. Удобно разложить Go на области и про каждую сказать честно:
- язык: срезы и общий массив под ними при
append, мапы и запрет конкурентной записи, интерфейсы и ловушка с nil-указателем внутри непустого интерфейса, дженерики; - конкурентность: горутины, каналы и
select,sync.WaitGroup,sync.Mutex,errgroup, отмена черезcontext.Context, утечки горутин; - инструменты:
go testс табличными тестами и флагом-race, бенчмарки,pprofдля CPU и памяти,go vet, линтеры; - прод: HTTP-сервисы на
net/httpили роутере, gRPC, graceful shutdown, работа с базой черезdatabase/sqlилиpgx.
Пример формулировки: «Четыре из пяти. Пишу сервисы на Go три года, конкурентный код и профилирование делаю сам. Не хватает глубины в устройстве рантайма: как работают GC и планировщик, знаю по статьям, в проде не тюнил». Цифры и сроки подставьте свои. Если Go у вас второй язык, так и скажите и назовите, что уже написали на нём руками.
Хорошо показать, что шкала относительна: пятёрка означает понимание рантайма и компилятора на уровне, когда вы читаете исходники и объясняете escape analysis на примере.
Где спотыкаются
Ставят себе пятёрку. Интервьюер воспринимает это как вызов, и первый же вопрос про устройство мапы или GOMAXPROCS снимает всю уверенность.
Говорят «четыре», а потом путаются, почему ошибка с nil-указателем внутри не равна nil, или закрывают канал со стороны читателя.
Прибедняются до двойки при реальном опыте. Скромность без аргументов читается как неуверенность, и предложение по деньгам занизят вместе с ней.