Техническое интервью юниор программиста: устная часть

Опубликовано Feb 16, 2012 в Собеседование: Советы | Нет комментариев

, ,

Автор: Галина Мирошниченко

координатор учебных программ компании Fulcrumweb

Cтатьи с советами о том, как проходить собеседования встречаются в изобилии, но речь в них идет чаще всего о рекомендациях, которые не зависят от профессии и годятся в первую очередь для HR-интервью.

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

За полтора года работы в компании среднего размера я провела более 200 первичных технических интервью с претендентами на позиции начинающих разработчиков по C++ и C#. Накоплен определенный опыт и им хочется поделиться, в надежде на то, что эти советы помогут кому-то правильно подготовиться и получить первую работу.

Загляните по другую сторону баррикады

Исходите из того, что технические интервьюеры – это вполне адекватные люди, которые обычно знают, чего хотят и их время весьма высоко стоит, поэтому интервью – это не то место, где можно просто поболтать на общие темы по поводу технологий программирования. Обычно ожидается двухстороннее общение на конкретные темы, в рамках которого обеими сторонами задаются конкретные вопросы и даются конкретные ответы. Интервью будут продолжать ровно до того момента, пока у интервьюера не сформируется одно из решений в троичной логике: ДА/НЕТ/ПОДОЖДАТЬ С РЕШЕНИЕМ.

Задавайте вопросы по ходу дела

Не кидайтесь сразу давать ответ, если что-то недопоняли или сомневаетесь, лучше спросите. Чтобы понять, о чем идет речь, приведу пример из собственного опыта. Однажды на интервью меня попросили на бумаге написать некий SQL-запрос, который вроде был понятен по формулировке, но сложность его реализации с моей точки зрения явно выходила за разумные рамки того, что можно делать на бумаге. После изрядных усилий и затрат времени запрос был написан, но результат весьма удивил собеседующего. Мы начали объясняться, и выяснилось, что при формулировке условия он пропустил (или я недослышала) два слова, которые упрощали задачу в разы. Такая ситуация неприятна обеим сторонам и ее вполне можно было бы избежать, если бы соискатель не кинулся в бой очертя голову, а сначала бы проговорил, как он понял задачу, и что собирается делать.

“Я знаю” или “Google знает”

Обычно присутствует два уровня того, что оценивается – владение неким необходимым набором конкретных знаний и общее умение соображать (иначе креативность) при решении новых задач. Здесь имеется некое противоречие, которое обычно собеседуемый, если не знает о чем идет речь, озвучивает примерно так “… в Google все есть…”. И, слава богу, что есть, это интервьюер и без вас знает, но он же не Google собеседует. Вряд ли вы со своей позиции переубедите интервьюера, если он считает, что ответ на конкретный вопрос нужно брать из головы, а не из Google, даже если это вопрос на чистые знания. Поэтому лучше высказывать свои соображения, идеи, видение подходов. В конце концов, можно просто ответить “не знаю” – в разумном количестве такие ответы вполне допустимы и не являются фатальными. А в некоторых случаях честное “не знаю” – это лучший выбор, который нами весьма приветствуются, особенно если альтернативой будут плавающие мысли по поводу явно незнакомых вещей. Более того, грамотно построенное интервью обычно проводится таким образом, что при обсуждении конкретной темы интервьюер задает ряд логически взаимосвязанных вопросов, начиная простыми и заканчивая все более сложными, чтобы в идеале дойти до ответа “… ну тут я уже не знаю – ого куда забрались…”.

Это мы не проходили, это нам не задавали

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

Но собеседование – это не экзамен по самой своей сути, так как оценка на экзамене не связана для преподавателя ни с какими рисками, а риски, связанные с издержками из-за принятия некомпетентного сотрудника весьма ощутимы. Незнание вами чего-либо – это на этапе собеседования ваша проблема, но если вы станете сотрудником компании – то это станет проблемой компании. И перекладывать вашу проблему на свои плечи компания готова в минимальных четко осознанных пределах. Причины возникновения этой проблемы вообще редко кого-то интересуют, а то, насколько быстро вы можете ее решить, восполнив пробелы в знаниях, проверить на интервью затруднительно, поэтому аргументы “… легкообучаемый, усидчивый, старательный…” чаще всего должного эффекта не возымеют.

Я знаю много технологий и очень много языков...

