Гарні проекти програмування інтерв'ю [закрито]


26

Я шукаю кілька невеликих проектів програмування, які можу дати потенційним співробітникам, щоб оцінити свої можливості програмування. Це будуть програмісти прямо з коледжу. Я шукаю проекти, які потребуватимуть когось пару годин, і вони відправлятимуть відповіді по електронній пошті після інтерв'ю.

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

Хтось має хороші пропозиції?


Питання конкурсу ACM програмування. Архів цих питань можна знайти тут .
whatsisname

1
Ці сайти з програмуванням головоломки були б вам цікаві? programmers.stackexchange.com/questions/756/programming-puzzles/…
grokus

Відповіді:


43

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

Їх вибір проекту підказує вам більше, ніж будь-яке годинне завдання. І тоді ви можете витратити годину на її обговорення, щоб дізнатися ще більше.


4
Я пам’ятаю інтерв'ю в компанії і отримували досить просту функцію (15-20 рядків) і запитували "Що це робить?" Я сказав їм, а потім запитав: "Хтось не так помилився?". Мені сказали, що більшість людей, яких вони опитували, не змогли відповісти. Можливо, це швидка альтернатива (я не знаю нікого, хто може прочитати код, який не може його написати, але, можливо, я просто не зустрів невірних людей).
TMN

4
@TMN - О, ми також це робимо трохи. Але я зустрів людей, які вміють читати код і не пишуть його добре .
пдр

@TMN Будучи самоучкою, я витратив чимало часу на читання коду рано, до того, щоб його набагато краще читати, ніж писати. Це може і трапитися, просто потрібен час і практика, щоб виховувати навички написання.
Джиммі Хоффа

28

Я так втомився від цього розумного гріха. Я був у місцях, де просили мене зразки коду, розірвав їх, а потім попросив мені пояснити приклад коду з їхніх систем, який виглядав так, як його написали розтріскані дворічні діти. Мене попросили реалізувати незрозумілі алгоритми сортування, мережеві сервіси, guis, структури даних (завжди або дерево, або пов'язаний список). Кожен аромат неприємного питання про те, що інтерв'юер вважає найважливішою частиною програми.

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


8
Кодування простого алгоритму, як описаний один bigtang, як мінімум, не є «розумним». Можливість зробити щось подібне має стати необхідною умовою навіть пройти співбесіду (і це у моєї компанії). Це дуже корисно для перевірки кандидатів, які в іншому випадку виглядають чудово на папері. Останнє, що я хочу зробити, - це витратити години на опитування того, хто не може написати функцію, щоб сказати, чи є рядок паліндром. Ви були б вражені кількістю кандидатів технічних наук з кращих шкіл, які не можуть скласти тест на bigtang. Коротше кажучи, можливість пройти такий тест є необхідною, але недостатньою.
Джер

+1 @Jer Востаннє, коли я брав інтерв'ю у програміста, шість із восьми кандидатів не змогли виконати найосновніші завдання (навіть із Google та SO). Ні в якому разі я б не пустив їх біля своєї реальної бази даних на п’ять хвилин, не кажучи вже про 30 днів.
Джулія Хейвард

2
@JuliaHayward: Я б очікував, що хтось зможе завершити проект із доступом до веб / документації. Проблема виникає, коли хтось починає викидати модні слова та незрозумілі алгоритми сортування без доступу до Інтернету, за помилковим припущенням, що запам’ятовуючи різні методи сортування чи що завгодно важливо для щоденного виконання роботи.
Satanicpuppy

12

Дозволити комусь зробити практичний проект самостійно, не означає, що саме вони це роблять.

Усі приходять рано на співбесіду (ну, принаймні, слід). У нас є лист "поки ви чекаєте", щоб вони працювали, поки ми не будемо готові їх побачити. У ньому є вісім (8) питань, які перевіряють знання здобувачів мовою, якою ми користуємося насамперед.

Ми не шукаємо відповіді, щоб усі були правильними, оскільки кожен може їх правильно отримати з комп’ютером. Ми шукаємо процес, чи намагаються вони навіть поставити питання, як вони дістають відповіді.

Коли ми вступаємо в інтерв'ю, ми перебираємо їх із ними і відповідаємо на будь-які питання, які можуть виникнути, що також може привести їх до отримання правильної відповіді. Це також дозволяє нам запитати, як вони отримали відповіді, до яких вони придумали.

Ми вважаємо, що це в поєднанні з попередньою роботою - найкращі способи відфільтрувати кандидатів.

ОНОВЛЕННЯ 2016/06/15

Ми значно змінили наш процес у тому, як наймаємо розробників.

Фаза 1: 15-хвилинне телефонне інтерв'ю, де ми задаємо 7 питань. Перші 2 - "Що найсмішніше, над чим ти працював?" (не обов’язково пов’язане з програмуванням) та "Що ви кодуєте для розваги у вільний час?".

Фаза 2: Міні-проект, який вони виконують самостійно. Потім ми ділимося з ними екраном, і вони показують нам, що вони створили. Під час роботи на екрані ми також змушуємо їх внести дві зміни до свого проекту, а потім спостерігаємо за тим, як вони працюють над цим проектом та працюють над цим.

Фаза 3: Інтерв'ю особисто.

Цей процес дозволяє нам зрозуміти, що культура підходить відразу (фаза 1). Якщо вони вміють виконувати роботу і насправді гуляти своїми розмовами (фаза 2). Нарешті, переконайтесь, що їх значення відповідають тому, що ми шукаємо (фаза 3).


1
Це свого роду блискуче. Мені це подобається!
davidhaskins

3
хоча я був у багатьох інтерв'ю, які перетворюються на дрібниці. Будьте обережні, щоб не зациклюватися на цьому конкретному елементі синтаксису, і ввійдіть у їх широке розуміння. Особливо, якщо вони, як стверджується, мають трохи таланту чи інтересу. в результаті я не хотів працювати на них, і я впевнений, що це взаємно.
Джон Миколай

"Дозволити комусь зробити практичний проект самостійно, це не означає, що саме вони це роблять" - Правда, але я ще не натрапив на когось досить сміливого, щоб прийти на співбесіду і бути допитаним за кодом, у якого вони є не написано. Якщо це станеться, вони не збираються пройти співбесіду та стажування, але я можу переглянути свій підхід.
пдр

@John. Домовились, це не може бути "ой, ви забули там кому". Як я вже згадував, це зрозуміти, як підходить справа та чи розуміють вони мову. Якщо вони знають, їх речі обов'язково переходять до великих речей.
RDL

2
@RDL, Більшість наших процесів інтерв'ю розроблені таким чином, щоб бути цікавим для розробника, якого ми шукаємо, і для решти. Ви знаєте, як добрі чорти не можуть протистояти виклику.
пдр

4

Можливо, ви захочете перевірити фантастичне Кібер-Доджо Джона Джаггера .

Це веб - інтегроване середовище , призначена для виконання усвідомленої практики в Test Driven Development і вивчення динаміки команди. У ньому багато невеликих завдань програмування (ката) та підтримує різні мови: від Python та Ruby до Java та C ++.

На відміну від IDE, розробленого для продуктивності, немає завершення коду, підсвічування синтаксису або автоматичного рефакторингу, так що ви можете побачити, що ваш інтерв'ю може зробити без них.

Найкраще, після того, як ви зробите ката, ви зможете повернутися назад і подивитися на червоний / зелений прогрес (а може і ні, якщо вони не роблять TDD * 8 ') кожного з ката. Кожна компіляція / тест вносить зміни до сховища git разом з результатами тесту.

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

Якщо ви хочете мати власний сервер CyberDojo, весь проект можна знайти на github, і там навіть пов'язана віртуальна машина пристрою під ключ Linux, а це означає, що якщо ви вже встановили програвач VMware або VirtualBox , ви можете бути запущеними та запущеними в межах кілька хвилин завантаження пристрою!


3

Я брав інтерв'ю лише з колись компанією, яка зробила це. Вони дали опитувальний лист із 6 або 7 проблем. Інструкція полягала в тому, щоб скласти метод вирішення кожної проблеми.

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

Я б запропонував спробувати щось подібне.

Щодо питань? Деякі стартові питання на сайті Project Euler є хорошими.

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

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


3

Для того, щоб попросити людей виконати проект, ви повинні мати певний набір навичок, які ви хочете оцінити на увазі, і розробити проект для перевірки цих навичок.

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

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

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


Вибачте, що витратили свій час.
bigtang

1
@bigtang, це зовсім не так. Вибачте, якщо вищезгадане звучить як рент - я бачу, як це могло, - але моєю метою було створити справу для створення власного проекту на основі навичок, які ви шукаєте в нових наймах. Ви можете зробити невеликий проект майже з усього, але щоб зробити його вартим як для вас, так і для опитаних, вимоги повинні визначатися навичками, які ви найбільше цінуєте.
Калеб

Перше речення повністю вилучено (з повагою, якщо ви недостатньо розумні, щоб самостійно придумати гідний проект, що змушує вас вважати себе досить розумним, щоб оцінити подання кандидатів? "). Насправді не додавали жодного цінність і здалася трохи несамовитою
Майкл

0

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

На якій мові вони писали б це? Якщо вони виходять із школи, яка зосереджена на C, це не буде так швидко, як написати, що навчає Python / Perl / Ruby тощо ... Або навіть Java або C #. Тим не менш, це хороший тест.

Я пропоную деякі простіші фактично під час співбесіди. Без хитрощів питань. Я з TMN на цьому. Дайте їм пару функцій, які виконують основні завдання, і запитайте, що вони роблять (читаючи код інших людей). Потім дайте їм пару основних завдань (<20 рядків) писати мовою на свій вибір. Цього має бути достатньо для початкового рівня, щоб знати, чи можуть вони кодувати чи ні (на позиції початкового рівня). Це разом із співбесідою та GPA повинно дати вам гарне уявлення про те, що вам потрібно знати.


1
Я не вважаю мову критичною, це можна зробити навіть за допомогою псевдокоду. Основна ідея полягає у тому, щоб побачити, чи припущений працівник «потрапляє туди» та показує добрі ознаки вирішення проблем.
Jonas Byström

Відверто кажучи, будь-яка мова з розділеними () та масивами / списками (з натисканням / додаванням) зробить це дрібницею. Дозвольте програмісту на C "припустити" розділити () та перелічити, і це стає так само тривіально :-)
ChuckCottrill

-1

Запропонуйте їм реалізувати «Гра життя» Конвей на будь-якій мові, яку ви дивитесь, використовуючи парадигми дизайну цієї мови.

Гра життя Java або C # Conway повинна бути орієнтована на об'єкти, LISP або F # були б функціональними тощо.


2
Скільки часу ви б дали їм виконати це?
Робота

На це знадобиться близько 4 годин, щоб пройти цілу реалізацію цього ОО, але це я вже робив близько десятка разів. Якщо ви хочете побачити, як вони думають і як далеко вони дістаються (і чи пишуть вони тестовий код), дайте їм менше часу, ніж це. Якщо ви робите це особисто, то дайте їм 45 хвилин і подивіться, як далеко вони дістаються і чому обрали шлях, який вони пройшли. Це одна з тих проблем, про яку ви хочете, щоб вони знали достроково, щоб вони не втратили повністю, навіть заохочуйте їх спробувати це самостійно. Це багато розкриває про програміста.
Джордж Стокер

8
Попросивши кандидата написати тести «Гра життя» Конвея, як недавно вони були в коледжі, або написали та вивчили цю проблему. Ви б найняли @George Stocker, тому що він написав це десяток разів. Наскільки сильно пов'язана Гра життя з будь-якою роботою з реального розвитку?
ChuckCottrill
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.