У нас в гостях Язиля Насибуллина — ИТ-рекрутер кадрового агентства Wanted Profi. С 2016 года она подбирает программистов для Яндекса, SuperJob, Insider и других компаний. Сегодня разбираем семь частых ошибок программистов на собеседованиях.
От редакции: главное искажение найма
Все ошибки кандидатов происходят из-за того, что они смотрят на ситуацию с одной точки зрения, а работодатели — с другой.
С точки зрения кандидата: «Я отличный трудолюбивый специалист, я такой один. Мне нужно доказать, что я такой классный. Если я смогу это сделать, у меня будет классная работа. Есть я, есть работодатель, нужно произвести на него лучшее впечатление!»
С точки зрения работодателя: «На рынке много специалистов. Какие они — очень сложно оценить на первый взгляд. Многие из них — пустышки, неумехи и даже откровенные жулики. Но если мы кого-то из них наймём, нам будет очень трудно их уволить, их защищает Трудовой кодекс. Поэтому нам нужно очень внимательно отбирать людей и проверять их со всех сторон, чтобы не напороться на откровенно неудачного сотрудника».
Кандидаты, которые понимают боль работодателя и рекрутера, будут находить работу быстрее.
1. Проблемное резюме
Резюме — это билет на собеседование. Оно помогает пройти отсев и стать в очередь кандидатов на вакансию. Чтобы резюме сработало, рекрутер должен увидеть релевантный опыт, знание технологий и другие запрашиваемые качества.
❌ Не пишите всё подряд. Если я ищу Java-разработчика, то в резюме хочу видеть знания Java, используемые библиотеки и примеры проектов именно на этом языке.
Вместо этого большинство резюме состоят из списка языков программирования, которые разработчик когда-либо изучал или пробовал. К этому добавляется профиль на GitHub со свалкой неподписанных проектов — у рекрутеров нет времени разгребать бардак, и такие кандидаты проходят мимо собеседований.
❌ Не откликайтесь, если не проходите по основным требованиям. Когда я ищу разработчика со знанием английского, то это нужно для какой-то задачи — например, для коммуникации с командой из США. Поэтому я не буду рассматривать кандидатов без опыта, а тех, кто заявляет про опыт, — постараюсь проверить самостоятельно. Если не получится — английский проверит интервьюер на собеседовании или наставник в период испытательного срока.
✅ Идеальное резюме — это когда у кандидата есть релевантный опыт по всем пунктам вакансии. Хуже — когда опыт заменяется крепкой теорией. На грани — если кандидат не соответствует дополнительным требованиям и это не критично для работы. Например, если в вакансии написано «плюсом будет английский» — это дополнительное требование, которое подтягивается после трудоустройства.
Больше — не значит лучше
У рекрутеров, с одной стороны, много требований от работодателя, а с другой — много кандидатов. Рекрутеру гораздо удобнее, когда в резюме кандидата приведена только нужная информация. Не подробное жизнеописание, а именно та информация, которая относится к текущей вакансии.
Кандидат, напротив, может думать, что его резюме единственное, и чем полнее он о себе расскажет, тем лучше. Это заблуждение. Когда кандидатов много, лучше писать коротко и по делу.
2. Действия без карьерного плана
Карьерный план — это ответ на три вопроса: почему вы занялись программированием, где находитесь сейчас и к чему стремитесь через 5–10 лет. Эти ответы помогают устроиться в подходящую компанию и определить момент, когда стоит задуматься о повышении или найти новое место работы.
❌ Не идите на собеседование, если вам интересна только зарплата. Компаниям невыгодно тратить время на одноразовых сотрудников, которые при первой возможности уйдут за более выгодным предложением — таких людей я стараюсь отсеивать на этапе телефонного разговора или скайп-интервью.
⚠️ Триггером для меня выступает примерно такой контекст: «здесь платят Х, а я хочу 2Х и офис с бесплатным питанием. Найдёте — возвращайтесь, посмотрю вашу вакансию».
❌ Не составляйте карьерный план «на бумаге» — только для того, чтобы понравиться на собеседовании. Типичная ситуация: кандидат рассказывает о своих амбициях → обещает за короткое время дорасти до тимлида → узнаёт, что у компании нет возможности для подобного роста → забывает о карьерном плане и готов на любую должность.
Для меня это сигнал, что интересы кандидата и компании не совпадают и любые сложности могут закончиться поиском нового места работы — такого человека я вряд ли приглашу на собеседование на конкурентную вакансию.
✅ Подготовьте карьерный план и подумайте, как выбранная компания поможет его реализовать. Это может быть практический опыт, интересный продукт, возможность поработать в разных направлениях разработки или стать частью успешной команды под руководством крутого наставника — подойдёт что угодно, что вызывает интерес помимо зарплаты. О зарплате мы поговорим отдельно.
3. Беда с зарплатными ожиданиями
При трудоустройстве на зарплату влияет среднерыночная цена и бюджет, который работодатель выделяет на нового сотрудника — это связанные факторы, и поэтому одна вакансия в разных компаниях оплачивается с разницей плюс-минус 30%. Например, если средняя зарплата начинающего андроид-разработчика 60 000 ₽, то в разных компаниях эта должность оплачивается в пределах 40 000—80 000 ₽.
❌ Не противопоставляйте высокую зарплату комфортным условиям работы. Допустим, компания предлагает начинающему андроид-разработчику 120 000 ₽ — выше максимума среднерыночной вилки. Эта зарплата предполагает 14-часовой график, 6-дневную рабочую неделю и штрафы за любое нарушение дисциплины — разработчик соглашается, терпит пару месяцев и планирует побег в компанию с лучшими условиями. С этого момента начинаются проблемные собеседования.
Если разработчик увольняется, а затем ищет работу — на новом месте спросят о причинах и попросят объяснить отказ от высокой зарплаты.
Если кандидат жалуется на работодателя или тяжёлые условия работы — для рекрутера это повод отказать по софт-скилам. В переводе — «Ты, может быть, хороший специалист, но нам нужны не только хорошие спецы, но и нормальные люди».
Жалоба на задачи — провал по хард-скилам: «Ты, похоже, не такой хороший специалист, как ты о себе пишешь»
Байка о карьерном потолке — повод усомниться в искренности намерений. Обычно люди, которые рассказывают о таком, — это новички, которые убегают от возложенной на себя ответственности.
⚠️ Если разработчик не уволился и в рабочие дни тайно посещает собеседования — ко всему перечисленному добавляется этическая сторона. Кому нужен сотрудник, который обманывает и не уважает работодателя? Штраф и негативный отзыв работодателя не считаем — это бонус ко всему. Увольнение за спиной — это отдельная ошибка, и её разберём позже.
❌ Не ходите на собеседования с расчётом «сколько предложат, на столько и соглашусь». Возьмём другого андроид-разработчика и устроим его в компанию за 20 000 ₽ — ниже минимума среднерыночной вилки. С таким окладом он быстро задумается о переходе и столкнётся примерно с теми же проблемами, что и его коллега за 120 000 ₽. Разница в том, что некоторые работодатели с пониманием отнесутся к ситуации, а другие, наоборот, не поймут, почему человек пришёл за опытом и вместо этого шастает по собеседованиям, выбивая новую зарплату.
✅ Выбирайте компании с программой развития сотрудников — это когда можно начать со средней зарплаты и постепенно её увеличить до высокого уровня по понятным принципам.
Спрашивайте о программе развития на собеседовании — интересуйтесь, до какой должности можно вырасти, как часто повышают зарплату и что для этого нужно. На рынке достаточно компаний, которые уже успели выстроить систему роста и понимают, как будут развиваться их сотрудники.
4. Неуважительное отношение к людям
Где-то в массовой культуре есть образ гениального программиста, которому всё сходит с рук благодаря его гениальности. Такой Доктор Хаус от мира разработки. Но в реальности никто не хочет работать с высокомерными гениями. Такие люди редко проходят собеседование, а если попадают в компанию — не задерживаются в коллективе.
Программирование — это просто навык, который не даёт повод ставить себя выше других. Я уверена, у каждого рекрутера найдётся пример истории, когда крутого технаря не взяли из-за хамства техническому персоналу или кому-то из сотрудников на ресепшене. Официальная причина отказа — слабые софт-скилз.
✅ Исходите из того, что с вами говорит не профан. Если с вами общается рекрутер, не стоит думать, что он ничего не понимает в технологиях. Большинство ИТ-рекрутеров подкованы в теории, умеют читать код на нескольких языках и знают основные принципы программирования. Если кандидат переходит на технический язык и начинает говорить бред — я это понимаю и не допускаю к дальнейшим этапам отбора.
✅ Рекрутеры ценят вежливых и квалифицированных специалистов. Например, в рекрутинге принято осторожно относиться к кандидатам, которые ищут работу после криптовалютных проектов или онлайн-казино. Считается, что такие люди занимаются программированием только ради денег и их невыгодно нанимать. Если мне попадется такой кандидат с хорошим резюме и при этом он нормально ведёт себя на собеседовании — я разберусь в ситуации и приглашу на собеседование. Если у работодателя возникнут вопросы — попрошу не отклонять кандидатуру и сместить акцент с прошлого места работы на знание технологий.
Но если я вижу, что человек относится к окружающим как к прислуге, его шансы невелики.
5. Отсутствие портфолио
Между равными кандидатами чаще выбирают того, у кого есть портфолио. Если два кандидата с портфолио — оценивают выполненные проекты. Если у двух кандидатов с портфолио одинаковое количество релевантных проектов — смотрят на того, у кого всё аккуратно оформлено, подписано и структурировано.
❌ Никогда не говорите, что вы только после курсов, нигде не работали и поэтому пришли без портфолио. Интервьюер сразу попросит показать учебный проект, и любые оправдания будут неуместны и прозвучат не в вашу пользу.
❌ Никогда не говорите, что вы разработчик с опытом и портфолио вам не нужно. Это может быть так, но часто интервьюеры негативно на это реагируют и просят доказать готовность к новой работе. Проще доказывать, когда есть что показать.
✅ Старайтесь делать так, чтобы ваши портфолио запомнились. Слышала у коллег такую ситуацию: разработчик проходил собеседование на тимлида, опаздывал на встречу и всех заранее предупредил. Когда приехал — извинился и подарил девушке-интервьюеру любимые цветы. Как он о них узнал и где купил в пробке — загадка. Получился кейс, как тимлид выходит из неудобной ситуации.
Другой случай: начинающий веб-разработчик сделал серию интересных калькуляторов в стиле «Сколько тебе осталось жить» или «Сколько чашек кофе выпито за последний год». Технически это несложно реализовать, но красивая графика и интересные темы сделали своё дело — знакомого рекрутера это затянуло, он запомнил кандидата и первым позвал его на собеседование.
6. Нечёткие ответы
Цель технического собеседования — проверить кандидата на знание теории, практики и умение мыслить в нестандартных ситуациях. Ценится, когда кандидат даёт чёткие ответы и добавляет к ним примеры или личные кейсы. Вы удивитесь, насколько редко это происходит.
❌ Не уходите в дебри и не избегайте конкретики. Спрашивают про хеш-таблицы — объясните, что это такое и где можно применить. Если есть проект в портфолио — расскажите о нём. Этого достаточно, чтобы проверить ваши знания темы — если нужно, интервьюер обязательно задаст дополнительные вопросы. Главное — не переключайтесь с таблиц на историю программирования и высокие материи искусственного интеллекта: так вы скажете много, но ни о чём.
❌ Вторая крайность — делать практическую часть молча. Когда вы проговариваете решение, интервьюер слушает ход мыслей и может вовремя подкорректировать ошибку. Если решение правильное, но вы не способны его объяснить — это равносильно зазубренному ответу, который не засчитывается.
✅ Запомните формулу идеального ответа на любой технический вопрос: скажите что это и где используется → где использовали вы и почему → с какими сложностями или ограничениями столкнулись → как вышли из ситуации.
7. Поиск работы за спиной работодателя
ИТ-рынок не такой большой, как кажется: программисты постоянно меняют компании и обращаются к рекрутерам, рекрутеры обсуждают с руководителями разных кандидатов, а руководители советуются с другими руководителями по найму новых сотрудников. Исходите из того, что все друг друга знают.
Из-за этого сложно сделать так, чтобы числиться в одной компании и тайно ходить по собеседованиям. Очень высока вероятность того, что об этом узнает работодатель. Чтобы избежать проблем, нужно делать всё открыто или сначала уволиться.
❌ Не ходите по собеседованиям, если вам это запретили. Я знаю компании с таким негласным правилом: открыл на hh.ru резюме — подавай заявление об увольнении.
Бывает и обратная ситуация, где руководители рекомендуют ходить по собеседованиям для поддержания тонуса. Какие правила в вашей компании — нужно спрашивать. Если руководитель против — это нельзя игнорировать. Иначе на собеседованиях появятся вопросы по дисциплине.
❌ Никогда не шантажируйте компанию увольнением. У знакомого ИТ-рекрутера была такая ситуация: разработчик тайно прошёл собеседование и должен был за месяц перейти на новое место работы. Об этом узнал руководитель и предложил компромисс: доработать полгода до конца проекта и спокойно уйти. Разработчик согласился, передоговорился на новом месте работы и в середине срока пошёл на шантаж — он запросил двойную зарплату, поскольку писал основной код.
Руководитель согласился, всё выплатил и рассчитал разработчика. Об этом много кто узнал, и разработчик отправился на фриланс — ему закрыли двери на все собеседования. Компаниям теперь будет очень трудно согласиться платить существенные деньги человеку, склонному к подобным подставам и подлости.
✅ Хотите найти новую работу — сделайте это по-человечески. Здесь хочу поделиться двумя похожими примерами с разным успешным результатом.
Ситуация: два разработчика в разных компаниях хотят стать тимлидами и думают об увольнении, поскольку на текущем месте количество должностей ограничено.
Разработчики объясняют ситуацию руководителям и просят разрешения на внешние собеседования. Руководители предлагают компромисс: год подменять местного тимлида, получить опыт и после ходить по собеседованиям. В итоге первому разработчику не понравилась менеджерская работа и он остался в компании развиваться по технической части. Второй разработчик прошёл собеседование, стал тимлидом и сохранил хорошие отношения с руководителем.
Бывают исключения, но на них лучше не надеяться
Есть две ситуации, в которых ошибки не влияют на результат трудоустройства:
- Когда компания срочно закрывает вакансию, ей нужен кандидат с особым опытом и в поле зрения только один программист.
- Когда нужен конкретный программист из другой компании и его готовы получить любым способом.
В остальных случаях работу получают те, кто меньше ошибается, показывает релевантный опыт и создаёт приятное впечатление на собеседовании.
Что дальше
Если хотите следить за вакансиями и хитростями рекрутеров — посетите телеграм-канал IT Recruiter Profi.
Нужна консультация — обращайтесь к Язиле Насибуллиной.
Думаете над резюме — посмотрите инструкцию от разработчика из Яндекс.Практикума.
Хотите больше рекомендаций — почитайте теорию о собеседованиях в ИТ-компании.
Автор этих советов, Гейл Лакман Макдауэлл — основатель и CEO CareerCup, автор известных книг по подготовке к собеседованиям. Гейл работала программистом в Microsoft, Apple и Google. У неё есть степени бакалавра и магистра University of Pennsylvania, а также MBA Wharton School. В настоящее время проживает в Пало-Альто, Калифорния.
1. Использование компьютера
Станете ли вы учиться сёрфингу в бассейне? Скорее всего, нет. Ведь вам нужны волны и другие особенности «живой природы». Можем поспорить, что ваш выбор падёт на океанское побережье. Использование компилятора для «репетиции» собеседования подобно тренировкам в бассейне. Забудьте про компилятор, возьмите ручку и лист бумаги. Используйте компилятор для проверки решения, но только после того, как написали и протестировали код.
2. Игнорирование поведенческих вопросов
Многие кандидаты тратят всё свое время на подготовку к техническим вопросам и упускают поведенческие. Но ваш интервьюер, скорее всего, их не упустит! Более того, ответы на поведенческие вопросы могут изменить восприятие интервьюером ваших профессиональных данных. К ответам на поведенческие вопросы легко подготовиться. Вспомните все свои проекты и используйте их для подготовки.
3. Отказ от псевдоинтервью
Представьте, что вы готовитесь к публичному выступлению перед своей группой, компанией или какой-нибудь другой большой аудиторией. Ваше будущее зависит от этого. Только сумасшедшие или излишне самоуверенные люди будут готовить такую речь в одиночку. Один из способов подготовки — так называемое псевдоинтервью. Если вы инженер, то должны быть знакомы с коллегами. Попросите приятеля провести для вас «собеседование». Этот метод принесет только пользу!
4. Попытка зазубрить ответ
Запоминание решения конкретной задачи пригодится вам только в том случае, если интервьюер даст именно эту задачу, но никак не поможет решить новые задачи. Очень маловероятно, что в Интернете или какой-либо книге вы найдете все или хотя бы большую часть вопросов, которые могут достаться вам на собеседовании. Намного эффективнее не привязываться к конкретике. Это поможет вам разработать стратегии решения новых задач. Лучше качество, нежели количество.
5. Решение задачи «в уме»
Откроем вам секрет — интервьюеры не телепаты и не знают, что происходит у вас в голове. Следовательно, если вы ничего не произносите вслух, не известно, о чем вы думаете. Если вы молчите, они считают, что у вас нет решения. Больше говорите и пытайтесь комментировать решение. Это покажет интервьюеру, что вы решаете поставленную задачу, а ваше молчание будет расценено как то, что вам нечего сказать. Дайте возможность интервьюеру подсказать вам путь решения или указать на ошибку, когда вы в этом будете нуждаться. Простейшие навыки коммуникации помогут получить желаемую вакансию. Что может быть лучше?
6. Спешка
Программирование — это не ралли, даже на собеседовании. Уделите больше времени написанию кода. Спешка приводит к ошибкам, а они могут быть расценены как небрежность. Пишите код последовательно и неторопливо, анализируйте задачу и проверяйте код. В итоге вы закончите работу за меньшее время и с минимальным количеством ошибок (а может и без них).
7. Грязный код
Знаете ли вы, что код, даже написанный без ошибок, может быть просто ужасным? К сожалению, это так! Дублирование, огромные структуры данных (отказ от объектно-ориентированного программирования) и т.д. являются показателями плохой программы. Когда вы пишете код, представьте, что он должен быть ещё и хорошо поддерживемым. Разбейте код на подпрограммы и выберите оптимальную структуру, соответствующую данным.
8. Отказ от проверки
Когда вы пишете код в реальной жизни, вы его тестируете, так почему бы этого не сделать на собеседовании? Когда код написан, «запустите» его (в качестве компилятора будете выступать вы сами) и протестируйте. При решении сложных задач тестируйте фрагменты кода по мере написания.
9. Небрежное отношение к исправлению ошибок
Ошибки неизбежны. Это норма жизни и программирования. Если вы тщательно протестируете код, то наверняка обнаружите свои ошибки, — и это хорошо. Если вы обнаружили ошибку, то прежде чем исправить ее, постарайтесь разобраться, откуда она появилась. Некоторые кандидаты, обнаруживая, что при определенных условиях функция возвращает false, просто инвертируют значение, а не разбираются, почему так происходит. Конечно, это встречается не часто, но подобное действие порождает дополнительные ошибки и показывает, насколько вы небрежно относитесь к написанию кода. Никто не застрахован от ошибок, но бездумное исправление кода недопустимо.
10. Отказ от решения
Очень часто вопросы оказываются достаточно сложными. Примете ли вы вызов или повернёте назад? Мы рекомендуем достойно встретить трудную задачу. Ведь собеседования для этого и проводятся. Не удивляйтесь, когда вам достанется действительно сложный вопрос.
Также рекомендуем по теме:
- 80 задач с IT-собеседований с разбором решений
- 28 cайтов с задачами по программированию
Советы взяты из перевода книги Г. Лакман Макдауэлл и предназначены исключительно для ознакомления.
Если они вам понравились, то рекомендуем купить книгу «Карьера программиста. Как устроиться на работу в Google, Microsoft или другую ведущую IT-компанию».
Типичные ошибки программиста при устройстве на работу -74
Управление персоналом, Карьера в IT-индустрии, IT-компании, Фриланс
Рекомендация: подборка платных и бесплатных курсов создания сайтов — https://katalog-kursov.ru/
С 2007 года я всё время (даже сейчас) кого-то нанимаю на работу. Сначала это были просто верстальщики и технологи для небольших веб-сайтов, а сейчас это тестировщики, фронтенд и бэкенд-разработчики для нагруженных медицинских проектов. Хочу поделиться с сообществом типичными ошибками ребят, которые приходят устраиваться к нам на работу.
1. Кривое резюме
По резюме сразу видно, умеет человек думать, или нет. Нормальный человек, когда пишет резюме, делает это с точки зрения пользователя, задавая сам себе вопрос: «Поможет ли моё резюме работодателю выбрать меня?». Понятно, что хэдхантер или мойкруг сами формируют каркас резюме, но даже пользуясь этими платформами соискатели умудряются делать ошибки.
Типичные ошибки в резюме:
- нет контактов (да, так бывает!)
- нет сопроводительного письма, когда это необходимо (почему вы хотите к нам именно на эту вакансию). Бывает, что письмо не нужно, потому что всё уже понятно: работал 20 лет во фронтенде и хочет продолжать. А вот если кандидат работал сантехником и решил стать программистом — возникают вопросы. Их лучше сразу снять, написав о своих мотивах в сопроводительном письме
- не указан уровень предполагаемого дохода. Иногда кажется, что если вы не укажете з/п, то у вас будет больше пространство для манёвра. Однако, таким образом вы оказываетесь вне фильтра работодателя, если он указал при поиске конкретный диапазон денег.
- резюме написано не на языке работодателя. Если хотите устроиться в РФ, — пишите на русском. Если за рубеж — на английском. Лучше всего иметь две версии.
- дебильные шутки. Чувство юмора — штука опасная и относительная, не старайтесь блеснуть им в резюме. Текст не передаёт эмоций, поэтому вашу шутку могут не понять.
2. Нет проектов и опыта
Если вы устраиваетесь на работу программистом, у вас должен быть опыт. Даже, если вы устраиваетесь на позицию джуниора, всё равно нужно иметь за спиной какие-то проекты на уровне хобби или учёбы. Идеально, если у вас есть приличный аккаунт на гитхабе, куда вы хотя бы раз в несколько месяцев что-то пушите. Лично у меня такой аккаунт есть и я в нём постоянно работаю. Часто приходится слышать, что кандидат не может показать код, потому что у него NDA. Лично я в это не верю. Всегда можно показать свой код, даже если он закрыт NDA, но в отрыве от контекста: просто показать какую-то часть, по которой понятен ваш стиль кодирования. Если показать совсем нечего, придётся делать тестовое задание, а это затраты времени, причём, в первую очередь, соискателя. Так что в интересах соискателя подготовить код для демонстрации заранее.
3. Не отвечает на звонки/письма
Эта штука происходит настолько часто, что я удивляюсь, как такие люди вообще находят работу. В моём понимании приличный человек перезванивает по пропущенным звонкам и отвечает на письма. Если я вижу, что мне настойчиво звонит один и тот же номер уже четвёртый раз за два дня, я обязательно перезвоню. Если пишут письмо, — отвечу хотя бы одним предложением. А некоторые кандидаты откликаются на вакансии на HH, отправляют резюме и не отвечают на звонки и письма. Лично для меня это признак безответственности и/или невнимательности. И то и другое плохо, так что таких кандидатов я записываю в анунахи.
4. Кривое тестовое задание
Часто присылают плохо сделанное тестовое задание. Приведу пример типичных ошибок для джавы, но этот список прекрасно подойдёт и для других языков.
- Невнимательное чтение задачи. Например, использование ORM, когда написано, что его использовать нельзя;
- Глушение исключений через e.printStackTrace();
- Отсутствие комментариев;
- Кривое ООП: какие классы чем должны заниматься;
- Недостаточное разделение кода;
- SQL Injection;
- Лапшекод; Огромные методы, которые можно разбить для понятности на несколько частей;
- Работа с гитом: лишние файлы в репозитории;
- Именование классов, методов, стиль кодирования;
- Настройки БД в неправильном месте;
- «My English is very good». Если хреновый английский, пишите на русском
- Отсутствие тестов
- Незакрытые ресурсы: файлы, подключения
5. Плохие отношения
Я живу в маленьком провинциальном городе Череповце и все программисты друг друга знают. Когда ко мне приходит кандидат, я почти всегда знаю, у кого навести про него справки. Почти всегда мне что-то рассказывают и я принимаю решение, исходя из чужого мнения. Мало быть хорошим программистом, нужно быть ещё и хорошим человеком. Даже, я бы сказал, что человеческие качества играют первостепенную роль при приёме.
Однажды ко мне пришёл устраиваться хороший программист по имени Николай. Поговорив с ним, я понял, что он мудак и в какой-то форме ему отказал. Через пару дней мне звонит мой СамыйГлавныйРуководитель и справшивает:
— Звонил Николай Пупкин и жалуется, что ты его не взял. Почему не взял?
— Потому что он мудак
— А, понял, хорошо.
Иногда мы берём совершенно неподготовленных джуниоров, потому что «хороший человек». Был бы человек хороший, а знания мы в него запихнём на внутренних курсах или отправим учиться на внешние.
6. Неумение обосновать свои решения
Если вы делаете тестовое задание или скидываете пример своего кода, нужно уметь рассказать об этом коде: почему были приняты те или иные решения. Если вы сразу понимаете, что решение неочевидное, пишите сразу, почему вы сделали так, а не иначе.
У меня был случай, когда я взял на работу программиста, а он начал постоянно со мной спорить по каким-то архитектурным вопросам. Спорить — это хорошо, но нужно уметь обосновывать свою позицию, а не говорить «потому что так надо». Со временем получилась странная ситуация: я говорю одно, а он тихонечко делает другое. Пришлось расстаться. Но в этой ситуации была и моя ошибка: нужно было сразу при приёме на работу прояснить, кто в доме хозяин и кто принимает конечное решение. Когда я искал замену этому парню, я эту ошибку исправил и мы сразу на входе договорлись, кто принимает конечное решение. Теперь никаких проблем.
7. Непонимание уровня дохода
Часто кандидат приходит и не знает, сколько он хочет зарабатывать. Когда задаю вопрос, часто слышу такой ответ: «Ой, это сложный вопрос, я об этом пока не думал». Такой кандидат всегда получает минимум. Моя тактика:
— Сколько вы хотите зарабатывать?
— Не знаю
— 10 тыщ хватит?
— Не, маловато
— Хорошо, а 25 тыщ хватит?
— Не, мало, это только на кредит за машину
— Ок, тогда 45?
— Да, более менее.
При таком диалоге кандидат всегда получает меньше, чем мог бы. Если же он подготовился заранее, знает свой уровень и зарплаты по рынку для своего уровня, он сам может себя реально оценить.
8. Леность в саморазвитии
Я спрашиваю кандидатов про книжки, которые он мне порекомендовал бы почитать в своей отрасли. Я говорю примерно так: «Я плохо знаю Angular 6. Что порекомендуете почитать/посмотреть, чтобы научиться»? Если кандидат не увлечён своим делом, он ответит что-то очень относительное. А если кандидат привык к постоянному обучению, он немедленно порекомендует конкретную книжку или конкретные курсы.
Вот такие получились ошибки. Иногда кажется, что у меня слишком завышенные требования, однако, по результату, оказывается, что в команде работают только самые классные люди.
Надеюсь, это кому-то поможет найти хорошую работу. Всем счастья и Божественной Любви =)

