Это не про Яндекс, но очень хорошо может помочь понять как готовиться к собеседованию в крупную IT компанию. Текст не мой, но очень хороший и поучительный, поэтому решил не менять его.
Когда я узнал, что буду проходить собеседование в Microsoft, то решил, что не буду полагаться на удачу, а попытаюсь сделать все возможное, чтобы максимизировать свои шансы на успех. То есть, я действительно хотел собеседование пройти и шел туда не ради тренировки или оценки своих способностей. Времени на подготовку у меня было около месяца, но надо учитывать, что три недели из этого месяца я еще и работал, да и семья немало времени отнимала, хотя и прилагала все усилия, чтобы меня освободить от домашних дел. Получилось, что в день на подготовку мне удавалось тратить от 1 до 4 часов, а если посчитать среднее, то, скорее всего, получится что-то около 1.5 2 часов.
Изначально мои шансы были невелики из-за отсутствия практики: последнее собеседование я проходил много лет назад, и ничего общего с процессом собеседования в Microsoft оно не имело. (Мне не нравится идея, что для подготовки нужно сходить на десяток-другой собеседований, а потом уж все пойдет как по маслу. Что-то в этом есть противоестественное.) Кроме того, разговорная практика на английском у меня тоже была где-то в районе нуля: немногочисленные разговоры с местным населением в заграничных отпусках, пожалуй, составляли весь мой опыт. Тем не менее, я свободно читал технические и большинство художественных текстов и хорошо воспринимал американский английский на слух. Что касается технической подготовленности, то я товарищ любопытный и учиться люблю, Coursera уважаю, умные книжки читаю и перечитываю постоянно, плюс недавняя аспирантура не давала расслабляться, да и работа часто требует включать мозг. При этом всем опыт решения маленьких алгоритмических задач, да еще и на бумаге, отсутствовал у меня почти полностью (весь опыт — несколько SRM на Topcoder), да и решать что-то в спешке, толком не продумав все аспекты, я терпеть не могу. И вообще я слегка тормоз, в смысле, думаю медленно. Это все я пишу, чтобы читатели могли как-то соотнести свой уровень с моим планом подготовки и скорректировать его в нужную сторону.
При подготовке я, разумеется, искал и читал в интернете все, что только мог найти по поводу собеседований в MS, а равно и в Google, Amazon и Yahoo, поскольку их подходы во многом схожи. Большинство тех, кто проходил собеседования, обычно описывают сам процесс (что тоже представляет несомненную ценность), но не описывают подготовку, а если и описывают, то обычно в терминах прочитанных книг (названия которых и так все знают) или изученных/повторенных областей.
Дальнейший рассказ будет строиться так: сначала я расскажу в целом об организации собеседований в MS, потом о нетехнической подготовке, затем приведу теоретический минимум и метод его проработки, и под конец перечислю задачи, которые, как мне кажется, покрывают большинство областей.
Из того, что пишут в интернете, я могу сделать вывод, что процесс отбора кандидатов, во-первых, немного меняется со временем и, во-вторых, в нем могут наблюдаться отклонения в зависимости от статуса кандидата (студент, свежий выпускник, человек с небольшим опытом, человек с большим опытом, &). Я, разумеется, мог наблюдать только ход вещей только со своей колокольни, а именно с точки зрения человека со степенью магистра, полученной 4 года назад, и 7 годами опыта разработки.
Процесс отбора, каким я его наблюдал, происходит в несколько этапов: