Whiteboarding (Пишем код на доске)

от автора

Во время прохождения технического собеседования, почти наверняка вас попросят написать код на доске. Несмотря на то, что данный подход часто критикуют, он всё еще популярен у таких технических гигантов, как Google, Facebook, Microsoft, Amazon, а так же, во многих стартапах.

В данной статье я не буду обсуждать жизнеспособность данного приёма (однако, считаю, что он полезен, т.к. позволяет посмотреть на то, как кандидат справляется с проблемами). Вместо этого, давайте рассмотрим типичные ошибки при прохождении интервью.

За кулисами

Чтобы не быть голословным скажу, что за 6 лет работы в Google я провел около 200 собеседований. Как известно, собеседования в Google достаточно сложные и отдел кадров часто связывается с кандидатами, даже если они не прислали примеры кода.

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

Чуть позже, я поменял работу и собеседовался в нескольких компаниях и стартапах в кремниевой долине (Silicon Valley). Таким образом, у меня была возможность посмотреть на весь этот процесс и с другой стороны.

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

Не спешите

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

Задавайте вопросы

Нередко вопросы на собеседовании имеют намеренно расплывчатую формулировку. Интервьюер хочет увидеть то, как вы справляетесь с неопределённостью и понять направление ваших мыслей при этом. Каковы ограничения, когда вы имплементируете какой-то алгоритм? Память, время выполнения, размер входных данных, и т.д.

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

Пишите код так, как Вы это обычно делаете

Одна из самых распространенных ошибок заключается в том, что кандидаты теряются в своих ответах. Надеюсь, вы не пишите функции, длинной в 50 строк в реальной жизни. В таком случае, не стоит этого делать и на собеседовании. Очень важно разделять код при работе на доске — ведь вы не можете редактировать, вырезать и вставлять фрагменты. Да и в пылу собеседования, очень легко запутаться.

Проверяйте свою работу

Когда Вы считаете, что закончили, проверьте то, что сделали.

Большинство ошибок случается под конец. Чтобы их избежать, можно пройтись по коду с некоторыми тестовыми входными данными… Это не будет выглядеть так, как будто-бы Вы что-то забыли, или совершили ошибку. Вряд ли интервьюер будет возражать, если Вы потратите на проверку какое-то время. Напротив, он будет впечатлён этим.

Убедитесь в том, что Ваш код корректно обрабатывает нетипичные входные данные и граничные значения. Продумайте модульные тесты к коду (Unit Tests) и запишите их на доске.

Практикуйтесь

Наверняка, при подготовке к интервью, вы будете вспоминать алгоритмы, читать о новейших технологиях и лучших практиках(приемах) разработки. Выделите время, и напишите код на доске (или даже на листке бумаги, если у Вас нет доски).

Продумайте, как бы вы реализовали helper для JQuery или метод из стандартной библиотеки вашего любимого языка. Поищите в интернете примеры вопросов, но игнорируйте сайты, которые рассказывают о крышках канализационных люков.

Когда Вы считаете, что закончили, возьмите свой код и проверьте, действительно ли он работает. Обратите особое внимание на то, что не работает.

Собирайте информацию

Предположим, Вы хотите работать в компании, в которой проходите собеседование. Постарайтесь поинтересоваться тем, что они вообще делают.

Несомненно, Вас спросят о продукции компании и “почему Вы хотите работать у нас”. Могут возникнуть трудности с хорошим ответом на месте. Так что, заранее разузнайте о компании и продумайте, что Вы будете говорить.

Получайте удовольствие

Прежде всего, постарайтесь получить удовольствие от происходящего. Будьте любопытны и наслаждайтесь вызовом. Вы многое почерпнёте в процессе прохождения собеседования, и, скорее всего улучшите свои навыки. Наблюдая за Вами, интервьюер смотрит на то, хотел бы он работать вместе с Вами, или нет.


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

от переводчика: старался делать упор на читабельность. Возможно, где-то в ущерб точности.
Ошибки? Опечатки? Пишите в ЛС — обязательно всё исправлю.

в продолжение темы habrahabr.ru/post/186002/
(одна из ссылок была на эту статью)

ссылка на оригинал статьи http://habrahabr.ru/post/201772/