- Изучим ошибки и поймем, как их избежать
- #1: Написание кода до записи наброска решения
- #2: Слабые знания основ Computer Science
- #3: Успокойтесь
- #4: Слабое знание языка программирования
- #5: Отсутствие тестирования
- #6: Неправильное понимание вопроса
- #7: Игнорирование граничных случаев
- #8: Сырой код
- Выводы
- Методология
Изучим ошибки и поймем, как их избежать
Как бы вы поступили, появись у вас возможность проанализировать большую выборку собеседований работодателей с программистами? Причем если содержание сведений в этой выборке позволяло бы выявить взаимосвязь между поведением испытуемых во время интервью и отзывом на него работодателей?
Причина, по которой некто мог бы выполнить нечто, если бы такая возможность была, состоит в том, что он сделал бы то, что выполнить не может. (Огурчик Рик)
Мы уверены, что вы бы провели полномасштабное статистическое исследование. Именно потому, что у нас такая возможность была, мы за это и взялись.
Мы изучили более 20 000 интервью, которые проводились на нашей платформе для собеседований с программистами Pramp. Рассмотрели взаимные отзывы, сгруппировали их по тематике и выявили статистически значимые тенденции.
В результате в этой статье мы представляем вам восемь наиболее распространенных ошибок, которые разработчики программного обеспечения допустили во время прохождения собеседований с работодателем, и ряд правил, которые мы разработали для Вас, чтобы помочь избежать этих ошибок в будущем. Всего лишь несколько хороших и простых советов для подготовки к собеседованию!
В конце вы найдете описание методологии, примененной нами для написания статьи.
Обратите внимание, что ошибки перечислены в порядке частоты встречаемости, а не степень их серьезности. Второй вариант будет отдельно рассмотрен в нашем блоге в следующий раз.
Давайте сначала бросим взгляд на проблему с высоты птичьего полета:

