Хорошие проекты программирования интервью [закрыто]

26

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

Один из примеров - взять этот абзац текста и вернуть список алфавитных уникальных слов. После каждого слова скажите мне, сколько раз слово появилось и в каком (-их) посылке (-ях) слово появилось.

У кого-нибудь есть хорошие предложения?

bigtang
источник
Вопросы конкурса ACM по программированию. Вы можете найти архив этих вопросов здесь .
whatsisname
1
Будут ли вам интересны эти сайты по программированию? programmers.stackexchange.com/questions/756/programming-puzzles/…
grokus

Ответы:

43

Я давно пришел к выводу, что ничто не может сделать за короткое время, может сказать мне что-нибудь полезное об этом человеке. Но у каждого хорошего кандидата уже есть личные проекты, которые могут многое вам рассказать. Поэтому я заменил конкретные задачи на «дайте мне кусок кода, которым вы гордитесь и с удовольствием ставите свое имя».

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

прецизионный самописец
источник
4
Я помню, как проходил собеседование в компании, мне давали довольно простую (15-20 строчку) функцию, и меня спрашивали: «Что это делает?» Я сказал им, а затем спросил: «Кто-нибудь ошибается?». Мне сказали, что большинство опрошенных не смогли ответить. Может быть, это быстрая альтернатива (я не знаю никого, кто мог бы читать код, который не может его написать, но, возможно, я просто не встретил не тех людей).
TMN
4
@ TMN - О, мы тоже немного этим занимаемся. Но я встречал людей , которые могут читать код и не писать его хорошо .
фунтовые
@TMN Будучи самоучкой, я потратил значительное количество времени на чтение кода на ранних этапах, вплоть до того, что он стал гораздо лучше читать, чем писать. Это может случиться и происходит, просто требуется время и практика, чтобы поднять навык написания.
Джимми Хоффа
28

Я так устал от этой глупой игры. Я был в местах, где меня просили образцы кода, разорвал их на части, а затем попросил объяснить пример кода из их систем, который выглядел так, как будто он был написан взломанными 2-летними детьми. Меня попросили реализовать малопонятные алгоритмы сортировки, сетевые сервисы, графические интерфейсы, структуры данных (всегда либо дерево, либо связанный список). Каждый вопрос о раздражающем раздражающем вопросе о том, что интервьюер считает наиболее важной частью программирования.

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

Satanicpuppy
источник
8
Кодирование простого алгоритма, подобного описанному выше, не является «умом-игрой». Возможность сделать что-то подобное должна быть предпосылкой даже для прохождения собеседования (и это в моей компании). Это очень полезно для отбора кандидатов, которые в противном случае отлично выглядят на бумаге. Последнее, что я хочу сделать, это потратить часы на интервью с кем-то, кто не может написать функцию, чтобы определить, является ли строка палиндромом. Вы будете поражены количеством докторов наук из лучших школ, которые не могут сдать экзамен Bigtang. Короче говоря, возможность пройти такой тест необходима, но не достаточна.
Джер
+1 @ Джер. В прошлый раз, когда я брал интервью у программиста, шесть из восьми кандидатов не могли выполнить самые основные задачи (даже с Google и SO). Я ни за что не позволю им приблизиться к моей реальной базе кода на пять минут, не говоря уже о 30 днях.
Джулия Хейворд,
2
@JuliaHayward: я ожидаю, что кто-нибудь сможет завершить проект с доступом к веб / документации. Проблема возникает, когда кто-то начинает подбрасывать модные слова и неясные алгоритмы сортировки в вас, не имея доступа к Интернету, из-за ложного предположения о том, что запоминание различных методов сортировки или чего-либо еще имеет решающее значение для повседневной работы.
Satanicpuppy
12

Разрешение кому-либо заниматься практическим проектом в свое время не обязательно означает, что это он делает.

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

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

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

Мы считаем, что это в сочетании с предыдущей работой - лучшие способы отфильтровать кандидатов.

ОБНОВЛЕНИЕ 2016/06/15

Мы значительно изменили наш процесс в том, как мы нанимаем разработчиков.

Этап 1: 15-минутное телефонное интервью, на котором мы задаем 7 вопросов. Первые 2: «Что самое веселое, над чем ты работал?» (не обязательно должен быть связан с программированием) и «Что вы пишете для развлечения в свободное время?».

Этап 2: мини-проект, который они выполняют в свое время. Затем мы делимся с ними экранами, и они показывают нам, что они создали. Во время совместного использования экрана мы также заставляем их внести два изменения в свой проект, а затем посмотреть, как они работают над ним и заставить его работать.

Этап 3: личное интервью.

Этот процесс позволяет нам сразу определить культуру (фаза 1). Могут ли они выполнять работу и действительно разговаривать (фаза 2). Наконец, убедитесь, что их значения соответствуют тому, что мы ищем (фаза 3).

RDL
источник
1
Это что-то блестящее. Мне это нравится!
Дэвидхаскинс
3
хотя я был во многих интервью, которые превращаются в пустяки. Будьте осторожны, чтобы не увязнуть в этом конкретном фрагменте sysntax и не начать понимать их в широком масштабе. Особенно, если предполагается, что у них есть немного таланта или интереса. В результате я не хотел работать на них, и я уверен, что это было взаимно.
Джон Николас
«Позволить кому-то заниматься практическим проектом в свое время не обязательно означает, что это делают они» - правда, но я еще не встречал кого-то достаточно смелого, чтобы прийти на собеседование и допросить его код не написано. Если это произойдет, они не пройдут через собеседование и стажировку, но я могу пересмотреть мой подход.
фунтовые
@John. Согласен, это не может быть "о, ты там запятую запомнил". Как я уже говорил, это понимание того, как к этому подходят и понимают ли они язык. Если они знают, что их вещи определенно переходят к большим вещам.
RDL
2
@RDL, большая часть нашего собеседования разработана для того, чтобы быть интересной для того разработчика, которого мы ищем, и чертовски остальным. Вы знаете, как хорошие разработчики не могут противостоять вызовам.
фунтовые
4

