Главная ошибка на coding interview
На дворе пятница, поэтому у нас гостевой пост. Сегодня к нам пожаловал Илья Шишков, разработчик с 20-летним опытом, эксперт в С++, опытный технический интервьюер, спикер и ведущий IT-конференций. Я попросил Илью подготовить текст на тему того, какая самая главная ошибка на coding interview. Давайте посмотрим, что вышло.
Привет, это Илья!
— Я 11 лет был разработчиком в Яндексе и за это время провёл более 200 секций с написанием кода.
— Как кандидат я прошёл порядка 50 таких секций, завалив 3-4 из них.
— Сейчас я индивидуально работаю с несколькими людьми, и в рамках этой работы мы регулярно проводим mock-interview.
❗️Во всех этих случаях я вижу, что самая частая причина неудачи на интервью — это преждевременная имплементация.
Кандидат придумал идею решения, в его голове сложился алгоритм, и он со словами «ну тут всё понятно» бросается писать код. Я даже понимаю, какое чувство в этот момент рождается внутри — нетерпение и щемящий грудь энтузиазм поскорее закодить то, что ты только что придумал.
Человек начинает писать код и ... минут через 5-10 вязнет, понимая, что не придумал, как он обработает крайние случаи. Или просто раз за разом переписывает условие главного цикла в своём решении. Или вдруг осознаёт, что не «всё тут понятно» и просто впадает в ступор.
Что происходит дальше? Человек так и остаётся в этом ступоре, пытаясь локальными правками и костыльными if'ами исправить все ошибки. Такие исправления обычно приводят к новым багам, и это затягивается до конца секции.
Я видел это так много раз, что когда сейчас слышу «ну тут всё понятно», просто останавливаю кандидата и заставляю самым подробным образом рассказать мне, какой алгоритм он собрался писать. Обычно это заставляет его задуматься о том, что ещё не успело прийти в голову.
Как же избежать преждевременной имплементации?
Очень просто — перед написанием кода продумать структуру всей вашей программы. Какие входные данные будут у главной функции? Что вы с ними сделаете сначала, что потом? Как сформируете ответ? И т.д.
Это занимает около минуты, но потом экономит вам десятки минут на реализацию. И это всегда можно сделать, потому что решения алгоритмических задач на собеседованиях довольно маленькие и всегда целиком помещаются в голову.
P.S. Если пост Ильи показался вам полезным, подписывайтесь на его канал Илья Шишков: код, собесы, IT. Там он делится своим опытом прохождения собеседований в разные компании, а также приёмами для прохождения алгоритмических собеседований в Яндекс-like компании.
Всем отличной пятницы!🍹
На дворе пятница, поэтому у нас гостевой пост. Сегодня к нам пожаловал Илья Шишков, разработчик с 20-летним опытом, эксперт в С++, опытный технический интервьюер, спикер и ведущий IT-конференций. Я попросил Илью подготовить текст на тему того, какая самая главная ошибка на coding interview. Давайте посмотрим, что вышло.
Привет, это Илья!
— Я 11 лет был разработчиком в Яндексе и за это время провёл более 200 секций с написанием кода.
— Как кандидат я прошёл порядка 50 таких секций, завалив 3-4 из них.
— Сейчас я индивидуально работаю с несколькими людьми, и в рамках этой работы мы регулярно проводим mock-interview.
❗️Во всех этих случаях я вижу, что самая частая причина неудачи на интервью — это преждевременная имплементация.
Кандидат придумал идею решения, в его голове сложился алгоритм, и он со словами «ну тут всё понятно» бросается писать код. Я даже понимаю, какое чувство в этот момент рождается внутри — нетерпение и щемящий грудь энтузиазм поскорее закодить то, что ты только что придумал.
Человек начинает писать код и ... минут через 5-10 вязнет, понимая, что не придумал, как он обработает крайние случаи. Или просто раз за разом переписывает условие главного цикла в своём решении. Или вдруг осознаёт, что не «всё тут понятно» и просто впадает в ступор.
Что происходит дальше? Человек так и остаётся в этом ступоре, пытаясь локальными правками и костыльными if'ами исправить все ошибки. Такие исправления обычно приводят к новым багам, и это затягивается до конца секции.
Я видел это так много раз, что когда сейчас слышу «ну тут всё понятно», просто останавливаю кандидата и заставляю самым подробным образом рассказать мне, какой алгоритм он собрался писать. Обычно это заставляет его задуматься о том, что ещё не успело прийти в голову.
Как же избежать преждевременной имплементации?
Очень просто — перед написанием кода продумать структуру всей вашей программы. Какие входные данные будут у главной функции? Что вы с ними сделаете сначала, что потом? Как сформируете ответ? И т.д.
Это занимает около минуты, но потом экономит вам десятки минут на реализацию. И это всегда можно сделать, потому что решения алгоритмических задач на собеседованиях довольно маленькие и всегда целиком помещаются в голову.
P.S. Если пост Ильи показался вам полезным, подписывайтесь на его канал Илья Шишков: код, собесы, IT. Там он делится своим опытом прохождения собеседований в разные компании, а также приёмами для прохождения алгоритмических собеседований в Яндекс-like компании.
Всем отличной пятницы!🍹