#1: Написание кода до записи наброска решения
Частота ошибки на собеседовании: 20.66%.
Приступать к написанию кода до того, как решение было полностью продумано – вот рецепт гарантированной неудачи. Проблема с непродуманным, полу готовым решением заключается в том, что к моменту, когда вы поймете свою ошибку, времени на исправления может уже не остаться.
Не важно, нервы или самоуверенность заставляют вас спешить ‑ никогда не спешите. Вы, наверняка получите больше вреда, чем пользы, если будете думать, что сможете найти решение в процессе написания кода. Это редко заканчивается хорошо.
Совет. Начните с объяснения собственного процесса мышления и вдумчивого размышления о том, как разбить проблему на более простые части. Когда вы будете готовы начать, напишите псевдокод, чтобы уточнить свой подход к решению. Одновременно используйте примеры, чтобы изложить ключевые шаги вашего алгоритма.
Вы должны также упомянуть о грубом, прямом/наивном решении на начальном этапе, до того как что-то написать. Для этого существует несколько причин. Во-первых, это поможет вам избежать неловких моментов молчания, пока вы все еще пытаетесь найти оптимальное решение. Во-вторых, грубое решение иногда можно довести до вполне оптимального. Наконец, ваша цель, как инженера, написать программу работающего решения. Правильность всегда имеет преимущество перед эффективностью.
Если вы потерялись и не можете сдвинуться с места, вот несколько отличных советов о том, как сдвинуться с мертвой точки в процессе прохождения технических собеседований.
#2: Слабые знания основ Computer Science
Частота ошибки на собеседовании: 20.05%.
Понравится вам это или нет, но большинство ключевых тем собеседований с программистами сегодня по-прежнему вращаются вокруг проблем, связанных с структурами данных и алгоритмами (DS&A). Это справедливо как для стартапов так и крупных компаний, таких как Dropbox, Airbnb, Uber & Palantir и, конечно же, для таких гигантов, как Google, Facebook, Amazon & Apple.
Совет. Потратьте какое-то время на изучение структур данных и алгоритмов. Это поможет не только в программировании, но и в профессиональном росте. Понимание базовых DS&A является важной составляющей при разработке любого программного обеспечения.
Примечание переводчика: в англоязычной литературе DS&A — аббревиатура для фразы Data Structures & Algorithms – структуры данных и алгоритмы.
Помимо Pramp.com, вот список ресурсов, которые мы рекомендуем:
- Отличный курс от Courcera, предоставляющий всю важную информацию об алгоритмах и структурах данных, необходимую каждому серьезному программисту: Алгоритмы, часть 1, Алгоритмы, часть 2.
- «Cracking Coding Interviews» Гейла Лаакманн Макдауэлла — хорошая книга, в которой есть примеры задач, решения и рассказы о том, как разные компании подходят к найму.
- Два хороших бесплатных учебных курса, посвященных тому, чтобы помочь вам добиться успеха в техническом собеседовании:
- Подготовительный курс по техническому собеседованию от Udacity & Pramp
- Подготовка к собеседованию по программной инженерии от Coursera
#3: Успокойтесь
Частота ошибки на собеседовании: 15.80%.
Интервьюеры не джедаи – они не могут читать ваши мысли. Конечно, вы можете волноваться, и ваши мысли могут быть не особенно последовательны, но, если вы не сможете набраться смелости и начать говорить, забудьте об успешном прохождении собеседования. Недостаточно объяснить ваш подход к решению задачи, который вы даете в начале собеседования. Ожидается, что вы будете общаться на всех этапах, в том числе во время внедрения и тестирования вашего алгоритма.
Совет. Самое распространенное когнитивное искажение – думать, что ваши мысли очевидны и понятны для других. Выполняя задачу, объясняйте каждый шаг рассуждений. Говорить и писать код одновременно для многих из нас не является естественным. К счастью, есть отличная платформа, которая поможет вам практиковаться :). Если волнение мешает правильно высказывать мысли, можете попробовать эти методы, чтобы овладеть собой.

