Здається, існує величезна розбіжність між тим, що я очікую, що хтось, хто вивчав програмування протягом кількох років в університеті, і тим, що насправді знає.
Мені не здається, що я задаю складні запитання в інтерв'ю. Деякі мої звичайні запитання:
Яка різниця між типом посилання та типом значення?
Якщо здається, що респондент насправді не розуміє своєї власної відповіді, або якщо він не знає термінології, яку я використовую, я отримую більше деталей, просячи його пояснити мені, що відбувається, коли я пишу int i = 0; у методі, як щодо об'єкта o = 0, об'єкта o = новий MyClass () тощо)
В основному, я роблю все, що можу, щоб обдурити респондента, щоб розповісти мені про стовпець дзвінка, купу тощо, і я намагаюся дотримуватися понять мови-агностики. Якщо опитуваний скаже мені, що він зробив багато C, або C ++, або c #, я заглиблююсь у певні мови та, можливо, у деталі реалізації.
Якщо потрібно, я запитую опитуваного, що таке ставок дзвінків, або де зберігаються аргументи, передані функції на необхідній мові, яку він обрав.
більшість респондентів просто не мають уявлення про те, що таке ставок дзвінків, не кажучи вже про міркування щодо боксу тощо.
Яка різниця між абстрактним класом та інтерфейсом. У яких випадках слід використовувати один над іншим?
Зазвичай я також прошу їх уявити дизайн невеликої бібліотеки із випадком використання, спрямованим на використання деяких спадкових і абстрактних заводів
Більшість опитаних просто не мають уявлення про те, якою може бути реальна мета успадкування. Зазвичай вони знають деякі ключові слова (віртуальні, переосмислювальні тощо), але насправді не знають, коли їх використовувати, не кажучи вже про те, що пояснюють, що таке віртуальна таблиця.
Хоча я попередньо перевіряю резюме, навіть для людей, які мають 5-річний досвід роботи в реальних проектах із залученням складної архітектури, я б сказав, що менше 25% усіх моїх респондентів можуть правильно відповісти на ці два питання. І коли я кажу правильно, я не маю на увазі "поглиблений" ... просто мати приблизне уявлення про те, що таке концепція.
Щодо юніорів, то я добре наймаю того, хто не знає, як добре організувати свій час, або когось, наприклад, не звичного до промислових процесів побудови, але я відчуваю, що якщо хтось не чув цього слова " після декількох років вивчення інформатики, він або дурний, або немотивований, або обрав свій університет дуже нерозумно.
Ви вважаєте, я тут занадто екстреміст? Чи загально вивчати ці основні поняття після закінчення університету? Чи знаєте ви людей, які з цим не були знайомі, і через кілька років стали дуже хорошими інженерами-програмістами? І чи вважаєте ви, що у моєї компанії можуть виникнути проблеми із залученням талановитих людей, або у вас виникають такі ж проблеми, як у вашому власному процесі найму?
Редагувати. що стосується речі "негайного типу", то це був лише дослівний переклад з французької на англійську, як ми зазвичай робимо інтерв'ю французькою мовою. Я це зафіксував у своєму питанні. Але все-таки я думаю, що ви всі прекрасно розумієте, що я мав на увазі, що саме я можу сказати?