Возможно, вы захотите проверить фантастическое кибер-додзё Джона Джаггера .

Это интегрированная веб-среда, предназначенная для целенаправленной практики разработки через тестирование и изучения динамики команды. Он имеет множество небольших задач программирования (ката) и поддерживает широкий спектр языков, от Python и Ruby до Java и C ++.

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

Лучше всего, после выполнения ката вы можете вернуться и посмотреть на красно-зеленую прогрессию (или, может быть, нет, если они не выполняют TDD * 8 ') каждого из ката. Каждая компиляция / тест фиксирует изменения в git-репозитории вместе с результатами теста.

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

Если вам нужен собственный сервер CyberDojo, весь проект можно найти на github, и оттуда даже связана виртуальная машина устройства под ключ Linux, что означает, что при условии, что у вас уже установлен проигрыватель VMware или VirtualBox , вы можете запустить и запустить в несколько минут загрузки устройства!

Марк Бут
источник
3

Я только взял интервью с одной компанией, которая сделала это. Они дали вопросный лист из 6 или 7 задач. Инструкции должны были сделать метод для решения каждой проблемы.

Одной из задач было понять, что вы можете повторно использовать код. Проблемы могут использовать код из других решений. Это не было последовательным. Например, вопрос 3 может быть написан с использованием метода, используемого для вопроса 5.

Я бы предложил попробовать что-то подобное.

Что касается вопросов? Некоторые из начальных вопросов на сайте Project Euler хороши.

Вы также можете попробовать простую игру, если хотите посмотреть, как они могут собрать проект.

Или, если вы не хотите что-то придумывать, попросите их прислать вам код из окончательного проекта.

Tyanna
источник
3

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

Один из примеров - взять этот абзац текста и вернуть список алфавитных уникальных слов. После каждого слова скажите мне, сколько раз слово появилось и в каком (-их) посылке (-ях) слово появилось.

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

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

Калеб
источник
Извините, что потратил впустую ваше время.
Bigtang
1
@bigtang, это совсем не так. Извините, если вышеперечисленное сработало - я могу понять, как это возможно, - но моя цель состояла в том, чтобы создать кейс для создания собственного проекта, основанного на навыках, которые вы ищете для новых сотрудников. Вы можете сделать небольшой проект из почти чего угодно, но для того, чтобы он был полезен и вам, и собеседникам, требования должны основываться на навыках, которые вы цените больше всего.
Калеб
Полностью удалено первое предложение (с уважением, если вы не достаточно умны, чтобы придумать достойный проект самостоятельно, что заставляет вас думать, что вы достаточно умны, чтобы оценивать предложения кандидатов? ") ценность и действительно казалась немного ненормальной.
Майкл Даррант
0

Один из примеров - взять этот абзац текста и вернуть список алфавитных уникальных слов. После каждого слова скажите мне, сколько раз слово появилось и в каком (-их) посылке (-ях) слово появилось.

На каком языке они написали бы это? Если они выходят из школы, в которой основное внимание уделяется C, то писать ее будет не так быстро, как учить Python / Perl / Ruby и т. Д. ... Или даже Java или C #. Тем не менее, это хороший маленький тест.

Во время интервью я предлагаю несколько более простых. Никаких хитрых вопросов. Я с TMN на этом. Дайте им пару функций, которые выполняют основные задачи и спросите, что они делают (читая чужой код). Затем дайте им пару основных заданий (<20 строк), чтобы написать на языке по своему выбору. Этого должно быть достаточно, чтобы начальный уровень знал, могут ли они кодировать или нет (в позиции начального уровня). Это вместе с собеседованием и GPA должно дать вам хорошее представление о том, что вам нужно знать.

Пробудить
источник
1
Я не считаю язык критическим, это можно сделать даже с помощью псевдокода. Основная идея состоит в том, чтобы увидеть, «входит» ли предполагаемый сотрудник и показывает ли это хорошие признаки решения проблем.
Йонас Быстрем
Честно говоря, любой язык с split () и массивами / списками (с push / append) сделал бы это тривиальным. Позвольте программисту C 'принять' split () и список, и это станет таким же тривиальным :-)
ChuckCottrill
-1

Попросите их реализовать «Игру жизни» Конвея для любого языка, на который вы смотрите, используя парадигмы дизайна этого языка.

Игра Жизни на Java или C # Conway должна быть объектно-ориентированной, LISP или F # - функциональной и т. Д.

Джордж Стокер
источник
2
Как долго вы дадите им, чтобы завершить это?
Работа
У меня уходит около 4 часов, чтобы пройти через целую ОО-реализацию, но сейчас я делал это около десятка раз. Если вы хотите увидеть, как они думают и как далеко они продвинулись (и пишут ли они тестируемый код или нет), дайте им меньше времени, чем это. Если вы делаете это лично, то дайте им 45 минут и посмотрите, как далеко они продвинулись и почему они выбрали путь, который они сделали. Это одна из тех проблем, о которых вы хотите, чтобы они знали заранее, чтобы они не были полностью потеряны, даже побудите их попробовать это самостоятельно. Это многое говорит о программисте.
Джордж Стокер
8
Попросил кандидата написать «Игры о жизни» Конвея, чтобы узнать, как недавно они учились в колледже или написали и изучили эту проблему. Вы бы наняли @ Джорджа Стокера, потому что он написал это дюжину раз. Насколько тесно связана Игра Жизни с какой-либо реальной разработкой?
ChuckCottrill