#4: Слабое знание языка программирования
Частота ошибки на собеседовании: 12.56%.
У вас могут быть отлично развиты навыки решения задач и алгоритмическое мышление, но этого будет недостаточно, если вы не знаете основные конструкции, функциональность и синтаксис выбранного языка программирования. Чтобы прояснить, никто не ожидает, что вы запомните наизусть интерфейс какой-то эзотерической структуры данных, которая используется крайне редко. В этом случае превосходным вариантом будет погуглить ответ. Все так поступают.
Однако, если вы не справились с такими элементарными вещами, как, например, управление памятью в C, наследованием в Java, генератор списков в Python или замыкания в JavaScript, ваше собеседование обречено на провал. Хотя подобные ошибки обычно совершают новички, она также распространена и среди специалистов из академической среды, имеющих глубокие теоретические знания, но скудные практические инженерные навыки.
Совет. Если это про вас, проходите собеседование на том языке программирования, которым владеете лучше всего. Интервьюеры часто позволяют выбирать предпочитаемый вами язык программирования.
Если это не так – например, если вы проходите собеседование на позицию фронтэнд-разработчика, где требуется знание JavaScript, заранее потренируйте навыки программирования на этом языке.
Разработка собственного проекта – единственный способ на практике освоить язык программирования. Нет идей? Вбейте простой поисковый запрос в Google.
#5: Отсутствие тестирования
Частота ошибки на собеседовании: 10.33%.
Не тестировать программный код — также путь к провалу на собеседовании. Во-первых, очень часто для проверки кода достаточно всего пары проверок на конкретность. Запуск алгоритма с несколькими примерами позволит обнаружить ошибки и сразу же исправить их.
Кроме того, вы можете придумать оригинальное решение, о котором даже не подозревал оппонент. Демонстрируя работу с тестовыми примерами, показывая, как меняются значения каждой переменной в каждой строке кода, вы облегчаете интервьюеру понимание и показываете, что ваше решение действительно работает.
Совет. Рекомендуется трижды использовать тесты во время собеседования. В первый раз – сразу после того, как ваш интервьюер закончил задавать вам вопросы по вашему коду. Используйте один-два примера, чтобы проверить, что вы поняли вопрос (подробнее см. # 6 ниже). Второй раз после того, как вы набросали свое решение. Используйте нетривиальный тестовый пример, чтобы вместе с интервьюеров пройтись по вашему псевдокоду и проверить его правильность. Наконец, как только вы закончите программировать свое решение, проверьте еще раз, что в вашем коде нет ошибок.
#6: Неправильное понимание вопроса
Частота ошибки на собеседовании: 9.11%.
Среди всех перечисленных нами ошибок избежать эту легче всего. Довольно удивительно, что около 9% всех кандидатов все еще совершают эту ошибку.
Совет. Первое, что вы должны сделать после того, как ваш интервьюер закончил объяснять свой вопрос ‑ повторить этот вопрос своими словами, чтобы убедиться, что вы все правильно поняли. Если вы ошибаетесь, вам подскажут. Это избавит вас от ошибочного ответа на совершенно другой вопрос. Иногда мы слишком поздно понимаем, что совершили ошибку и времени на исправление уже не остается.
Повторяя вопрос, приведите несколько простых примеров входных данных и убедитесь, что вы правильно оцениваете ожидаемый результат. Второй момент – спросите, можете ли вы сделать определенные предположения. Например, спросите, можете ли вы предположить, что входные данные находится в определенном диапазоне. Или, в зависимости от вопроса, спросите, нужно ли сортировать данные на входе. Наконец, также хорошо прояснить заранее, требуется ли проводить оптимизацию.
#7: Игнорирование граничных случаев
Частота ошибки на собеседовании: 8.31%.
Не учет граничных случаев, может являться признаком неразвитых навыков решения задач программирования. Во-первых, если ваш алгоритм не обрабатывает все корректные данные — решение является неполным. Во-вторых, не учитывая граничные случаи, вы упускаете возможность придумать более удачный алгоритм решения. Например, в задаче «Поиск недостающего числа» прямое («силовое», грубое) решение заключается в том, чтобы вычесть сумму входного массива из общей суммы (1, …, n). Однако при достаточно большом «n» решение будет неверным из-за переполнения целочисленного значения. Осознание этого граничного случая заставит вас подумать о более подходящем решении. И действительно, используя побитовый оператор XOR, мы можем разработать решение, которое больше не подвержено переполнению (более подробно см. второе решение в ссылке выше).
Совет. Используйте проверки своего алгоритма на граничные значения. Если ваш алгоритм не работает в некоторых из таких случаев, сначала проверьте, можете ли вы его исправить. Если вы нет, спросите своего интервьюера, следует ли вам обращать внимание на эти граничные случаи. Если ответ положительный и вы не можете ничего придумать, обратитесь к вашему интервьюеру и уточните в правильном ли направлении вы движетесь. Дополнительные советы по разрешению проблем для граничных случаев см. в этом сообщении в блоге.
Частота ошибки на собеседовании: 7.69%.
На собеседовании, как правило, обращают внимание не только правильность и эффективность. Важен также ваш стиль программирования. Ваш код может быть эффективным и железобетонным, но при этом возможно, что только вы (да еще Бог) понимаете этот код – в этом случае остается только пожелать вам удачи вам в получении предложений о работе.
Эта ошибка распространена среди новичков, а также опытных разработчиков, переходящих на новый язык программирования и тех, кто занимается спортивным (олимпиадным) программированием. Вот некоторые ошибки, которых следует избегать:
- Использование непонятных имен для переменных, функций и т.д. Обычно это использование одиночных символов в качестве имен переменных. Или вызов функции с именем«func». Особенно внимательным нужно быть спортивным программистам, поскольку они привыкли использовать сверхкороткие имена в своих программах, чтобы быстрее кодировать. Это не сработает во время собеседования.
- Непоследовательный стиль кодирования. Несмотря на то, что у каждого имеется свой стиль программирования, следует избегать смешения различных стандартов оформления программного кода. Например, использование различных соглашений об именах. Или использование табуляции в одних частях вашего кода и использование пробелов – в других. Вам следует придерживаться определенного стиля. Например, если вы поместите открывающую фигурную скобку в одну строку, не помещайте затем ее с новой строки. Подобных примеров можно приводить множество, но я думаю, вы уже поняли.
- Использование безопасного программирования, такого как NULL-проверки и множество особых случаев, не задумываясь о том, нужны ли они. Это приводит к более сложному коду, который трудно понять и отладить.
Совет. Буду краток. Используйте здравый смысл, чтобы придумать «говорящие» имена там, где это необходимо, выбрать один стандарт кодирования и придерживаться его на протяжении всего собеседования. Кроме того, вы хотите, чтобы ваш код был понятным. В противном случае ваш интервьюер может начать сомневаться в ваших знаниях языка программирования.
Выводы
Если вы дочитали статью до этого места, вы, возможно, заметили, что значительная доля всех ошибок, допущенных кандидатами, имеет мало общего с техническими навыками. Фактически, не технические ошибки (№ 1, № 3, № 6) составляют 44% всех ошибок.
Это еще одно доказательство того, что собеседование – это принципиально отличных от программирования навык. И это важно, так как многие опытные программисты считают, что им не нужно готовиться к интервью. Это большая ошибка, которая объясняет, почему кандидаты-выпускники колледжей часто показывают гораздо лучшие результаты на собеседовании, чем на опытные программисты.
Именно этим мы занимаемся в Pramp. Мы бесплатно предоставляем комплексную площадку для проведения собеседований. Она уже помогла тысячам программистов избежать ошибок на собеседованиях. Готовы ли вы к собеседованию?
Методология
Чтобы идентифицировать ошибки и рассчитать их частоту, мы рассмотрели данные о последних 20 000 интервью с программистами, проведенных на Pramp.
Сначала о самой платформе. Pramp — бесплатная «точка-точка» площадка для тренировки и самопроверки программистов. Проще говоря, мы проверяем разработчиков программного обеспечения с помощью видеочата и совместно используемой среды программирования, чтобы имитировать проведение собеседований по программированию.
Каждый такой сеанс интервью является двунаправленным. Это означает, что оба эксперта беседуют друг с другом в одной сессии. Каждый из них выбирается случайным образом, быть ли интервьюером или кандидатом, а затем через 30-45 минут они меняют свои роли – интервьюер становится кандидатом, а кандидат становится интервьюером.
По завершении собеседований, каждая сторона дает структурированную обратную связь о по нескольким параметрам, таким как решение задач, качество кода, общение многим другим. Форма обратной связи также включает в себя два текстовых поля, где участники описывают, что их собеседники делали хорошо, а что они должны улучшить. В нашем анализе мы учли второй вариант.
Мы проанализировали ответы в более чем 20 000 интервью на вопрос «Что было не так хорошо».
Первым шагом в нашем анализе было выяснение повторяющийся «категории ошибок» в ответах пользователей на вопрос «Что было не так хорошо?» В форме обратной связи. С этой целью мы выбрали случайные 1 068 интервью из 20 000 интервью. При таком размере выборки результаты статистически значимы (уровень достоверности 95% и допустимая погрешность менее 3%). Затем мы перечислили вручную эти 1 068 ответов.
Мы определили девять категорий. Восемь из них ‑ упомянуты в статье. 9-я категория была «Другая». Эта категория включала отзывы, которые либо не говорили ничего значимого (например: «Вы отлично поработали, мне нечего добавить», «Ничего не могу придумать» и т.д.), или что указывает на проблему, частота которой не была статистически значимой (например, ~ 1% всех обратных связей относились к скорости кодирования сверстников). При расчете распространенности ошибок мы исключили все отзывы, которые попали под категорию «Другие».
Предполагая, что интервью на Pramp является хорошей моделью реальных технических интервью (а у нас нет оснований полагать противное), размер выборки в 1 068 интервью также является репрезентативным и для общего числа технических интервью, проводимых в «реальном мире».
Перевод статьи The Pramp Team: Technical Interviews: the 8 Most Common Mistakes Programmers Make
Советы
Опубликовано 29.10.2020 15:12

Вы проходите собеседование, делаете тестовое, показываете хороший результат и… получаете отказ. Почему? Секрет HR – предложение получает не самый сильный кандидат, а самый подходящий. Расскажем про 7 распространённых ошибок, которые отпугивают работодателя.
Пусть весь мир подождёт
Опоздание – верный путь настроить против себя компанию, ещё до того, как началось собеседование. Хуже – не предупредить. По результатам спецопроса hh.ru 46% HR-специалистов признались, что опаздывающих на работу, скорее всего, не возьмут. Но 88% опрошенных уточнили, что простят опоздание, если кандидат сообщил об этом заранее.
IT-звезда
Обычная история для позиции junior: вы думаете, что знаете всё, и оцениваете свой код по шкале от 0 до 10 примерно на сотку. Отнеситесь к своим возможностям на данном этапе объективно. Осознание ошибок и недоработок – половина пути к решению проблемы.

Я знаю, что ничего не знаю
Это позиция, при которой вы считаете успехи стечением обстоятельств, а неудачи – закономерностью. Что-то не знать – нормально, но принижать свои заслуги не стоит.
Если вы попали в эту ловушку, во-первых, примите тот факт, что вы не одиноки. Так происходит у большинства новичков. Помогите себе выйти из этого состояния: попросите обратную связь от однокурсников, наставников и близких. Загляните в профессиональные сообщества, пообщайтесь с коллегами, посмотрите, как делают другие. Оцените результат своей работы и осознайте, что он гораздо лучше, чем вы думаете 🙂
Один за всех
Рассказывая о достижениях на предыдущих местах работы, не приписывайте все успехи себе, а недочеты коллегам. Работодатель подумает, что и в новом коллективе вы займёте подобную позицию. Никто не хочет работать с токсичными людьми.
Торжественные клятвы
Работодатель предлагает условия: дата выхода, срок стажировки, оплата, выходные. Необходимо подумать? Подумайте. Что-то не подходит? Обсудите. Обещание придётся сдержать в любом случае. Если вы дадите своё согласие, а затем не выполните договорённости – это снизит уровень доверия и обесценит ваше слово.
Две стороны баррикад
Работодатель не враг. Обе стороны на собеседовании находятся на равных позициях. Вы – выбираете место будущей работы. Компания – получает хорошего специалиста. Цель собеседования: сопоставить ожидания. Для этого необходимо взаимное доверие, честность и доброжелательность.
Если чувствуете пассивную агрессию от собеседника, скорее всего, это не то место, где вы захотите работать.
Хочу всё и сразу
Планируя карьеру, необходимо представлять тот путь, который вы пройдёте от новичка до эксперта. Вероятность, что первая работа будет высокооплачиваемой, невелика. Вам придётся много учиться и работать, чтобы достичь желаемого уровня. Распределите силы равномерно и не формируйте ошибочные ожидания. Это поможет не выгореть и не разочароваться в самом начале пути.
Эти 7 ошибок преследуют начинающих программистов, которые только закончили учёбу. Есть два пути, чтобы их не допускать: делать вид, что это не про вас, или работать над собой. Выбирая второй вариант, вы становитесь на шаг ближе к работе мечты!
Автор материала: Еремина Екатерина, координатор курсов LoftSchool
Руководитель разработки стрима новых бизнесов в Яндекс.Еде Александр Черников рассказывает, как программисту подготовиться к собеседованию, какие качества кандидатов нравятся рекрутерам и в чем главный секрет успешных интервью.
Всем привет! Меня зовут Александр Черников. За всю свою жизнь я провел более 500 собеседований, а еще помог многим своим друзьям пройти интервью в топовые компании, в том числе и в FAANG.
Многие кандидаты не знают, для чего вообще нужны собеседования. Они идут на интервью с мыслью, что рекрутеры хотят их завалить, как злой преподаватель на экзамене. А потом нервничают, впадают в ступор и ведут себя неуверенно.
Реальная цель собеседования — узнать, подходит ли кандидат компании и, что еще важнее, подходит ли компания кандидату. Я, например, обращаю большее внимание на то, как человек мыслит и рассуждает, жаждет ли он знаний, умеет ли внимательно слушать. А технический минимум, индексы, сложности, базовые библиотеки и прочие знания я рассматриваю во вторую очередь.
Собеседование — это не страшный экзамен. Оно больше похоже на знакомство или тест на совместимость. Чтобы в этом убедиться, давайте разберемся, как вообще проходят собеседования и что интервьюеры ждут от кандидата.

Как проходит собеседование разработчика
Встреча с рекрутером
Встреча с рекрутером выглядит как обычное знакомство. Кандидату рассказывают о вакансии, качествах специалиста, которого ищут, и продукте компании. Разговор проходит в ламповой обстановке.
Работодатели знают, что собеседование — это стресс для кандидата и в начале пытаются разбавить интервью смол-током, чтобы человек вел себя максимально уверенно и спокойно.
Потом рекрутер просит кандидата немного рассказать об опыте работы, текущих проектах и мотивации попасть в компанию. Все это типовые вопросы, по которым рекрутер составляет первое мнение о человеке. На этом этапе от кандидата нужна только уверенность и дружелюбие.
После встречи рекрутер делится впечатлениями о кандидате с техническими специалистами и начинается следующий этап.
Техническая часть
На этом этапе кандидату задают вопросы, которые позволяют оценить его хард-скиллы. Также сейчас все больше компаний предлагают решить задачу на алгоритмы, чтобы узнать, как разработчик мыслит и ведет себя во время работы, какие вопросы задает и способен ли он принимать решения самостоятельно, без помощи поисковиков.
Здесь работодателю важно увидеть, насколько человек погружен в свое дело. Для этого кандидату стоит заранее отрепетировать свою речь о том, какие инструменты он использовал на прошлом месте работы и какими кейсами может похвастаться. Интервьюеру интересно, как глубоко потенциальный сотрудник погружается в исследование технологий, с которыми работает.
Архитектурная часть — для более высоких позиций
Если кандидат претендует на высокую должность в компании, то на этом этапе работодатель проверяет его навыки общения и управления задачами. Кроме того, интервьюер должен понять, умеет ли разработчик самостоятельно вести проект, разбирать задачи, есть ли у него широкие познания в базах данных SQL и NoSQL.
Архитектурная секция — она еще называется дизайн система — нужна для проверки того, как разработчик умеет проектировать какие-либо системы, вроде новостной ленты в социальных сетях или сервиса такси.
Вот примерный список хардовых знаний, которые может проверить работодатель на этом этапе:
- Балансировка нагрузки
- Паттерны микросервисной архитектуры
- Работа с очередями сообщений
- Шардирование и реплицирование
- Идемпотентность
- Прогноз нагрузки на сервисы и избавление от «узких» мест: узлов в архитектуре систем, на которые падает сильно больше нагрузки, например, баз данных.
Так выглядит архитектурная часть собеседования:
Алгоритмическая часть
На алгоритмической секции проверяются алгоритмы и структуры данных. Тут все проще: как правило, разработчику нужно решить одну или две задачки либо на бумаге, либо онлайн без использования редактора кода. Эта часть собеседования обязательна в компаниях типа FAANG или «Яндекс». Также с недавних пор алгоритмическая секция стала обязательной частью в «Авито» и «Озоне».
Встреча с нанимающим менеджером
Это финальный этап собеседования, на котором нанимающий менеджер расспрашивает кандидата о его бэкграунде, задачах, которые тот решал, а также о том, как он это делал. Поэтому здесь важно показать желание исследовать новое, обучаться и умение сначала думать, а потом делать.
Далее менеджер принимает решение по кандидату. Если все хорошо, ему делают оффер.
Читайте также:
Как джуну найти работу и где лучше начинать карьеру в IT: советы от Хекслета
Какие хард- и софт-скиллы проверяют работодатели
Хард-скиллы
К хард-скиллам обычно относят технические навыки разработчика. Вот список самых часто поднимаемых тем на собеседовании:
- Оценка алгоритмической сложности
- Знание алгоритмов базовой сортировки
- Структуры данных
- Различия между авторизацией и аутентификацией
- REST vs SOAP
- Различия между 301 и 302 статусами http-запросов
- Различия между http 2.0 и http 1.1
- Различие между PUT и PATCH запросами
- Многопоточность, многопроцессорность
- Мультизадачность
- Асинхронное программирование
- Event loop
- Что такое B-tree
- CAP-теорема
- Требования ACID
- Четыре уровня изоляции транзакций
- Отличие HAVING от WHERE в SQL-запросах
- Какие бывают типы NoSQL баз данных
- Базовые паттерны микросервисной архитектуры
- Плюсы и минусы монолита и микросервисов
- Отличия распределенного монолита от микросервисов
- Семь уровней модели OSI, на каких из них происходит балансировка нагрузки
- Что бывает, когда вводишь google.com в браузере
- Глубокое понимание базовых принципов своего основного языка программирования.
Такое многообразие вопросов сперва может напугать, но, опять же, страшного в них ничего нет. Технические вопросы нужны не для того, чтобы самоутвердиться за счет кандидата или унизить его. Их задают, чтобы проверить, горят ли глаза у разработчика при ответе, было ли у него желание глубоко разбираться в этих темах при подготовке, в каких направлениях он хочет расширять свои знания и хочет ли вообще.
Также при оценке хард-скиллов смотрят на приобретенный опыт, который разработчик получил на своих ошибках: от провалившегося релиза до упавшего продакшена. Но и здесь ничего страшного нет. Вся история успеха человека — это история его ошибок. Важно уметь извлекать из них уроки и показать это умение работодателю.
Софт-скиллы
Как правило, интервьюеры проверяют желание и умение достигать цели, работать в режиме жестких сроков. Также им важно понять, умеет ли кандидат брать на себя ответственность и понимает ли он, что это вообще такое.
Кстати, попробуйте ради интереса провести эксперимент: объясните кому-нибудь вслух, что вообще значит слово «ответственность» без использования Google и однокоренных слов. Результат покажет потенциальному работодателю, как вы позиционируете себя с профессиональной точки зрения, важно ли вам просто работать или достигать результатов, все равно ли вам на свои обещания или нет.
Если интервью содержит алгоритмическую часть, то обычно это проверка, как кандидат мыслит, коммуницирует и рассуждает. Интервьюер смотрит, как разработчик решает задачи: пользуется ли первым попавшимся решением со Stack Overflow, лишь бы поскорее сделать, или погружается в проблему и пишет свое решение. Также работодателю важно понять, сопровождает ли разработчик свою задачу после релиза или бросает ее, как поступил бы простой исполнитель.
Amazon сформулировал 14 принципов лидерства, которые рекрутеры проверяют у кандидатов на любом собеседовании. Среди них: умение учиться и быть любопытным, погружаться в детали и думать о результате. Прокачивайте в себе качества по пунктам из этого списка, и вы будете ценным специалистом.
Как подготовиться к собеседованию
Собрать резюме
Рекрутеры из Google написали лучшую статью-методичку о том, как разработчику составить резюме. Основная мысль — кандидат должен качественно оценивать свой вклад на предыдущих местах работы или учебы. Например, вы сделали Х и это изменило Y до Z. Если вы просто пишете, что реализовывали какую-то фичу, работодателю непонятно, какой результат это дало, сколько времени заняло и как это вообще оценивать. Например:

Прокачать хард- и софт-скиллы
Пройдитесь по техническим вопросам и досконально изучите их. Подумайте, как будете отвечать, если вдруг попадется сложная тема. Честно признавайтесь, если чего-то не знаете, но поразмышляйте, как та или иная технология должна работать. А еще иногда можно пропустить вопрос, но попросить время, чтобы записать его и изучить на досуге.
Чтобы подготовиться к алгоритмической части собеседования, советую много практиковаться. Есть отличная книга-самоучитель «Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих» Адитьи Бхаргавы, которая научит решать задачи с помощью алгоритмов. А применить знания на практике можно на LeetCode.
Читайте также:
Как разработчику улучшить свое тестовое задание
Пройти другие собеседования
Самый лучший учитель — это опыт. Ходите на собеседования в разные компании, даже в те, которые вам менее всего интересны. С каждым разом вы будете чувствовать себя гораздо увереннее.
Круто, если первое же собеседование будет успешным, и вы получите оффер. Но ни в коем случае не расстраивайтесь, если вам откажут. Попросите у компании обратную связь и проведите работу над ошибками.
После трех-пяти провальных собеседований у вас будет:
- отточенный рассказ о себе
- проделанная работа над ошибками по ответам на часто задаваемые вопросы
- уверенность в себе.
Несколько советов, как успешно пройти собеседование
- На подготовку к собеседованию просите у рекрутера столько времени, сколько вам нужно
- Составьте собственный план подготовки к интервью и старайтесь его придерживаться
- На собеседовании ведите себя максимально расслабленно, а если все же стрессуете — боритесь с этим состоянием. Например, вспомните, какие обряды помогали вам успокоить нервы еще во времена учебы в университете
- Здорово, если на собеседовании вы спросите работодателя, какими навыками должен обладать кандидат, которого ищет компания — это покажет вашу заинтересованность
- Также неплохо узнать, какие интересные проекты реализовывала команда в последнее время и зачем компания расширяется
- Не стесняйтесь просить обратную связь у рекрутеров. Спрашивайте, какие знания стоит подтянуть и чему уделить особое внимание
- Время от времени проходите разные собеседования не ради смены работы, а чтобы узнать, где у вас есть пробелы и какие знания нужно подтянуть
- Помогайте готовиться к собеседованиям своим знакомым. Обучая кого-то, вы сами учитесь.
Собеседование — это обычная часть профессиональной жизни разработчика, и ее не стоит бояться. Секрет успешного прохождения интервью прост: нужно всего лишь расслабиться, внимательно слушать интервьюера, не перебивать его и дружелюбно вести беседу. Желаю успехов на собеседованиях!
Получите работу в престижной IT-компании
На Хекслете есть бесплатный курс по трудоустройству. Пройдите его, чтобы узнать, как составить резюме, которое заинтересует работодателей, чем заинтересовать интервьюера на собеседовании и где находить интересные предложения с помощью сообщества.
На собеседовании программисту важно показать себя с лучшей стороны. Это не значит, что нужно хвалиться заслугами — достаточно грамотно и корректно отвечать на вопросы, держаться уверенно и объективно говорить о своём опыте.
Эффектно себя подать, справиться с волнением и запомниться hr-специалисту вполне реально, если как следует подготовиться к собеседованию. В статье подробно рассказываем, каким образом это сделать. Не забудьте добавить этот материал в закладки — в нём мы собрали большое количество практических рекомендаций по подготовке к собеседованию для разработчика.
Общие вопросы, которые часто задают на собеседовании
Общие вопросы задают на собеседовании при приёме на работу всем соискателям, независимо от направления деятельности. Они касаются фактов биографии, карьерного пути, способностей, черт характера, жизненных планов и др.
Ошибка многих соискателей в том, что на общие вопросы они часто отвечают такими же общими и избитыми фразами. Если представить, что все эти ответы эйчар слышит за день не один раз, можно понять, почему кандидаты не запоминаются.
Мы же предлагаем подумать, с какой целью задаются такие вопросы, и подготовить ответы, которые выделят вас из толпы претендентов. Ниже приводим популярные вопросы, объясняем, для чего их задают и как на них отвечать.
«Что вы знаете о компании, в которую пришли устраиваться?»
Для чего задают. Этот вопрос помогает hr-специалисту понять, насколько для вас важно это собеседование. Он отделяет так называемых «туристов» — случайных людей, которые просто надеются на удачу, от реальных претендентов. Работодателю важно знать серьёзность ваших намерений. Если вы заранее узнали о компании, вероятно, вакансия вам действительно интересна.
Как отвечать. Подготовьтесь заранее: прочитайте информацию о деятельности компании на сайте. Если компания крупная и известная, поищите последние новости в СМИ. Запомните основные факты: год основания, имя директора, чем занимается компания и каких целей достигла.
Постарайтесь при ответе на вопрос показать, что ваш опыт поможет компании развиваться: расскажите, какие задачи вы сможете решить как программист. Вы продемонстрируете искреннюю заинтересованность, если расскажите об основных идеях и ценностях компании, которые близки и вам, или отметите впечатлившие вас проекты.
«Где вы работали раньше?»
Для чего задают. Работодатель оценивает опыт разработчика на собеседовании. Ему важно понять ваш уровень и решить, насколько он соответствует требованиям: одно дело, если вы работали в небольшом стартапе или фрилансили, и совершенно другое — если у вас есть опыт в крупной компании.
Как отвечать. Честно. Не принижайте свой опыт, если он действительно был успешным, и не говорите о громких победах, если трудились в скромной и никому не известной фирме.
Никогда не говорите о бывших работодателях в негативном ключе — это смотрится как неуместная попытка надавить на жалость и не украшает вас как соискателя. Отвечайте объективно: что за компания, чем занимается, сколько лет работали и др.
Если работ было много — не углубляйтесь. Расскажите о парочке последних мест, и старайтесь давать краткую информацию.
«Почему вы уволились?»
Для чего задают. Вопрос поможет работодателю понять, насколько ваши ожидания совпадают с тем, что он готов вам предложить. Допустим, может выясниться, что вы уволились из-за ненормированного рабочего дня, а в компании, куда вы пришли на собеседование, график тоже плавающий. Вероятно, из-за таких несостыковок договориться будет сложнее.
Как отвечать. Говорите без эмоций, даже если вы ушли из-за громкого скандала или инициатива об увольнении исходила не от вас. Не говорите о негативном опыте, если есть возможность умолчать об этом. Оптимальный вариант — заранее решить, какую причину вы озвучите. Она должна выглядеть убедительно, но нейтрально по отношению к прошлому месту работы. Так, можно указать, что вы захотели развиваться дальше, но возможности для этого на прошлом месте не было.
«Какими своими достижениями вы особенно гордитесь и были ли провалы?»
Для чего задают. Работодателю важно оценить ваш уровень и опыт, а также понять, насколько объективно вы себя оцениваете.
Как отвечать. Разделите ответ на две части — в одной расскажите о достижениях, а во второй об ошибках. Важно, чтобы достижений было больше, а провалы не были масштабными.
Говорите о достижениях, которые перекликаются с профессиональными обязанностями. Допустим, стоит рассказать, что вы разработали удобный веб-сервис для корпоративных клиентов, которым пользуются и после вашего ухода. Но говорить о том, что вы бегали стометровку как представитель компании на городском спортивном мероприятии, не обязательно — это не имеет отношения к вакансии.
О провалах говорить сложнее, но важно понимать: ошибки случаются у всех. Если вы промолчите или скажете, что работали идеально — эйчар решит, что вы лукавите, и будет прав. Поэтому лучше заранее определите, о каком факапе вы готовы говорить. Пусть это будет незначительная ошибка без серьёзных последствий. Обязательно скажите, как разрешилась ситуация и что полезного она вам дала.
«Как вы обновляете профессиональные знания и в какой области хотите развиваться дальше?»
Для чего задают. Программирование — достаточно узкое направление, поэтому знания о вашем базовом образовании и дополнительных курсах помогут работодателю понять ваш уровень подготовки.
Как отвечать. Если ваше базовое образование связано с программированием — обязательно расскажите о нём. Также важно сказать обо всех дополнительных курсах или вебинарах, которые вы изучили за последний год. Можно упомянуть о прочитанных книгах по программированию, но углубляться в них слишком сильно не стоит — книги дают больше теоретические знания, а не практические. Подкрепите ответ примером из практики: расскажите, как пройденный курс помог вам в работе. Допустим, вы освоили новый язык программирования, и это помогло вам решать более сложные задачи.
«Кем вы видите себя через пять лет?»
Для чего задают. С помощью этого вопроса можно проверить уровень вашей самооценки и насколько она адекватна. Представьте, если соискатель ответит, что планирует через пять лет стать президентом страны — амбициозно, но нереалистично, если он обычный программист. Вряд ли человек с адекватной самооценкой скажет подобное всерьёз.
Задавая этот вопрос, работодатель хочет понять ваши профессиональные цели и насколько они отвечают тем возможностям, что может предложить компания.
Как отвечать. Выясните цели компании до собеседования — посмотрите на сайте или почитайте в СМИ, если компания крупная. На этой основе постарайтесь сформулировать свои цели.
Можно рассказать об отдельном аспекте вашей профессии, который вы хотели бы улучшить: научиться разработке мобильных приложений или освоить создание сайтов на новой для вас платформе.
Ещё вариант — дать нейтральный ответ. Вы можете сказать, что конкретного плана у вас нет, но вы точно хотите много учиться, расти в профессии и следить за изменениями в программировании.
Освойте разработку мобильных приложений. Собрали для вас подборку полезных курсов по созданию мобильных приложений
«Чего вы ожидаете от нового места работы?»
Для чего задают. Работодатель хочет понять, насколько ваши ожидания совпадают с политикой компании, и не потеряете ли вы интерес к этой работе через 2-3 месяца.
Как отвечать. Объясните hr-специалисту, почему вам интересна эта работа. Не зацикливайтесь на теме зарплатных ожиданий, лучше расскажите про профессиональные интересы и мотивацию. Так, можно сказать, что вам как программисту важно расти, и вы видите потенциал для себя именно в этой компании.
Ежедневные советы от диджитал-наставника Checkroi прямо в твоем телеграме!
Подписывайся на канал
Подписаться
Профессиональные вопросы, которые задают на собеседовании программисту
Профессиональные вопросы программисту на собеседовании — это то, благодаря чему можно оценить ваш уровень и понять, насколько успешно вы справитесь с работой. Это конкретные вопросы о ваших навыках и умениях.
Веб-разработка, если говорить просто — создание сайтов. Это один из основных навыков, которым владеют востребованные программисты. Чтобы освоить это направление, выбирайте подходящий курс из подборки Checkroi
«Какими практическими навыками вы владеете?»
Для чего задают. У работодателя для программиста есть конкретные ежедневные задачи, и ему важно, чтобы специалист их вовремя и грамотно закрывал. Этим и похожими уточняющими вопросами он проверяет ваши профессиональные компетенции и то, насколько они соответствуют его ожиданиям.
Как отвечать. Заранее изучите требования в вакансии и постарайтесь дать ответ в соответствии с ними. Не обязательно говорить о базовых навыках, которыми владеют все программисты. Расскажите об изученных вами узких направлениях и инструментах.
На сайте hh.ru даже в коротком описании вакансии видно, какие требования работодатель предъявляет к соискателям. Если решитесь откликаться на вакансию, подготовьте ответы по каждому пункту — так ваши шансы возрастут
«Какие технологии используете в работе?»
Для чего задают. Так работодатель поймёт, какие способы создания программ вы используете и как с помощью этих технологий вы сможете решать его задачи.
Как отвечать. Обязательно пару слов скажите о базовых технологиях, которые используете чаще всего. Можно упомянуть и более узкие варианты, если они перекликаются с требованиями к кандидату. Если чем-то ещё не владеете, а работодатель спрашивает об этом — ответьте нейтрально. Допустим, работодателю важно, чтобы вы владели языком Python, но вы пока его не освоили. Расскажите, что в теории знаете, что это такое и готовы освоить этот язык максимально быстро, чтобы из-за этого не возникало простоев в работе.
Пройдите обучение Python на одном из курсов подборки Checkroi. В ней мы собрали платные и бесплатные варианты обучения для начинающих и опытных программистов
«Какими программами владеете?»
Для чего задают. Работодатель задаст этот вопрос и похожие вопросы, чтобы понять ваши компетенции и оценить разносторонность ваших профессиональных интересов. Чем больше программ, фреймворков, языков и других инструментов в вашем арсенале, тем ценнее вы как специалист и тем больше шансов, что выбор сделают в вашу пользу.
Как отвечать. Вспомните все программы и фреймворки, а не только те, что используете чаще всего. Расскажите с примерами из практики, какие задачи с их помощью решали. Постарайтесь связать ваш опыт с тем, что важно работодателю, а для этого заранее изучите требования в тексте вакансии.
Гугл-вопросы: что это и как на них отвечать
Гугл-вопросы так называются, потому что изначально их задавали соискателям на собеседовании в одноимённой американской компании. Сейчас же эти вопросы стали трендовыми и их используют в различных фирмах, независимо от направления бизнеса.
Цель таких вопросов на собеседовании для разработчика — оценить ход ваших мыслей и умение рассуждать логически. От вас не ждут правильного ответа — в большинстве случаев его и не может быть, но понять вашу реакцию на нестандартные задачи они помогают. Также с их помощью можно проверить ваши знания в смежных с программированием областях — математике или физике.
Рекомендуем заранее посмотреть эти вопросы, но прежде чем перейти к правильным ответам, попробуйте ответить самостоятельно, а потом проверить себя. Так вы сможете понять, насколько ваши ответы логически грамотно выстроены.
Практические задания, которые могут дать программисту на собеседовании
Работа программиста во многом практическая. Чтобы оценить реальный уровень знаний соискателя, эйчары дают практическое задание без использования редактора кода, а с помощью только ручки и листа.
Если вы как такового опыта собеседований у вас нет, на подобных задачах вы можете растеряться. Чтобы этого не произошло, потренируйтесь на автоматизированных платформах-задачниках. Так вы сможете прокачать навыки в программировании.
Вот варианты надёжных платформ с задачами:
- CheckiO — украинский сервис, специализирующийся на Python и JavaScript. Это сборник игровых задач по кодированию для начинающих и опытных программистов. Вы решаете задачи в формате игры и таким образом прокачиваете навыки в создании кода;
- Leetcode — платформа на разных языках, в том числе и на русском. Помогает программисту подготовиться к собеседованию технически: вы решаете задачи, получаете моментальный фидбэк и другие варианты решений. На сервисе можно обсуждать ответы с другими участниками;
- Codewars — площадка с задачами разного уровня сложности. В основе — геймификация в стиле карате: практика называется «Ката», а за успешное прохождение заданий повышается уровень — «Кю».Можно устраивать спарринги: участники по очереди исправляют ошибки в коде;
- Codebattle — название сервиса говорит само за себя: вам и вашему сопернику даётся задача, которую вы решаете. Вы самостоятельно выбираете язык, можете видеть код соперника в режиме реального времени и можете общаться с ним и со зрителями в специальном чате. Побеждает тот, кто первый правильно решил задачу;
- Hackerrank — американский проект, в котором заданиям делятся по определённым скиллам: алгоритмы, структуры данных и математику. Задачи можно решать на любом из популярных языков. На платформе регулярно проходят соревнования и челленджи.
Практических задач, которые могут просить решить hr-специалисты на собеседовании, много. Вот ещё список из 123 практических задач для собеседования программистов, которые «любят» задавать. Практикуйтесь в свободное время и читайте, как их можно решить.
Как чувствовать себя уверенно на собеседовании
Вы можете быть грамотным программистом и знать все тонкости профессии, но если на собеседовании вы покажете свою неуверенность — работодатель ваших знаний и навыков не разглядит. Из-за неуверенности соискатели не могут ответить на вопросы правильно, путаются и бесконечно краснеют. Поэтому важно подготовить себя с психологической точки зрения — настроится на интервью.
Вот как можно это сделать:
- выровняйте дыхание перед тем, как войдёте в кабинет — можно сосчитать до 10 и в это время сделать несколько глубоких вдохов и выдохов. Мозг получит дополнительную порцию кислорода, и вы сможете посмотреть на ситуацию рационально — ничего сверхъестественного не происходит, это обычное собеседование;
- прорепетируйте дома — сядьте перед зеркалом и отвечайте на вопросы так, будто отражение в нём — ваш собеседник. Меняйте позы, чтобы найти удобную, и пробуйте говорить с разной интонацией;
- подберите соответствующую дресс-коду, но удобную одежду — она не стесняет движений, и вы сможете полностью переключиться на беседу и забыть о внешних мелочах. Разумеется, не нужно приходить в спортивном костюме, но если в пиджаке вам неудобно — наденьте элегантный свитер.
Наконец, важно помнить: собеседование — мероприятие хоть и волнительное, но вполне житейское. Вы никому ничего не должны, и если не получится здесь — получится в другом месте, а любое неудачное собеседование станет вашим ценным опытом.
Типичные ошибки на собеседовании и как их избежать
Есть ряд оплошностей, которые могут испортить впечатление не хуже, чем неуверенность в себе. Можно одной небольшой ошибкой перечеркнуть всё положительное, что вы успели рассказать о себе. Вас запомнят, но работать не позовут — неприятное послевкусие исправить не получится. Поэтому лучше эти ошибки узнать и не допускать их.
Вот основные ошибки:
- опоздание — лучше прийти за 5–10 минут до начала и подождать в коридоре, чем влететь в офис с опозданием и извиняться. Конечно, ситуации бывают разные, допустим, вы можете попасть в пробку. Но даже в таких случаях найдите возможность предупредить: позвоните или напишите контактному лицу. А чтобы такого не происходило, выезжайте ощутимо заранее: если приедете рано, можно попить кофе в ближайшем кафе;
- ответы невпопад — если соискатель перебивает или отвечает не то, что от него хотели, hr-специалист решит, что перед ним невнимательный человек. Вряд ли с таким захотят работать. Учитесь слушать и репетируйте с близкими ваше собеседование. Если на собеседовании вы случайно потеряли нить разговора или не поняли вопрос — переспросите. Это лучше, чем бессмысленный ответ;
- переход на личности — необходимо соблюдать субординацию и понимать, что с эйчаром вас связывают исключительно деловые вопросы. Неуместными будут как милые комплименты по поводу внешности, так и язвительные замечания, если что-то пошло не так;
- подробный рассказ о прошлом — если вас специально не спрашивали, рассказывать всю свою биографию не нужно. Наше прошлое кроме нас мало кому интересно, и hr-специалист, как правило, ограничен во времени. Оставьте воспоминания друзьям и близким, а на собеседовании говорите о профессиональном опыте за последние 1-3 года.
Подведём итог
К любому собеседованию нужно готовиться независимо от того, какая у вас профессия. Но программистам необходимо не только уверенно отвечать на вопросы, но ещё уметь решать практические задачи.
Составьте список вопросов и подготовьте ответы на них, потренируйтесь перед зеркалом и поучитесь писать коды на бумаге, подумайте, в чём пойти и постарайтесь не опоздать — при такой подготовке велика вероятность, что ваше собеседование пройдёт успешно.
Подборка нескольких наиболее распространённых ошибок, совершаемых кандидатами при прохождении технического интервью.
Как не провалить техническое собеседование
Недавно я писал о том, чего лучше избежать при прохождении собеседования в Netflix на должность системного инженера. Здесь следует отметить два довольно любопытных факта: во-первых, к моему удивлению, пост оказался довольно востребованным; а, во-вторых, что удивило меня ещё сильнее, после этого несколько людей связывались со мной, чтобы проконсультироваться, на что ещё требуется обратить внимание при прохождении технического интервью. Как правило, формулировка проблема была примерно следующей:
«Я так и не могу успешно пройти техническое собеседование, даже после НЕСКОЛЬКИХ месяцев подготовки.»
Некоторые из тех, кто обратился ко мне за советом, уже успели суммарно решить где-то 200-300 задач с собеседований, поэтому банальные советы из разряда «больше практикуйтесь» им ничем не помогут.
Текущий пост сфокусирован на том, как НЕ следует вести себя во время прохождения собеседования. Если же вы ищите информацию о том, как подготовиться к техническому собеседованию, то вам следует почитать статьи «Coderust 2.0: Подготавливаемся к тех. интервью быстрее с помощью интерактивных визуализаций» и «Подготовка к собеседованию по системному дизайну».
Как со стороны собеседуемого, так и со стороны собеседующего я отметил для себя парочку, по большей части, нетехнических аспектов интервью, грамотное использование которых увеличивает ваши шансы успешно пройти его. Большинство из последующих утверждений основано на моих личных суждениях и ранее совершённых ошибках (да, у меня тоже был такой период в поиске работы под названием «Мы вам перезвоним»).
Основываясь на собственном опыте, я выделил 5 самых распространённых ошибок, которые совершают кандидаты при прохождении интервью.
1. Вы тратите слишком много времени на описание своих прошлых и текущих проектов
Итак, начинается собеседование, и в какой-то момент вам задают вопрос: «Над чем вы работаете в вашей текущей компании?», на что вы тратите следующие 10 минут, описывая ваш проект во всех интимных подробностях.
Как вам кажется, это ваш шанс, чтобы рассказать о том, какую выдающуюся работу вы выполнили за эти 2 года работы над проектом. Вы начинаете описывать настолько мелкие детали, что вас либо перестают понимать, либо вы рассчитываете таким образом протянуть время с целью получить задачу попроще (не выйдет).
В итоге, вместо того, чтобы впечатлить собеседника, вы просто тратите лишние 10 минут, тем самым уменьшая себе время на решение задачи. Интервьюер также и ваш потенциальный коллега, и ему может быть неудобно прерывать вас посередине речи.
Вас спрашивают о текущем проекте для «разогрева». Подразумевается, что вы вкратце опишете суть проекта, чтобы потом собеседник мог плавно перейти к более конкретным вопросам в данной предметной области.
Запомните два момента:
- Как бы вы ни хитрили, задачу на собеседовании вам всё равно придётся решать, но теперь у вас на 10 минут меньше времени на её решение.
- Почти не считается. Вас не наймут, если вы не успели решить задание, но вам «осталось совсем чуть-чуть». Такого попросту не бывает.
Куда бы вы ни шли на интервью, всегда будьте готовы сказать пару слов на следующие вопросы:
- Над каким проектом вы работаете в данный момент?
- Какой аспект вашего текущего проекта вызвал у вас наибольшие затруднения?
- Расскажите о самом сложном баге, с которым вам приходилось иметь дело, за последние полгода.
Итог: Рассчитывайте своё время. Вы не приняты по умолчанию, и у вас есть только 45 минут, чтобы доказать обратное. Если для успешного устройства на работу вы обязаны решить задачу у доски, то вы должны оставить себе как можно больше времени для решения этой задачи.
2. Вы неправильно поняли формулировку задачи
Пример из жизни. Несколько лет назад, проходя собеседование, я выступал с технической презентацией. И так получилось, что каждый раз во время выступления мне давали задачу «Поменять порядок элементов в связном списке на обратный.»
Не знаю, почему, но поначалу я вбил себе в голову, что не знаю, как решить поставленную задачу.
Когда уже четвёртый раз подряд собеседующий заикнулся об обратном порядке элементов в связном списке, я сразу же вышел к доске и за пару минут написал решение. Собеседник улыбнулся, и сказал, что он просил напечатать элементы связного списка в обратном порядке, а не менять сам список. Упс.
Я попытался обратить всё в шутку и сказал, что сейчас напечатаю полученный список, и затем ещё раз поменяю порядок на обратный. Я объяснил ему, почему я так бурно отреагировал на эту задачу, и мы оба рассмеялись. Если я не ошибаюсь, в итоге я всё-таки прошёл на следующий этап отбора.
И хотя для большинства из вас подобного рода ошибки не будут фатальными (так как, надеюсь, вы будете слушать внимательнее, чем я), я до сих пор встречаю кандидатов, которые сразу начинают решать, не до конца разобравшись с условиями. Лучше потратьте лишние 10-15 минут, чтобы проанализировать все аспекты задачи, чтобы потом вам не пришлось переписывать ваше решение по новой.
3. Вы сразу же начинаете писать решение задачи, хотя ещё сами не до конца поняли, как оно выглядит
Познавательный факт: почти все задачи на собеседовании, где от вас требуется написать решение на доске, занимают не больше 20 строчек кода.
А теперь попробуйте выйти к доске и написать 20 строчек кода. Это займёт у вас минуты 2-3, не больше. Следовательно, даже если вы и потратите 30 минут на решение задачи, у вас ещё останется пара минут для написания готового решения.
Но при решении задачи на собеседовании вы начинаете сильно волноваться. Вы лихорадочно начинаете писать решение как можно быстрее. Не стоит. Усвойте для себя, что «накалякать» ответ вы всегда успеете.
Лучше основную часть времени тщательно разберите всю задачу, и потом приступайте к её написанию. Попробуйте протестировать ваш алгоритм. Это также даст возможность собеседующему поправить вас в случае, если вы начинаете делать что-то не так.
4. Сначала вы находите наиболее очевидное решение, а затем начинаете оптимизировать алгоритм
Суровая правда. На собеседованиях от вас ожидают вполне конкретных знаний, поэтому при решении задач подразумевается, что вы уже неплохо знакомы с этой темой и знаете оптимизированный алгоритм. Все вышеперечисленные пункты указывали на то, что не в ваших же интересах тратить время. Поэтому как следует подумайте над решением и над тем, как его можно было бы оптимизировать. Если требуется решение с линейной временной сложностью и требуемым объёмом памяти О(1), то любое решение ниже по производительности приведёт к тому, что вас не возьмут.
5. Вы не проверяете своё решение
Как только вы нашли ответ, попробуйте протестировать его на паре примеров. Это поможет вам самому найти недостатки и недочёты в решении, чтобы собеседующий не указывал вам на них сам. Каждый раз, когда вас вынуждены поправлять, ваши шансы уменьшаются. Также это позволит вам найти и рассмотреть особые случаи в решении вашей задачи. К тому же тот факт, что вы не проверяете своё решение, является для нанимателя тревожным звоночком, поэтому проверьте свой алгоритм, даже если вы на 100% уверены, что всё идеально.
Бонус: Спрашивать, как вы прошли интервью
Возможно, это и не будет иметь негативного влияния на решение о том, нанимать вас или нет, но так вы поставите интервьюера в неловкую ситуацию.
Спасибо за внимание и удачи вам на собеседованиях.
Данная статья представляет собой перевод поста Фахима Уль Хоку, одного из учредителей платформы Educative. Для тех, кто заинтересован, предоставляем ссылку на оригинал.
Другие статьи по теме
Как не провалить дистанционное техническое собеседование
Собеседование на должность программиста: вопросы по алгоритмам