На что обращать внимание на алгоритмических секциях собеседований

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

За свою инженерную карьеру я провёл десятки собеседований. Чтобы успешно пройти алгоритмическую секцию, кандидату недостаточно просто написать код. Нужно ещё этот код объяснять и в целом поддерживать беседу — общение здесь неизбежно. 

За время общения с кандидатами я заметил некоторые повторяющиеся ошибки, которых можно избежать, если держать в фокусе внимания сравнительно простые вещи. Возможно, мои наблюдения будут вам полезны при интервью на следующее место работы.

Следите за таймингом

И это не про O(N). На типичном собеседовании по алгоритмам от вас ожидают, что в течение часа-полутора вы напишете решение пары задач. Если ещё и объясните их, будет вообще супер. 

Но частенько случается, что кандидат раньше с задачей не сталкивался и начинает придумывать решение на ходу. Как это происходит: человек посидит-подумает, набросает пару строк. Так, тут не то… Нужно с другого конца, итератор. В общем, сами понимаете.

К чему это приводит? Как правило, к тому, что через 30-40 минут от начала собеседования кандидат приходит в точку, когда нужно «буквально пару циклов дописать, и всё должно заработать». При таком сценарии на второй задаче можно поставить крест.

Совет: следите за временем. Если решаете одну задачу больше 30 минут и находитесь где-то посередине процесса, что-то здесь не так. Справиться с ситуацией можно, проговорив примерное решение словами хотя бы в общих чертах.

Рассказывайте о своём решении

Иногда случается так, что вроде хочется уже начать код писать, а там пристают с каким-то вопросами, вроде «рассказать решение». А иногда даже во время обсуждения решения начинают какие-то уточняющие вопросы задавать и уводить в сторону. Так же и забыть можно, что хотел закодить.

У интервьюера нет цели никого увести с истинного пути. Так делают в основном для того, чтобы убедиться, что кандидат мыслит в верном направлении. Это помогает сразу скорректировать решение, пока человек не влез в дебри реализации. Порой благодаря наводящим вопросам кандидат сам понимает, что его повело немного не туда, и быстро исправляется.

Совет: не ждите, пока вас попросят проговорить основной алгоритм решения. Рассказывайте его сами. Таким образом вы облегчите жизнь и сэкономите время и себе, и интервьюеру.

Решайте проблемы стратегически

Бывало у вас такое, что думаете-думаете над задачей, пробуете-пробуете — и всё никак? Вроде бы подсказок и так много было, и вроде обсудили возможные подходы, но тупик. Что тут можно сделать?

Как вариант, можно до такого не доводить, а попросить перейти к следующей задаче. Если чувствуете, что совсем не идёт, имеет смысл двигаться дальше, чтобы не завалить собеседование. Я не раз видел своими глазами, как кандидат после неудачной попытки на первом вопросе быстро и успешно разбирался со вторым, после чего возвращался к первому и без проблем решал его. Возможно, помогает переключение контекста.

Совет: можно подходить к проблеме с чисто организационной точки зрения, меняя порядок выполнения работ. Бывает, что это помогает.

Не зацикливайтесь на мелочах

Ситуация: вы на собеседовании, задача понятна, путь к решению примерно понятен, код уже выходит из-под клавиш. И тут кажется, что двумя строчками выше можно было сделать красивее и оптимальнее: «сейчас зарефакторим и дальше пойдём, а то потом ещё забудем про эту правку», «этот кусок можно вообще переместить...».

Знакомо? Скажу так: я видел, как при таком исправлении мелочей и рефакторинге кандидаты вообще забывали, что хотели написать в итоге.

Совет: сначала запрограммируйте сам алгоритм, а потом уже занимайтесь украшениями. Не обращайте внимания на мелочи раньше времени. Скорее всего, на интервью от вас будут ожидать понимания алгоритма и способности его воплотить. А оставшееся время можно и на более интересные вопросы оставить.

Заключение

Следуя этим небольшим и, казалось бы, простым принципам, вы можете существенно улучшить положение дел на собеседовании: 

  1. Следите за временем, не тратьте слишком много на одну задачу.

  2. Рассказывайте про решение. Спросите явно, туда ли вы двигаетесь.

  3. Если застряли, меняйте задачи местами, решайте их с конца. Иногда это правда помогает.

  4. Не утопайте в мелочах раньше времени, первым делом — основной алгоритм.

Всем добра, проходите собеседования и получайте классные офферы!

Источник: https://habr.com/ru/company/avito/blog/662922/


Интересные статьи

Интересные статьи

Всем привет! В данной статье пройдемся по двум задачам, взятым с leetcode.com из списка часто встречаемых задач на собеседованиях в FAANG:1. Guess the word2. Number of Good Ways to Split a StringЯ ...
Ранее в одном из наших КП добавление задач обрабатывалось бизнес-процессами, сейчас задач стало столько, что бизнес-процессы стали неуместны, и понадобился инструмент для массовой заливки задач на КП.
Эта статья для тех, кто собирается открыть интернет-магазин, но еще рассматривает варианты и думает по какому пути пойти, заказать разработку магазина в студии, у фрилансера или выбрать облачный серви...
Людям с таким психологическим портретом, как у меня, бесполезно заниматься тайм-менеджментом. Интересно очень многое, проектов одновременно несколько, мышление стратегическое, взаимодействие со...
Тема статьи навеяна результатами наблюдений за методикой создания шаблонов различными разработчиками, чьи проекты попадали мне на поддержку. Порой разобраться в, казалось бы, такой простой сущности ка...