Переезд в США. Часть 04 - Собеседования (подробно)
Более детальный разбор собеседований
Академический формат
Здесь обычно главное интервью - это подобие открытой лекции, на которой Вы рассказываете о себе, своих проектах, статьях и исследованиях, а Вас одновременно слушают от двух до двадцати заинтересованных людей (причем они могут быть даже из разных департаментов).
С одной стороны - это плюс: ты себя все же ощущаешь в своей тарелке (а не как на контрольной), поскольку говоришь о своих вещах, которые хорошо знаешь (а которые плохо знаешь - то о них, соответственно, лучше промолчать). Но с другой стороны, тебя могут спрашивать по ходу твоей презентации вообще какие-то совсем “левые” вопросы, которые в логику твоего рассказа совершенно не к месту. И ничего не поделаешь, нужно отвечать: нужно удовлетворить всех вопрошающих (которые могут быть совершенно из другой области).
Таких интервью может быть больше одного, но редко: очень сложно собрать всех вместе, учитывая разные рабочие календари и т.п.
В целом, такое интервью напоминает стресс-тест лекции, и применяют его больше в исследовательских институтах, поэтому я назвал его “академическим”.
После успешного прохождения такой открытой лекции, Вам придется поговорить с главой лаборатории/исследовательского подразделения, и тут вопросы будут комбинацией поведенческого интервью (об этом ниже в промышленном формате) и вопросов про Вашу компетенцию (но больше высокоуровневых, не детальных).
Промышленный формат
Этот формат достаточно хорошо изучен и описан в Интернете, т.к. поставлен ведущими компаниями на поток. Поэтому здесь я просто кратко перечислю основные моменты, на которые следует обратить внимание.
Чем ниже уровень/ставка (что обычно прямо коррелирует с опытом кандидата) - тем большее внимание уделяется образованию и программистскому интервью. Для кандидатов с опытом важно не просто знать алгоритмы, но и понимать/представлять работу системы в целом - для этого внимание смещается на дизайн-интервью, где важно продумать и объяснить систему с многими неизвестными. Для совсем старших разработчиков становится важным реальные прошлые проекты, их известность (как и компаний, где они были сделаны) и реальная мотивация работать в данной компании.
Теперь пару слов более детально.
-
Программистское интервью: здесь нужно прорешать обычно тот самый пресловутый литкод (сайт с примерными алгоритмическими задачами - leetcode), спрашивать уточняющие вопросы, быть готовым написать код в чистом блокноте, а не в IDE (от англ. Integrated Development Environment - интегрированная среда разработки), самостоятельно обозначить краевые случаи, и провести “гипотетическую” отладку.
-
Дизайн-интервью: важно не закопаться в деталях, а изначально в крупных мазках наметить скелет всей системы, после чего аккуратно постараться добавить “мяса” (технических деталей) в каждый из высокоуровневых модулей. Также для разумного дизайна необходимо будет прояснить ряд вопросов, и здесь как раз ожидаются вопросы от кандидата интервьюеру.
-
На любом уровне важны поведенческие интервью. И хотя их легко можно “надрессировать” (или, как модно говорить, “заоверфититься”: от англ. overfit - переобучение), даже по манере их вести (долго или медленно отвечаете, как слушаете собеседника, как формулируете мысли) кандидату могут поставить как жирный плюс, так и большой минус. Опять же здесь совет - будьте собой, просто сглаживайте углы, и слушайте, что вас спрашивают (больше не значит лучше).