Как проходить собеседование на должность программиста

Прежде чем идти на собеседование на должность программиста не помешало бы освежить в памяти различные алгоритмы, потому что они нужны только для того, чтобы проходить интервью. Есть позиции, когда алгоритмы приходиться использовать, но в реальности в наше время большинство из программистов могут не использовать знания алгоритмов и не потому, что не хотят, а просто потому, что не нужно. Ну действительно, если вы делаете блоги, то никакая математика и алгоритмы вам не нужны, но работодатели даже простых сайтов продолжают спрашивать задачки на алгоритмы, а не на знание языка. 

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

Перед интервью обязательно следует выспаться и если вы верите в Пик Балмера, то можно принять и на грудь. Я пока на себе теорию бывшего лидера Майкрософт пока еще не проверял, поэтому не возьму на себя смелость рекомендовать принимать спиртное перед собеседованием. Особенно если оно будет личным, а не по телефону. 

Но свой желудок и мозг все же нужно накормить. Мозгу необходима пища, а на сколько я знаю, он любит рыбу, орехи и шоколад. Опять же, если интервью личное, то есть рыбу я бы не рекомендовал, особенно соленую. А вот шоколад и орехи я люблю и ем очень часто. Вот их и рекомендую принять перед собеседованием. 

Трудно сказать, на сколько сильно помогает шоколад или орехи, но хуже точно не должно быть. 

Нужно обязательно быть максимально спокойным. В видео про стрессы и конфликты я уже говорил о том, что очень важно быть максимально спокойным и в этом мне помогает простой прием с глубоким вдохом и очень медленным выдохом. Два – три глубоких вдоха и медленных выдоха помогают справиться с нервозностью и успокоится. 

Итак, прежде чем идти на собеседование, освежаем в голове алгоритмы. Не знаю, какие вопросы сейчас спрашивают в России, Украине или Белоруссии, а в Канаде очень популярными являются алгоритмы на поиск. 

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

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

Подумайте, какие параметры могут повлиять на выбор алгоритма и постарайтесь задать все уточняющие вопросы и только потом начинайте предлагать решение. Как минимум у вас может возникнуть вопрос – сколько данных, этот вопрос должен возникать практически в любом случае. Даже если вы знаете только один вариант решения и единственный алгоритм, все равно лучше задать уточняющие вопросы, чтобы показаться умным. Потом обязательно нужно подумать или хотя бы сделать вид, что вы думаете. 

Если вопрос совсем простой, то можно так и сказать, что вы знаете такое-то решение, в этом случае опять же вы покажите себя честным. 

Если вы сразу же бросаетесь решать задачу и не думаете о решении, то это сразу же серьезный минус. Вы покажите себя торопулькой. 

Что делать, если вы не знаете решения? Глубокий вдох, медленный выдох, и начинаете рассуждать вслух и думать о том, с какой стороны подойти к решению. Вам скорей всего помогут и направят, потому что компании, которых интересуют на интервью алгоритмы очень часто не ищут идеального и конкретного решения, тут необходимо понять – как вы думаете, как вы решаете сложные задачи. 

Как раз задачи, на которые интервьюируемый не знает готового решения, в наибольшей степени и интересуют интервьюера. 

Недавно я проводил интервью у парня выпускника института, который пришел на должность C# web программиста, но при этом не знал JS, мог написать на SQL только самый простой select и вместо C# знал только C++ и никогда не писал тесты. Но за счет знания C++ смог решить логическую проблему на C#, с подсказками смог понять, как решить задачу на JS и мы его наняли. Просто он так хорошо хватал информацию и так хорошо слушал подсказки, что стало понятно – это перспективный программист. И он действительно сейчас показывает хорошие результаты и очень хорошо прогрессирует на работе.

Прохождение интервью – это отдельное умение, которое нужно оттачивать, и оно приходит с опытом. Если не иметь опыта прохождения, то можно сразу же застрессовать и завалить даже простой вопрос. 

Я помню, когда проходил свое первое интервью на английском, то не смог ответить на относительно простой вопрос по поиску данных. Не такой простой как поиск в массиве, чуть посложнее, но все равно. Когда я вышел с интервью и понял, что меня уже не возьмут, в голову тут же влетел правильный ответ и хотелось забежать обратно, но. . . было уже поздно. 

Бывает такое, что мозг просто стопориться и нервозность не дает вам найти правильное или эффективное решение. Но с каждым новым интервью вы будете набирать опыт прохождения собеседований и опыт отвечать на вопросы так, чтобы они понравились интервьюеру. 

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

Логические задачи в Канаде задают не так уж и часто. Чаще всего все же идут простые задачи на понимание технологий. Только в Амазоне и в нынешней компании были более-менее логические задачи, в остальных же более технические вопросы по технологиям. При этом только один раз русскоговорящий парень (но не из России) спрашивал меня о полиморфизме и инкапсуляции, канадцы никогда такого не спрашивали, потому что это реально не имеет значения, как вы понимаете инкапсуляцию. У меня на канале можете посмотреть видео про инкапсуляцию, и я там рассказываю, что есть два определения этого понятия и я постарался объяснить почему их два. Если кто-то придерживается одного из них и даже не знает о существовании второго – сделает ли это этого программиста хуже или лучше? Нет! 

Да плевать, какого определения человек придерживается, главное, чтобы он понимал, как создавать классы. Вот это могут спросить – дать задачу и попросят показать, какие вы создадите классы для ее решения. А теоретическое определение и его знание – в Канаде из личного опыта пока никого не волновало. 

Какие чаще всего бывают запросы. Как C# программиста очень часто просят объяснить, зачем нужен сборщик мусора, как он работает и всегда ли он нужен. Нужно понимать, зачем нужен Dispose, при наличии сборщика и как и когда работает using (и я сейчас не говорю о подключении пространств имен). Все эти вопросы я считаю отличными, и они именно на понимание. Точные определения сборщика мусора и всего остального от вас спрашивать не будут.

Лично меня пугает, когда люди дают точные определения. Просто подобные общие вопросы чаще всего спрашивают по телефону и если мне начинают давать слишком верные вопросы, а не объясняют принцип работы, то скорей всего человек читает с какого-то сайта и я дам отпор. 

У хороших компаний помимо быстрого технического скрининга обязательно есть тест. Не у всех это что-то супер техническое, очень часто это простые задачи. У меня были такие проблемы как – создать дерево, как в проводнике стоят папки и сделать возможность раскрывать и закрывать их. Ничего сверх сложного, но даже такое в Web далеко не все могут сделать. 

Из общих вопросов, не привязанных к языку, очень часто спрашивают – отличие интерфейса от класса и зачем они нужны. 

Могут спросить отличие класса от структуры, но это реже, хотя я встречал, когда интервьюеры сами не знают, и считают, что структуры могут содержать только свойства (переменные). 

Бывают вопросы о паттернах программирования. Чаще всего могут попросить на выбор рассказать любой, и почему-то удивляются, когда большинство выбирает синглтон. Да я сам сначала удивлялся, почему именно он. Нужно дать объяснение – зачем он нужен, как реализован и когда может использоваться. Половина из тех, кто выбирает синглтон – не могли мне объяснить, каким образом достигается уникальность. Все говорят, что у класса создается метод, который возвращает экземпляр класса (объект), но при этом половина не могли объяснить, что меня останавливает от создания экземпляра класса напрямую, без обращения к этому методу. 

Ну и если вы тоже решили выбрать паттерн попроще, то после этого все равно спросят, что такое инъекция кода (Dependency Injection). В наше время это стало необходимым знанием, поэтому если хотите сэкономить время и вас просят рассказать любой паттерн, то сразу начните именно с этого, возможно сэкономите время и вам не придется рассказывать два. 

Очень часто компании спрашивают – а какие вопросы у вас есть к нам? Тут очень важно задать хорошие вопросы типа: а на какую должность вы меня нанимаете, сколько человек в команде, как строится работа, чем мне придется заниматься, какие задачи мне придется решать. Очень важно задавать вопросы о компании, в этом случае они видят ваш интерес. 

Стоит ли спрашивать о зарплате? В Канаде нет, у вас спросят какая у вас сейчас зарплата и уже после того, как принято решение вас нанимать, тогда пришлют офер и вы можете его принять или отклонить. Заранее зарплату не спрашивайте, это покажет, что вы идете только ради денег. Можно спросить про отпуск, но только не про деньги. 

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

Очень важно спрашивать про отпуск. Я про это не спросил в свое время и мне влепили минимальный отпуск в две недели, а мне уже задний ход давать было поздно, пришлось соглашаться на две недели, а потом выбивать у них третью заявлением на увольнение. 



Внимание!!! Если ты копируешь эту статью себе на сайт, то оставляй ссылку непосредственно на эту страницу. Спасибо за понимание

Комментарии

Паника, что-то случилось!!! Ничего не найдено в комментариях. Срочно нужно что-то добавить, чтобы это место не оставалось пустым.

Добавить Комментарий

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне