Чи варто очікувати, що останні міста знайомляться з основними концепціями програмування? [зачинено]


9

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

Мені не здається, що я задаю складні запитання в інтерв'ю. Деякі мої звичайні запитання:

  • Яка різниця між типом посилання та типом значення?

    Якщо здається, що респондент насправді не розуміє своєї власної відповіді, або якщо він не знає термінології, яку я використовую, я отримую більше деталей, просячи його пояснити мені, що відбувається, коли я пишу int i = 0; у методі, як щодо об'єкта o = 0, об'єкта o = новий MyClass () тощо)

    В основному, я роблю все, що можу, щоб обдурити респондента, щоб розповісти мені про стовпець дзвінка, купу тощо, і я намагаюся дотримуватися понять мови-агностики. Якщо опитуваний скаже мені, що він зробив багато C, або C ++, або c #, я заглиблююсь у певні мови та, можливо, у деталі реалізації.

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

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

  • Яка різниця між абстрактним класом та інтерфейсом. У яких випадках слід використовувати один над іншим?

    Зазвичай я також прошу їх уявити дизайн невеликої бібліотеки із випадком використання, спрямованим на використання деяких спадкових і абстрактних заводів

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

Хоча я попередньо перевіряю резюме, навіть для людей, які мають 5-річний досвід роботи в реальних проектах із залученням складної архітектури, я б сказав, що менше 25% усіх моїх респондентів можуть правильно відповісти на ці два питання. І коли я кажу правильно, я не маю на увазі "поглиблений" ... просто мати приблизне уявлення про те, що таке концепція.

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

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


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


4
Лише незначне зауваження, але я б не знав, що ви маєте на увазі під негайним типом, типом значення, з іншого боку, я можу вам пояснити. Однак я вважаю, що кожен, хто закінчив будь-який ступінь CS, повинен мати можливість відповісти на ці два питання. Щоб покращити своє запитання, можливо, ви могли б навести приклад того, наскільки вичерпними ви повинні очікувати відповідей.
sebastiangeiger

Вивчення мови протягом 2+ років в університеті, змагання з іншими предметами залишають студентам лише мінімальний мінімум після закінчення їх тестів. Єдине, в чому ви можете бути впевнені, це те, що вони можуть дізнатися цю інформацію, або колись її знали. Лише практичний досвід може дати їм постійність знань. Джоел Спольський наводить чудовий приклад того, як і чому студентам бракує багатьох здібностей, на які ми повинні очікувати, що програмісти матимуть його статтю в блозі тут - http://www.joelonsoftware.com/items/2009/10/26.html
Джастін Щит

@sebastiangeiger; Ви праві оновлені!
Brann

2
Він повинен знати, що він майже нічого не знає. Це ключовий момент, щоб з часом покращитись.
deadalnix

Бранн, що цікаво, всі люди, які відповіли на це запитання, згадують про "негайний тип" (помилка перекладу), і кажуть, що вони не знають, що це таке. Чи говорять ваші інтерв'ю: "Я не вивчив ці питання глибоко?" або вони претендують на досвід експертів, наприклад, специфіки виконання та глибокого розуміння компіляторів?
Pindatjuh

Відповіді:


15

Термінологія - це загальний занепад в ситуації співбесіди.

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

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

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

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

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

Не кажучи вже про те, що деякі люди отримують повну невдачу пам’яті в інтерв’ю. Я сам включений. Я пам’ятаю, що мене просили написати програму на C, і я не міг за все життя запам’ятати символ, який використовувався для доступу до члена з покажчика (->), і мені довелося запитати когось. Це було навіть не для моєї першої роботи. Хлопчик в цей момент мучив мене протягом останніх 15 років :-)

На мою думку набагато кориснішою є здатність спілкуватися, вміти ефективно та повноцінно вирішувати проблеми; забрати речі швидко; проявляти позитивне гостре ставлення; добре взаємодіяти з іншими людьми та іншими основними цінностями.

Не здайтеся на респондентів, бо вони не знають, що таке негайний тип. Рухайся.


@Brann - безпосередній тип -> тип значення. відмічено
Роджер Attrill

Ну, можливо, це недостатньо зрозуміло з формулювання мого запитання, але я дійсно роблю багато для того, щоб не було питання про термінологію. Я запитую у опитуваного, що відбувається в конкретних ситуаціях мовою, яку він обрав, я запитую його, чи знає він, що таке ставок дзвінків, я запитую його, чи є різні «види» спогадів, я запитую його, де аргументи передані функції зберігається імперативною мовою, яку він обрав. Дійсно, я не відчуваю, що це термінологія. Іноді респондент просто НЕ ІДЕЯ про те, що відбувається за сценою, коли клас примірник.
Brann

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

12

Ви запитуєте знання, пов'язані з мовою, і терміни, які ви використовуєте, використовуються не на 100% однаково у всіх мовах. Я - для одного - поняття не маю, що таке "негайний тип".

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


Я оновив до "типу значення". Але річ у тому, що якщо респондент не розуміє питання, я зазвичай пояснюю його більш детально, і намагаюсь багато речей, щоб обманути респондента розповісти мені про стовпчик дзвінків, купу тощо ... (так, я ЗНАЮ це деталі реалізації, але все-таки це загальні поняття, які насправді не є специфічними для мови ІМО)
Brann

Я думаю, що концепція «стопки дзвінків» є однією з тих загальних концепцій, про які ти говориш. Навіть після переформулювання питання десятьма різними способами, щоб переконатися, що опитуваний знає, що я очікую, що він розповість мені про розподіл пам’яті, ставок виклику, типи значень тощо, я все ще, частіше за все, отримую порожні погляди…
Brann

Якщо я вас правильно зрозумів, ви хочете знати, чи знає розробник покажчики і знає, що вони роблять і як ними користуватися?

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

3
@Brann, усі детальні відомості про стек викликів, купу тощо, по суті, є лише покажчиками .

3

"Я чую і забуваю. Я бачу і пам'ятаю. Я роблю і розумію". (І, на мою думку, розуміння призводить до кращого збереження пам’яті.)

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

Я пішов до коледжу, який був розроблений спеціально для того, щоб упорядкувати навчання обраного спеціаліста (так, наприклад, ви б не мали історичної літератури, якби ви були спеціалістом CS; найближчим чином ви могли б дістатися до історичної літератури - це наукова фантастика), і прямо з коледжу, я не був би в змозі сказати вам , що інтерфейс був НЕ кажучи вже про його відміну в абстрактний клас, хоча ми і дізнаємося про абстракції (і інтерфейсів є в великій кількості в .Net, технологія я дізнався). Ми могли торкнутися інтерфейсів, але він загубився у всіх інших речах, які нам потрібно було знати, щоб пройти клас. Тільки до моєї першої роботи з коледжу я дізнався про інтерфейси, особливо будь-яким змістовним способом.

Ви згадали, що проводили інтерв'ю французькою мовою, завдяки чому стає очевидним, що ми в різних країнах, тому ваш пробіг може відрізнятися, але тут, у США, коледжі суттєво відстають від часів, коли мова йде про технології. Тому, якщо ви не маєте справу зі зрілими мовами (C / C ++, COBOL тощо), цілком ймовірно, що те, що ви використовували навіть роками, може бути недоступним у версії, на якій студенти вивчили. Наприклад. -Реляційне картографування). Школа, яка використовує PHP, може застрягти на PHP 4 (не є OOP).

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

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

Я рекомендую використовувати питання, які у вас виникли більше, як міркування того, що вам потрібно буде навчити / перевчити їх (пам’ятайте, цілком можливо, вони просто не вивчили термін, який ви намагаєтесь використовувати, навіть якщо ви вважаєте, що це є всюдисущим), на відміну від того, чи є "респондент" нікчемним ". Поєднуйте це, визначаючи, наскільки вони готові вчитися і якими є їх загальні навички вирішення проблем (серйозно, дайте їм загадку для вирішення і подивіться, як вони так роблять), і ви можете дуже добре мати майбутню рок-зірку, яку ви можливо, вони пройшли через те, що вони не знали, що ви маєте на увазі під «стовпчиком».


Ну, у Франції (і, мабуть, це однаково в більшості місць), кожен навчальний план CS включає деяке обов'язкове кодування в C (або подібних мовах), коли хтось дізнається про розподіл пам’яті серед іншого), а також якесь обов’язкове кодування в C ++ / java / .net (де людина дізнається про ООП). Крім цього, ви також робите багато речей, які можуть охоплювати багато полів, але якщо випускники закінчують, не знаючи, що таке віртуальний метод, це означає, що він не сприйняв своє навчання дуже серйозно ... Я, звичайно, знав, що це було, коли я закінчив ... Що ви думаєте про студента математики, який не знає, що таке серія?
Бранн

@Brann - Згідно з моїм (швидким) дослідженням, що таке інформатика (як і моє попереднє розуміння цього), CS не є основним програмуванням. Так, у ньому є програмування, але це не обов'язково головна увага в ньому. З цього приводу "Інформатика" настільки широка і досить розпливчаста, що може змінюватись від школи до школи. Стенфорд є однією з найкращих шкіл CS в США, і для списків вибору курсів осінь та зима ( www-cs.stanford.edu/courses ) у нього є менше півтисячі курсів, які, як видається, орієнтовані на фактичне програмування (не тільки теорія програм), із близько 50 класів.
Shauna

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

Що б ви думали про студента математики, який не знає, що таке серія? - Це залежить від того, на якому типі математики студент спеціалізувався і над чим він насправді працює. Знову ж таки, цілком можливо, що студент це засвоїв (а отже, технічно він знає, що це таке), але просто забув це, тому що він ніколи не використовує це у своїй щоденній роботі з криптографією чи дискретною математикою. Математика та програмування, як правило, вважаються темами використання або втратити.
Shauna

3

У вас досить багато вузьких поглядів, і ви припускаєте їх неявно.

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

    Наскільки мені відомо, немає університету, де люди вивчають програмування протягом декількох років. Університети пропонують курси з інформатики, один з яких - програмування.

  • Яка різниця між типом посилання та типом значення?

    Правило великого пальця: якщо Лісп може обійтися без розрізнення, це лише захаращення;)

  • В основному, я роблю все, що можу, щоб обдурити респондента, щоб розповісти мені про стовпець дзвінка, купу тощо, і я намагаюся дотримуватися понять мови-агностики.

    Якщо говорити про мовно-агностичні поняття, це гарна ідея. Ні купа, ні стек не є мовноагностичними.

  • Якщо опитуваний скаже мені, що він зробив багато C, або C ++, або C #, я заглиблююсь у певні мови та, можливо, у деталі реалізації.

    Всі ці мови мають технічні характеристики. Реалізація не визначена мовою. C і C ++ можна перекладати за допомогою LLVM для запуску на програвачі Flash або будь-якому режимі JavaScript. Це робить ваші припущення щодо купівлі та розподілу стеків недійсними.
    З C # це майже те саме. C # є JITED перед виконанням з великою кількістю оптимізації, що можна зробити. Локальні змінні, захоплені закриттями, в кінцевому підсумку закінчуються на купі замість стека, в той час як аналіз бігу дозволяє зберігати локальні об'єкти (які, як правило, йдуть до купи), які будуть зберігатися в стеку. Правильний розподіл реєстру також значно зменшить потребу в розподілі стеків.

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

    Що б ви запитали того, у кого з Haskell є лише великий досвід програмування? : P

  • Більшість опитаних просто не мають уявлення про те, що таке ставок дзвінків, не кажучи вже про міркування щодо боксу тощо.

    Основна ідея автобоксингу полягає в тому, що примітиви можуть також розглядатися як об'єкти (або принаймні значення, тип яких можна виявити під час виконання). Щодо цієї абстракції, існує три типи мов:

    1. ті, де його не існує. Я припускаю, що "Objective-C" є канонічним прикладом.
    2. ті, де це справді тримається
    3. ті, де воно існує, але не втримується. Я думаю, що Java - найкращий приклад (я б припустив, що це вже виправлено).

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

  • Яка різниця між абстрактним класом та інтерфейсом. У яких випадках слід використовувати один над іншим?

    Тепер це дуже суб'єктивно і дійсно залежить від мови. C ++ не має інтерфейсів. У Objective-C немає абстрактних класів. Я заперечую, що будь-яка мова, яка має обоє, вкрай потребує оновлення. Багато сучасних мов використовують ознаки, комбінації, категорії, ролі та подібні конструкції, щоб забезпечити набагато більш чисті рішення для повторного використання коду, ніж успадкування часткових реалізацій. Мови на прототипі так чи інакше не мають класів.

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

  • Більшість опитаних просто не мають уявлення про те, якою може бути реальна мета успадкування. Зазвичай вони знають деякі ключові слова (віртуальні, переосмислювальні тощо), але насправді не знають, коли їх використовувати, не кажучи вже про те, що пояснюють, що таке віртуальна таблиця.

    Існує ряд об'єктно-орієнтованих мов, які не використовують успадкування або класичні vtables.

Моя порада:

  • Будьте дуже обережні, припускаючи, що все, що ви знаєте про програмування, є дійсно базовою концепцією програмування. Можна припустити, що кожен хороший програміст має цікавість дізнатись відповіді на таке питання. Однак ви не можете припустити, що хто добре їх знає, це добре. Я схильний вважати, що ті, хто надає занадто велике значення таким деталям, насправді, ймовірно, не бачать лісу для дерев.
  • Менше турбуйтеся про деталі впровадження. Мови програмування призначені для створення абстракцій. Вам потрібно думати з точки зору цих абстракцій і лише з точки зору них. Хороший код не пишеться проти деталей реалізації мови. Він написаний для найкращого вбудовування семантики вашого рішення в мовні особливості. Якщо вам це вдасться зробити, ваш код стане не тільки надійним, але і добре читається для всіх, хто знайомий з мовою, і простіше оптимізувати компілятор.
  • Знати відповіді, які ви очікуєте, не так важливо. Розуміння їх є. Якщо хтось просто їх знав, бо читав їх у підручнику або його професор сказав їм, то це малоцінно. Насправді ви можете пояснити всі ці речі собі за кілька годин.
    Важливим є розуміння того, як ці прості та поодинокі факти можуть бути застосовані до інженерно-гнучких та обґрунтованих рішень складних проблем.

Щоб перейти до реального питання:

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

Всі компанії мають проблеми із залученням вмілих людей, крім, можливо, великих гравців. Це тому, що їх мало. І тому припущення, що університет робить людей вмілими. Це не так. Це робить їх обізнаними (припускаючи, що і студент, і університет дотримуються своєї частини угоди). Досвід - це те, що робить людей вмілими.

Є кілька людей, які зібрали досвід перед вступом до університету і продовжують це робити під час навчання. Тому що їм подобається програмування і тому, що коли вони підберуть якусь нову ідею під час курсу, вони спробують побачити, як вони можуть її використати, перше, що вони повернуться додому. Це такі люди, яких ви хотіли б найняти. Але їх небагато.
Саме пристрасть до програмування та самовдосконалення та його прагнення роблять програмістів хорошими. Вчасно.

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

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


1

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

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

Лише особисте зауваження щодо ступеня / диплома: Я зараз працюю з людьми з біохімією та виробничим досвідом, які мають кількарічний досвід роботи в галузі ІТ, а також з деякими "досвідченими" хлопцями, які мають досвід роботи з CS, і здогадуєтесь, хто найбільш обізнаний про те, як працює двигун транспортного засобу? Так, це не хлопці, які вивчали CS! Тож я просто переживаю той факт, що диплом не завжди має значення!


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

досить справедливо :-)
Jalayn

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

@brann, вони можуть не знати термін , але все ж пам’ятають, що фізичне розміщення даних, що містяться змінною, розміщується в сегменті даних, а не в купі або стеку. Яку мову ви використовуєте, оскільки ця здається важливою?

Я використовую c #. І я погоджуюся з тим, що знання такого роду деталей реалізації, мабуть, не є таким важливим у цьому контексті (хоча в деяких конкретних ситуаціях це може бути). Вся справа в тому, що я не намагаюся знайти експерта з AC #. Я намагаюся знайти когось досить розумного та достатньо мотивованого, щоб стати справді хорошим у кодуванні в c #. Якщо хтось не переймався, щоб дізнатись / зрозуміти, що таке ціннісний тип, я схильний (можливо, неправильно) вважати, що він пропускає в одній із двох форм дві якості, принаймні
Brann

1

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

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

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

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


1
 or chose his university very unwisely.

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

Навіть якщо на кожному такому курсі ви спалахнули величезною неоновою табличкою, яка сказала "МИ НЕ НАВЧАЄМО ЧАСУ", то що ви очікуєте від студентів? Проведіть місяці на його дослідження, щоб вони могли зрозуміти, що це означає і наскільки їм знадобиться той, хто цього навчить? За кожен курс з кожним поєднанням ознак?

Люди не можуть вибрати свою освіту реально.


0

Під час інтерв'ю з новими випускниками я дотримуюся тем, перелічених у їх резюме. Якщо вони використовували Java, я запитаю їх про Яву. Якщо вони використовували Blub, то я проводжу півгодини, читаючи про Blub, і запитую їх про це. Але я завжди прошу використовувати мовні ключові слова. Якщо це Java, то я запитаю про "extends" і "Implements", але не про "підклас" і "успадковує". Я очікую, що нові випускники зможуть поговорити про якийсь написаний ними код, зможуть вирішити просту проблему програмування та зрозуміти основні структури даних (хеш-таблиці та дерева).


0

Як директор, який розробив процес співбесіди, я можу розповісти вам про те, що наша компанія очікує від нових дипломів: очікую, що люди зможуть прочитати документацію та застосувати знання. Таким чином, у нас є кілька дуже практичних завдань, які ми просимо їх виконувати. Це прості завдання з кодування, не набагато складніші, ніж у середньому в класі (досвідчені "хороші" розробники можуть вибити це приблизно за 15 хвилин). Кандидату надається робоча станція з доступом до Інтернету, компілятор (у нашому випадку візуальна студія) та файли довідки.

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


Це найкращий спосіб знайти когось, хто стверджує, що знає щось насправді, знає це досить добре, щоб ним скористатися. Запитувати, що означає термін, щось, що за межами аудиторії, майже ніколи не використовується, є безглуздим. Я маю на увазі, що за останні 18 місяців я жодного разу не мав обговорення щодо еталонних типів, можливо, скаржився на щось, що стосується покажчиків.
Рамхаунд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.