(студенческие) вопросы об интервью - программирующий для лаборатории робототехники

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

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

Таким образом, мой вопрос:

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

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

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

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

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


Фон:

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

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

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

Мудрый кодированием, программируя сделанный исследователями... ужасно. Я борюсь для получения системы управления версиями в постоянном употреблении, люди должны упорно искаться, чтобы сообщить об ошибках и зарегистрировать их код, все - coded-so-that-it-works, и редко мы возвращаемся к старому коду для 'исправления ошибок'. В основном, после того как это является несколько рабочим, проект закрывается, и люди идут работа над другим проектом.

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

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

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

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

5
задан 2 revs, 2 users 100% 9 December 2011 в 19:16
поделиться

5 ответов

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

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

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

3
ответ дан 14 December 2019 в 13:25
поделиться

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

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

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

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

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

2
ответ дан 14 December 2019 в 13:25
поделиться

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

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

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

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

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

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

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

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

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

1
ответ дан 14 December 2019 в 13:25
поделиться

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

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

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

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

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

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

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

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

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

0
ответ дан 14 December 2019 в 13:25
поделиться

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

0
ответ дан 14 December 2019 в 13:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: