(студент) вопросы интервью - программирование для лаборатории робототехники - PullRequest
5 голосов
/ 14 июля 2010

моя лаборатория робототехники ищет программистов для работы над некоторыми проектами, которые у нас есть на данный момент.

Мы зафиксировали требования (в основном, c ++ и опыт работы с openGL и 3D), но из-за очевидных денежных ограничений мы не можем позволить себе нанять Великих Разработчиков. Вместо этого мы собираемся согласиться на талантливых студентов, предлагая им проекты для их диссертации / диссертации и надеясь на некоторые свежие идеи и креативность с их стороны. Мы также можем позволить себе платить студентам, которые только что закончили обучение (первый опыт работы).

Итак, мой вопрос:

По вашему опыту, как вы обнаружили талантливого студента (ученого или инженера)? Какие вопросы вы задали? Что еще помогло вам найти кандидата, который оказался хорошим программистом? (примечание: они могут не знать много о конкретном языке, но могут учиться довольно быстро)

или, если вы были интервьюируемым,

Какие вопросы были заданы, что заставило вас вскочить на подножку? Или, если у вас был ужасный опыт, что, оглядываясь назад, было явным предупреждающим сигналом, который вы игнорировали?

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

Вместо этого я ищу сказки из вашего опыта. Анекдоты, рассказы, подсказки, все поможет.


Справочная информация:

Немного больше предыстории: работа в академических кругах здесь немного отличается от работы в частном секторе (здесь = Италия). Не существует «крайних сроков» для «продажи» продукта; вместо этого все это основано на концепции. Ничто из того, с чем вы начинаете работать, не гарантирует работоспособность.

Комикс лучше всего описывает это: изобретает колесо

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

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

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

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

Следовательно, мы ищем людей, которые:

  • есть фон, чтобы начать
  • может быть очень независимым
  • do хотите учиться и создавать собственный опыт в новых областях

Ответы [ 5 ]

3 голосов
/ 14 июля 2010

На самом деле, вот мой лучший совет:

Набирайте среди своих учеников.

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

2 голосов
/ 14 июля 2010

Во-первых, в промышленности вопросы кодирования являются нормой - я бы волновался, если бы вопросы о кодировании не задавались!

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

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

Базовые знания полезны, поскольку они показывают, что они заинтересованы в той области, в которойработаем - но действительно знания можно получить.Интеллект гораздо важнее.

Однако вполне возможно иметь умных людей, с которыми невозможно работать!Я не понял, как определить, кто они.

1 голос
/ 14 июля 2010

Я делал такой проект, когда был студентом: проект 4 месяца, работая на полставки. Речь шла не о роботах как таковых.

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

Чтобы определить, мотивирован ли кандидат или нет, начните с вопросов о самом проекте. Если бы они только бросили на него беглый взгляд, они, скорее всего, не мотивированы. Также посмотрите на их опыт / курсы: факультативные курсы по CS, проекты, которые они сделали, и т. Д. ... все, что указывает на то, что они действительно заботятся о CS / разработке в целом и не там только потому, что слышали, что это хорошо оплачивается. 1005 *

Затем возникает вопрос о способностях. Как вы сказали, может быть нелегко найти тех, кто будет достаточно умен, чтобы самому разбираться и ДЕЛАТЬ. Еще раз, вы можете спросить их о прошлых проектах, подробно описав проблемы, с которыми они столкнулись, и способы их решения.

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

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

У нас была проблема с роботом, который не мог анализировать снимки, сделанные камерой, он не мог правильно определить движущиеся объекты сам, у вас есть идея, как бы вы это сделали?

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

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

0 голосов
/ 14 июля 2010

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

0 голосов
/ 14 июля 2010

Как говорят другие, попробуйте нанять кого-нибудь мотивированного!

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

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

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

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

Убедитесь, что кандидаты имеют четкое представление о линейной алгебре и изменениях системы координат, в частности, если они собираются работать с какими-либо трехмерными вещами, такими как OpenGL. По моему опыту, изучение API-интерфейса очень простое, поэтому вы будете меньше думать о том, как преобразования работают.

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

Если бы я нанимал кого-то для теоретической работы, я бы, возможно, ослабил бы навыки CS / программирования и сосредоточился бы больше на знании математики. Кто-то с твердыми математическими навыками легко поймет CS, а программирование - это просто программирование.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...