Насколько я понимаю, наличие ошибки (даже опечатка типа «или») в коде вашей доски часто будет стоить вам очков интервью. Избегая этого, вы неизбежно будете снова и снова создавать один код для корректуры (теряя время и, возможно, нервную энергию / концентрацию) или даже используя более простой (и, следовательно, менее эффективный) алгоритм - и оба эти способа снова «дорогостоящие»!
Итак, почему бы не просто быстро написать код, столь же элегантный и эффективный, как если бы в вашем распоряжении была (модульная) среда тестирования, а затем просто протестировать ее (просто на доске)?
Кто-нибудь пробовал / видел этот подход? Достойна ли вся идея?
[это также относится к случаю с ручкой и бумагой, конечно]
Ответы:
Я абсолютно хочу, чтобы вы протестировали код доски, который я прошу вас написать. Я хочу, чтобы вы говорили вслух, пока вы пишете, просматриваете, обнаруживаете большинство синтаксических ошибок, которые вы сделали, и указываете, как это может быть более эффективным. На самом деле, это своего рода смысл делать это на доске. Это не одноразовый, пиши все-таки, ну-а-а-а-а-а-а-а-а-а-а-а-а, Это разговор, опосредованный кодом и проведенный за доской вместо моего стола.
Вот несколько отличных способов не пройти тест «Кодирование доски»:
(например: напишите это на Фортране, интерпретируйте «display» или «print» как «запись в журнал событий», что-то в этом роде. Я мог бы разрешить это, если вы заранее сказали мне, что это были ваши предположения)
(Мы здесь консультанты. Я проверяю поведение консультантов так же, как и кодирование. Спрашивать клиента правильно, только если у клиента действительно есть выбор. Управлять разговорами с людьми, которые будут вам платить, сложно. Это урок 1. Это отметьте себя на любую тему, но для конкретного «вы нанимаете программиста на X, но я не хочу писать для вас на X», теперь у вас есть две большие черные отметки.)
(вы думаете, что я преувеличиваю, но у меня был парень, который резко обобщил мою проблему - придерживаясь приведенного выше примера, скажем, вместо 1 - 5 его решение сделало бы любую произвольную последовательность целых чисел (откуда взято? Интересно) и было 5 столько же раз, сколько кто-либо другой - и он забыл на самом деле вызвать функцию, которая выполняла эту работу. Повторение подсказок и предложение, чтобы он прошел через это, как будто он был отладчиком, не привело к тому, что он заметил, что функция никогда не вызывается.)
Я всегда говорю "тебе это нравится?" "Вы можете улучшить это?" «проведи меня через это» и тому подобное. Как правило, пропущенная точка с запятой обнаруживается, или один за другим, в этом разговоре. Если нет, я обычно отмечаю это до нервов.
Другие вещи, которые вы можете не иметь значения на доске, которые важны для меня:
Я настоятельно рекомендую практиковать кодирование на доске. Я всегда предупреждаю интервьюируемых, что их попросят это сделать. Если у вас есть доступ к реальной доске, то поставьте перед собой несколько простых задач и попрактикуйтесь в их решении. Это поможет вашей производительности и вашей уверенности.
Извините, я знаю, что нахожусь на территории TL; DR, но вот в чем дело - кодирование на доске - это больше, чем кодирование . Это проверка не только понимания синтаксиса. В ваших ответах на эту задачу продемонстрировано множество поведений хороших программистов. Если вы думаете, что речь идет только о кодировании, вы упускаете суть.
В других разговорах о тестировании доски люди говорили мне, что я могу отказаться от хорошего кандидата. Честно говоря, это риск, на который я готов пойти. Каждый раунд найма содержит несколько человек, которых я могу нанять. Некоторые люди с отличным резюме, у которых все хорошо в части вопросов и ответов на интервью, разваливаются на доске и явно не могут (с любым количеством подсказок) написать простой код на языке, который, как они утверждают, знают. Я мог бы нанять некоторых из них. Любой инструмент, который предотвращает это, я буду продолжать использовать. Я никогда не заканчивал тем, что нанимал лодку, потому что все мои кандидаты запутались в доске, и я не ожидаю, что когда-либо буду.
источник
Я думаю, что вы сделали неверное предположение здесь. Я бы не ожидал, что кандидат, пишущий код на доске, сможет получить каждый ';' отлично на месте. Если вы проводите собеседование в месте, которое вас за это наказывает, то я полагаю, что это не та организация, в которой вы хотите работать :-).
источник
Тесты на бумаге или доске крайне неэффективны. Я помню, как однажды у меня было интервью, где мне приходилось искать ошибки в каком-то коде на бумаге. Одним из них было то, что класс унаследован от интерфейса, но отсутствует реализация члена. Я знал, что это, вероятно, одна из ошибок, я искал ее и по какой-то причине на месте я просто не мог ее увидеть (хотя я упоминал, что я искал это как одну из проблем).
Так получилось, что я все же получил эту работу, но это заставило меня задуматься о том, что произошло. В реалистичном сценарии для такого рода вещей я собираюсь получить волнистые линии в тот момент, когда что-то не так (это C # в Visual Studio), и вещь не собирается компилироваться. Я никогда не проверяю это в реальной жизни, потому что это никогда не происходит (это невозможно), и, следовательно, я расстроен, увидев подобные вещи. Отсутствующие точки с запятой являются еще более ярким примером этого - абсолютно нереально в реальном мире, если вы не пишете в блокноте и не посылаете свой код кому-то еще для компиляции!
Если кто-то просит использовать доску во время интервью, чтобы поддержать что-то, что он хочет сказать, тогда замечательно, но я бы никогда не сделал это наоборот.
источник
Я сделал это. На собеседовании меня попросили внедрить кодирование длины прогона на доске, и хотя я сократил часть кода (объясняя, что я сокращал), чтобы он подходил к доске, я все же придумал набор тестов для этого устройства, и проверил один из них, чтобы проверить мое решение и показать, как может помочь тестирование. Мне предложили эту должность, поэтому я полагаю, что тестирование было полезным или, в худшем случае, не раздражающим.
источник
Я использую этот подход при сдаче тестов для школы. Сначала я пишу функцию, затем в стороне пишу небольшую таблицу входов, выходов и переменных. Я поймал несколько глупых ошибок таким образом. Тестирование, даже тестирование на бумаге / доске, всегда лучше, чем не тестирование.
Однако я не согласен с тем, чтобы в профессиональной обстановке волноваться из-за точек с запятой.
источник
Просить кандидата написать код на доске глупо. Существуют современные инструменты, такие как сниппиты, jsfiddle и intellisense. Кроме того, никакой инженер не должен запоминать синтаксис. Синтаксис ищется и на него ссылаются. Если вы запоминаете код, вы, вероятно, не потратили времени на карьеру, изучая, как программировать в мультитенантной среде, оптимизируя синтаксис или даже размещенную среду.
источник
Когда ресторан хочет нанять шеф-повара, владелец не просит его приготовить «горшочек с зубочисткой» и зубочистку.
Не просите разработчика написать код на доске в интервью.
источник
Кодирование белой доски жесткое. Я никогда не знакомился с этим, пока я не дал интервью Диснеем. Не зная, чего ожидать и не имея возможности отладить его, я наткнулся на него, обсуждая и решая проблему, но в некотором роде псевдокод. Когда они спросили, может ли он бежать.
Я имею в виду, конечно, вы могли бы просто исправить ошибки синтаксиса, исправить. Я считаю, что они потеряли очень хорошего кандидата, если бы меня не наняли из-за доски. Я смотрю на квалификации, и похоже, что я достаточно квалифицирован для этой должности и могу выполнять свою работу. Я преуспеваю в своей нынешней работе и хотел бы с ними справиться.
Спасибо за ваш вклад, Кейт, я читаю каждое слово. Мне как программисту, белая доска действительно не показывает твои навыки. Я отличный программист, работающий на нескольких языках. Я знал язык, на котором меня просили программировать, но на белой доске я вдруг забыл.
Я строю сложную интеграцию и обработку кредитных карт, но на белой доске я не мог вспомнить, как даже сделать правильный синтаксис, мне ничего не подсказывало.
Как работодатель мне нравится тестирование белой доски; Тем не менее, я нанимаю программиста, я хочу видеть их настоящие навыки, если они делают работу. Здорово, если они могут общаться, но мне нужно, чтобы они могли решать проблемы.
источник