У попередній статті серії “Програміст Початківець” ми обговорювали основні пункти створення правильного резюме та супроводжуючого листа. У випадку, якщо у вас в резюме опинився необхідний список знань та досвіду для вашої вакансії, тоді ймовірно ваша анкета пройшла і ви отримали запрошення на співбесіду.
Тому у даному пості спробуємо розібратися, що таке інтерв’ю, які вони бувають та як краще до усіх них підготуватися.
Види та Етапи Інтерв’ю
Почнемо з ознайомлення з видами інтерв’ю. Є дві основні категорії:
- інтерв’ю з рекрутером: мета – визначити чи ваш характер і професійні якості підходять компанії; співставити формальний набір навичок з необхідними на дану посаду, якщо сходяться – йдемо далі;
- технічне інтерв’ю: мета – визначити ваш рівень як програміста.
Загалом різноманітних етапів інтерв’ю може бути багато. У великих конторах це може бути до десяти (а той деколи і більше) кіл різноманітних перевірок, розмов та тестів.
Отут описаний приклад, як це виглядає в компанії Гугл.
У наших компаніях процес зазвичай трішки простіший. Я за своє життя проходив інтерв’ю в 6-ти різних компаніях і найдовший процес виглядав приблизно так:
- перший контакт через емейл або linkedin.com;
- відповідь з приєднаним резюме та супроводжуючим листом;
- 5-ти хвилинний дзвінок рекрутера, де ми коротенько обговорили поточну позицію, я задав кілька питань, та розказав чим на даний час займаюся; запросили до себе в офіс;
- інтерв’ю з рекрутером в офісі компанії;
- технічне інтерв’ю з командою сеньйор розробників (в той же ж день);
- розмова з керівником проекту.
Аж шість етапів! Проте, якщо ви початківець і шукаєте вашу першу роботу, тоді процес буде зазвичай простіший і у більшості випадків зводитиметься лише до трьох кроків:
- перший контакт з резюме і листом;
- інтерв’ю з рекрутером;
- інтерв’ю технічне з програмістами (друзями по розуму :-).
Резюме + супроводжуючий лист ми розібрали у попередній статті, тому тут розберемо 2 інші основні етапи:
- інтерв’ю з рекрутером
- та технічне інтерв’ю.
HR Інтерв’ю
Це інтерв’ю з людиною, яка не є технічною і яка не буде розпитувати вас про ООП чи вашу улюблену мову програмування.
Під час даного інтерв’ю задача рекрутера – пройтись по своєму списку вимог, та, у випадку, якщо якась умова не проходить – не пропустити вас далі до технічного інтерв’ю. Які ж умови можуть бути у даному списку? :
- упевнитись, що формальний список ваших вмінь та навичок (ті які ви зазначили в резюме) співпадає із списком вимог на дану посаду;
- перевірка вашого характеру: чи ви добросовісний, акуратний, з увагою до деталей, вмотиваваний, стійкий, лояльний, виконавчий і т.д. ;
- з’ясувати чи ваші цілі, прагнення та цінності підходять духу та атмосфері компанії, в яку ви хочете потрапити;
- може бути також тест на англійську мову, якщо вона є серед вимог на посаду;
- з’ясувати чому саме хочете потрапити до них.
По суті дане інтерв’ю виглядає як звичайна розмова у заданому рекрутером руслі. Також вам можуть запропонувати пройти психологічні тести. Або порозмовляти (або переписуватися) англійською.
Щоб ви трішки зорієнтувалися, наведу нижче кілька типових запитань, що можуть задаватися рекрутерами під час співбесіди.
Даю їх не для того, щоб ви гарно навчилися обхитрити всіх і вся, а швидше, щоб були готовими до такого роду питань. І чесно та щиро відповідали на них. Як то кажуть, краще одразу з’ясувати, що не підходите один одному і йти шукати далі, ніж потім мучитись з неправильним вибором.
Чому саме хочете працювати в нас?
Рекомендую дізнатися побільше про посаду та саму компанію. Це вам допоможе зрозуміти цінності та атмосферу та визначитися чи вам вона підходить. Практично кожна фірма має власний сайт (та й інфи у форумах та на dou.ua) є предостатньо.
Які ваші плани на наступні N років?
Їм важливо знати, що після того як вони вас навчать усьому ви не втечете. Тому даним питанням рекрутер намагється з’ясувати чи ваші плани співпадають із цілями компанії і чи дані плани можуть бути реалізовані не змінюючи місця роботи. Також це питання з’ясовує чи прагнете ви до розвитку, всамодосконалення та кар’єрного росту.
Які у вас недоліки?
Рекомендую чесно розказати про них, але завершувати кожен недолік позитивом, який покаже чому даний недолік не такий вже поганий, або зазначати, що ви плануєте над ним працювати.
Розкажіть про ваш найкращий, цікавіший проект?
Мета даного питання з’ясувати чи “горите” ви своєю професією. На технічному інтерв’ю таке питання також буде, але там програмерам буде більше цікава технічна сторона проекту та ваші досягнення у ньому. А тут просто спробуйте підготувати цікаву розповідь, яка покаже, що ви дійсно любите свою справу і можете нею займатися навіть у власний вільний час 😉
Чи були у вас конфлікти на попередньому місці роботи? Як ви розходились з попереднім босом?
Якщо ви вже працювали, тоді це питання також може з’явитися в процесі інтерв’ю. Основна його ціль – з’ясувати чи ви конфлікна людина, як зазвичай розв’язуєте проблеми, як поводитеся в колективі.
Рекомендую добряче обдумати дане питання, і не просто придумати гарну відповідь, але й задуматися над власними підходами, якщо чуєте за собою недопрацьовані життєві ситуації на попередньому місці праці. Це допоможе уникнути подібних ситуацій на новому місці. Та й загалом, кожне вище наведене питання – це хороша можливість себе апгрейднути 🙂
Технічне Інтерв’ю
Володіння Предметом
При подачі резюме ви вже знаєте напевне, які є основні вимоги до кандата та які технології, мови та фреймворки вам необхідно знати. А також рівень володіння ними.
Підготуйтесь наперед під конкретну позицію та набір вимог. З’ясуйте деталі про проект та посаду ще до висилання резюме. Під час інтерв’ю з рекрутером також маєте хорошу нагоду детальніше про все розпитати. Щоб не вийшло, що хочете розробляти додатки під мобільні, а прийшли на співбесіду з пошуку веб розробника 😉
Для джуніків основне володіти базою, а вже поглиблені знання вам датуть в процесі роботи. Тому важливішими для вас будуть наступні пункти під час співбесіди:
Логіка та Вміння Розв’язувати Проблеми
Сеньйор спеціаліста розпитують, що він уже вміє, чого досягнув, як працює, які у нього цінності. У початківця ж хочуть з’ясувати чи любить він навчатися, як швидко це робить, а також чи може розв’язувати проблеми сам.
Відповідно завдання на логіку та вирішення проблем є більш пріоритетні, ніж ті що показують ваш рівень володіння мовою програмування чи фреймворком. Усі і так знають, що він початковий 🙂
Я особисто не прихильник “заковирістих” головоломок під час співбесід. Джунікам даю на тиждень тестове завдання, що є дуже подібним до тих, які їм прийдеться виконувати під час своєї роботи. Завдання мусить мати багато елементів нового, щоб визначити на скільки людина швидко освоює новий матеріал. А також завдання містить певні елементи не визначеності, щоб перевірити ініціативність та самостійність кандидата у вирішенні проблем.
Але факт лишається фактом, є тєхнарі, які люблять різного роду головоломки, задачки і пропонуватимуть вам одну дві розв’язати. Завдання може бути супер просте, як от посортувати список елементів з обмеженим використанням певним функцій мови і аж до складних статистичних математичних проблем, де важливо показати хід своїх думок.
Тому пропоную попрактикуватись у вирішення різноманітних математичних та програмних проблем на таких сайтах як TopCoder. Задачки бувають найрізноманітніші і можуть поєднувати програмування, математику, ерудицію та смикалку, все одразу. Просто треба багато практики розвязування змагальних цікавих задачок, бажано на швидкість. Час на інтерв’ю буде також обмежений.
Можна порозпитувати друзів, знайомих, Гугл, які задачки траплялися їм. Наводити список конкретних задачок тут не буду, в кожного програміста вони свої, постійно змінюються та швидко виходять з моди 🙂
Знаю є ресурс, де наводяться типові задачки. Нажаль не можу віднайти лінка. Якщо маєте – буду вдячний за коментар.
Що робити, якщо “Не Знаю”
Якщо не знаєте відповіді на якесь технічне питання, не бійтеся казати, що не знаєте. Це значно краще, ніж сказати неправду і потім придумувати як викручуватися.
Натомість запропонуйте кілька варіантів для обдумування. Пробуйте думати вголос. Попросіть листок та ручку, щоб розмалювати чи описати проблему. Коментуйте хід своїх думок. Задавайте питання в процесі обдумування проблеми.
Не обов’язково знати відповіді на усі питання, щоб отримати позитивний результат при технічному інтерв’ю.
Я, наприклад, на одне з інтерв’ю, де важливою вимогою виявилось знання алгоритмів хешування та їх імплементація на мові Python. Я не мав досвіду роботи над такими проблемами, тому одразу признався. Але запропонував разом обговорити дану проблему. Крім того, що дізнався багато нового, то ще й отримав позитивну відповідь після співбесіди. Виявилося, що освоїти дану тематику, якою я на той час не володів, не так вже й складно.
Головне не мовчати, і не казати просто “не знаю”. Пропонуйте варіанти для обговорення та показуйте принаймні хід думок. Вже на зовсім крайняк розпитайте про правильну відповідь. Таким чином покажете свій інтерес, незважаючи на результат співбесіди.
Поширені Нетехнічні Питання
Підготуйтесь до популярних питань заздалегідь. Ось деякі з них:
Розкажіть про ваші останні 3 проекти? Яку роль відіграли у них?
Підготуйте розповідь про свої останні проекти, програми, додатки. Це може будь-що, адже джунік зазвичай не має багато реальної практики. Якщо ж зовсім немає, тоді рекомендую почитати оцю статтю, і дізнатися як її набути початківцю.
Мета даного питання – з’ясувати ваш поточний досвід.
Чим пишаєтеся? Які ваші найбільші досягнення?
Так, на технічному інтерв’ю таке питання знову можуть поставити, але тут вже треба більше фокусуватися на технологіях, цифрах та показниках.
Це може бути складний програмний код чи алгоритм, чи дуже гарний вигляд аплікації, чи багато користувачів, чи класна ідея проекту. Будь-що спрацює. Основне показати ваше захоплення самим предметом програмування, і що ви можете досягнути ще більших вершин.
Кілька Порад
Також я пропоную кандидату написати твір на вільну тему на один листочок. Мені самому такого на інтерв’ю ні разу не пропонували, але знаю, що дехто також таке практикує на співбесідах. Тому майте на увазі. Мета цього завдання – з’ясувати ваше вміння висловлювати думку на папері. Кажуть людина, яка гарно пише, також гарно пише і код. Та й комунікація текстова + документація по проектах буде йти вам на ура.
Якщо при практичному завданні бракує знань, запитайте чи можна користуватись інтерпретатором (компілятором) мови програмування та Гуглом. Я, наприклад, коли даю завдання під час інтерв’ю, то даю людині ручку з листочком, а також доступ до комп’ютера. Мені важливо, щоб людина, маючи усі необхідні інструменти, могла вирішити проблему. Адже це моделювання справжньої робочої обстановки та ефективності даного кандидата у ній.
Також визнавайте, що допустили помилку. Ніхто не хоче працювати з людиною, яка не визнає своїх помилок, та не йде на компроміси. Чим швидше визнаєте, тим швидше навчитеся правильного рішення.
Навіть якщо ви джунік поцікавтесь розміром початкової оплати та перспективу її зростання в майбутньому.
І на завершення
Якщо інтерв’ю закінчилось невдачею, сприймайте це як черговий рівень навчання. Чим більше невдач, тим ближча ціль. Ось тут класна стаття про Java програміста, який мав 40 співбесід за рік. Головне не забувайте аналізувати помилки попереднього інтерв’ю і уникати їх під час наступного.
Також, якщо відмовили, спробуйте з’ясувати напряму, що було основною причиною відмови, і поцікавтесь чи можете звернутися ще раз після виправлених помилом. Це вам дасть матеріал для роботи над своїми знаннями та навичками. Якщо не дають точної відповіді, то швидше за все загальний рівень ваш як програміста поки заслабенький, або ви не вписуєтеся в “загальний дух” компанії. Тоді не партесь – просто шукайте іншу.
А які цікаві питання вам задавали під час інтерв’ю? Як ви до них готувалися?
Хочете першими дізнаватися про наступні статті у серії “Програміст Початківець”? Тоді підписуйтесь на розсилку.
Навчаюся зараз в університеті на першому курсі.
Для лабораторних з програмування дають методички,де є типу алгоритми.
Наскільки важливо і чи взагалі треба вміти по цих алгоритмах писати код?Що робити якщо не зовсім получається?
алгоритми це дуже важлива частина. її не варто пропускати. вміння придумувати власні алгоритми і їх реалізувати – це ключ до створення програмних рішень. програміст це не просто людина яка пише код а людина яка вирішує проблеми шляхом придумування алгоритмів.
якщо не получається – треба тренуватись. починати із простіших і далі братись до складніших алгоритмів. і шукати персональну допомогу щоб пояснили і підказали.
Після вчорашньої співбесіди хочу додати +100 до коменту Сергія)). Особливо щодо останнього речення. (звичайно не всі такі, але це було дещо:) ).
Цікаво, як людина “яка не є технічною і яка не буде розпитувати вас про ООП чи вашу улюблену мову програмування” і яка проводить співбесіду на посаду програміста може “упевнитись, що формальний список ваших вмінь та навичок (ті які ви зазначили в резюме) співпадає із списком вимог на дану посаду”? Ніколи не розумів, особливо після того як походив по співбесідам, навіщо проводити так звану нетехнічну співбесіду. Всі ці спеціалісти с підбору персоналу мають виконувати роль секретаря при програмісті який і буде тестувати претендента.
це для того, щоб швидко відсіяти тих, хто точно не володіє необхідний мінімум. години програміста дорого коштують, тому перед тим, щоб його залучати до технічної співбесіди в якості інтерв’юра, HR пробує відфільтрувати тих, хто точно не підходить
HR зазвичай отримує список питань і готових відповідей, але він в цьому не тямить.