Пройди технічне співбесіду (рівень 2)

image

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

Рівень 2: Бос, провідний розробник
Провідний розробник:
  • людина з великими технічними знаннями;
  • асоціюється з tech-out;
  • шукає, насамперед, технічно підкованого фахівця;
  • строго перевіряє ваші знання, здібності до програмування і пошуку нестандартних рішень.
Так само, як актори проходять прослуховування, перш, ніж отримати роль, так і розробники програмного забезпечення проходять співбесіду. Звичайно, «прослуховування» розробників буде складатися з серії технічних питань, визначають, наскільки кандидат компетентний.

Хіба не можуть вони просто подивитися на ваше резюме і попередні місця роботи, і сказати, чи підходите ви на цю посаду? Воно ніби й так, але, на жаль, тут не можна бути впевненим на 100%. Ви могли, наприклад, збрехати або перебільшити факти в резюме. Або резюме може бути неоднозначним або неповним.

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

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

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

Багато популярні запитання для інтерв'ю можна знайти на веб-сайтах, таких як CareerCup і Glassdoor. При пошуку зосередьтеся на тому, де і як ви зможете використати отримані відповіді.

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

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

Питання про програмування та алгоритми покликані перевіряти більше навичок, ніж чисті знання. Тут перевіряються ваші навички програмування і вирішення завдань. Ці питання повинні змусити думати. Але насправді це хороші новини; тут вам не потрібно просто знати відповідь. Інтерв'юер хоче побачити, як ви підійдете до вирішення проблеми.

Деякі з цих питань можуть бути розраховані на ваші знання моделей та алгоритмів.

Чит-код: ваші відповіді на кожне питання будуть оцінюватись у порівнянні з відповідями інших кандидатів на ті ж питання. Не намагайтеся бути досконалим!

Відповісти на ці питання можуть допомогти наступні техніки:

Задавайте питання
Інтерв'юер міг упустити якісь деталі, або ви могли ослышаться. Повторіть запитання та з'ясуйте подробиці, в яких ви не впевнені, щоб не думати в неправильному напрямку.

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

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

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

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

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

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

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

Запитання по системній архітектурі зазвичай мають на увазі розробку структури якоїсь системи. Це може бути система електронної пошти або щось на зразок tinyurl.com.

У цих питаннях вам слід почати з розуміння умов. Припустимо, потрібно побудувати систему електронної пошти. Для чого ми буде її розробляти? Створюємо ми велику систему, на зразок Gmail або Hotmail, яка буде обслуговувати мільйони користувачів? Або наша система буде розроблена для маленької або середньої компанії? Які протоколи вона повинна підтримувати? Ці питання слід обговорити з інтерв'юером в першу чергу.

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

Третім кроком буде опис того, як ці компоненти будуть працювати разом. Коли і як ці компоненти будуть взаємодіяти? Сервера вхідних і вихідних повідомлень працюють безпосередньо або зчитують інформацію з бази даних?

Далі подумайте, як зробити систему краще: швидше, надійніше і так далі. Як ви будете справлятися з великою кількістю даних? Що трапиться, якщо сервер не витримає?

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

Уф! Ну і тренировочка, так? Тепер, коли ви отримали необхідні відомості, як пройти менеджера з підбору кадрів та провідного розробника, пора рухатися до третього рівня і лицем до лиця зустрітися з таким босом – менеджером по програмному забезпеченню.

P. S. Рекомендуємо ще одну статтю по темі — Вільний управління часом: реальність чи міф?

Автор перекладу — Давиденко В'ячеслав, засновник компанії MBA Consult.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.