Да, в вузе вам читали много всякого – семестр того, семестр сего. Беда в том, что в результате большая часть знаний, полученных только в рамках вузовской программы, находится чуть выше уровня “Hello, World ”, чего, как вы сами понимаете, недостаточно, для того, чтобы приступить к работе. У Вас должна быть основная связка технологий, по которой вы в первую очередь позиционируете себя как специалиста. По ней Вы должны знать гораздо больше стандартных институтских лабораторных. Насколько больше – для каждого конкретного случая не угадаешь, но основные синтаксические конструкции, главные классы, стандартные контейнеры и их различия, управление памятью, – все это вы должны быть готовы обсуждать на словах. Если вы определились с основной технологией, то в процессе учебы старайтесь, везде, где у Вас есть право выбора, именно ее и применять, продвигаясь с каждым новым проектом все глубже и набирая необходимый практический опыт. Изучая альтернативные технологии, постарайтесь сформировать представление, что в них является общим, а где таятся принципиальные различия (яркий пример таких различий – управление памятью в C++ и C#).

ООП оно и в Африке ООП

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

У вас не может не быть опыта работы, если вы окончили компьютерную специальность в вузе

“Вы не можете идти на собеседование в нормальную компанию, если у вас нет опыта работы”. Это утверждение, безусловно, истинно и многие студенты, которые ищут свою первую работу, часто рассматривают подобную ситуацию как полный тупик. Происходит это в основном, из-за того, что смешиваются два понятия: ОПЫТ и КОММЕРЧЕСКИЙ ОПЫТ. Варианты бывают разные, но самый массовый – это бакалавр компьютерной или околокомпьютерной специальности, у которого просто не может не быть такого опыта, если он учился в вузе, преследуя цель стать программистом, так как неизбежно делал лабораторные, курсовые и защитил (или защитит) в диплом в конце концов. Конечно, не секрет, что сейчас наиболее распространен вариант, когда эти задания студент самостоятельно не делает, но это же не ваш случай!

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

Если опыта работы действительно нет, нужно сделать так, чтобы он был

Чаще всего это бывает, если специальность не компьютерная или вы ощущаете, что уровень вуза все же недостаточен. Тогда проекты для учебы нужно найти самостоятельно. Это может быть реализация какой-то вашей собственной идеи, Open Source проекты, фриланс – да что угодно. Сделайте один-два проекта, так, чтобы результат Вам понравился, и было бы приятно рассказывать о них другим людям.

Нужно быть готовым рассказать об учебных проектах

И ведь именно эту часть интервью можно подать в самом выигрышном свете – тут вы на своей территории, можете заранее целенаправленно подготовиться, заинтересовать и даже блеснуть какими-то изюминками. Совсем хорошо, если будет подготовлена демонстрация. Только тогда все должно работать как часы. Если что-то глючит, отваливается или недоделано, то демонстрация только навредит. Рассказывая о работе в коллективных Open Source проектах, нужно быть готовым четко ответить на вопрос «А что сделали лично Вы?»

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

Общайтесь так, чтобы вас понимали

За этим нужно специально следить, потому что таких навыков современное высшее образование уже давно массово не дает, а классический неторопливый устный экзамен по курсам, связанным с ИТ, практически канул в лету. Стройте грамматически законченные предложения, употребляйте правильные термины, избегая жаргона, который, возможно, и поймут, но не всегда оценят. Фраза «… и тогда я разрулил трабл с перфомансом, для чего прикрутил эту либу к этой фиговине …» гораздо лучше формулируется так: «… и тогда я решил проблему производительности, для чего использовал такую-то библиотеку в своем проекте…». Следует иметь в виду, что в техническом интервью на той или иной стадии участвует ваш непосредственный будущий начальник. Его мнение имеет зачастую решающее значение. И для него жизненно важно, чтобы вы понимали его, а он понимал ход ваших мыслей, ваши идеи и проблемы.

Незнание конкретных особенностей технологии зачастую менее критично, чем неумение доносить свои мысли до собеседника. Аргумент типа “…я как та собака понимаю, но сказать не могу… ”, который очень часто приходится слышать от студентов, в командной работе благополучно заведет в тупик. Да, в процессе реальной работы многое будет формулироваться письменно, кому-то так, безусловно, проще, но на интервью это невозможно. Достаточно частая причина отрицательного решения состоит именно в том, что вас не понимают, особенно, когда вы рассказываете о своих проектах. “Я не понял, какая задача решалась в бакалаврской работе и как она решалась” – и все, решение будет отрицательным. Причем вы сами даже не осознаете, скорее всего, что именно это и было основной причиной отказа.

Не употребляйте о себе слова с негативным и расплывчатым смыслом

Избегайте оборотов-оправданий похожих на такие: “… у нас лабы были на низком уровне…”, “… у меня сломался компьютер…”, “…да я вообще-то ерунду программировал…”. Очень часто соискатели по собственной инициативе озвучивают что-то в таком духе. Апофеоз подобного стиля беседы продемонстрировал соискатель, который зачем-то рассказал о том, как он потерял флешку с текстом и кодом дипломного проекта за два дня до защиты. Что в этом случае должен подумать его потенциальный непосредственный начальник, который проводил собеседование? Только то, что человек неорганизован и несерьезно относится к серьезным вещам. Угадайте, нужен ли ему такой сотрудник?

Еще одно коварное слово “читал”. Как прикажете вас понимать, если на конкретный вопрос: “ знаете ли вы что такое синглетон?” дается ответ «… я об этом читал …». В умении соискателя читать никто не сомневается. Может быть, за Вашим ответом стоит полное понимание этого паттерна и знание нескольких вариантов его потокобезопасной реализации с их достоинствами и недостатками, а может быть, Вы думаете, что это город в Австралии (есть такой). Упомянуть о том, что вы читали что-то дополнительное на тему вопроса, безусловно, можно, но только после того, как вы обозначили свое собственное видение предмета и хоть что-то рассказали по существу.


Автор публикации: