8 известных структур данных, о которых спросят на собеседовании


Оглавление (нажмите, чтобы открыть):

Каких вопросов ждать на собеседовании на позицию Andro >

Всем привет) Разработкой мобильных приложений под Android я занимаюсь 1,5 года. Успел поучаствовать в разработке 2 приложений с общим количеством скачиваний > 100 000. Я сам из провинции, хочу переехать в Санкт-Петербург. Изучил запросы в вакансиях на известных сайтах, и вот это вот все вроде бы хорошо знаю:
* Опыт программирования на Kotlin;
* Опыт работы с библиотеками Dagger 2, Rx, Retrofit 2;
* Понимание паттернов MVP, MVVM, MVI;
* Опыт многопоточного программирования;
* Опыт разработки клиент-серверного приложения;
* Опыт работы с Git, знание git-flow;
* Знание классических алгоритмов и структур данных.

Когда собеседовался на джуна меня поспрашивали про java core, задачки на алгоритмы, а чего ожидать сейчас? Какие вопросы, задачи могут задать на собеседовании? Понятное дело что если в компанию нужен специалист на конкретный проект, то будут специфические вопросы, связанные именно с этим проектом, но все же.

109 популярных вопросов на собеседовании в сфере Data science

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

Портал Spring Board подготовил перечень вопросов, к которым должен быть готов соискатель на должность data science специалиста. Этот список поможет понять, чего следует ждать. Возможные вопросы интервью поделены на шесть тематических категорий: статистику, программирование, моделирование, прошлый опыт, культуру и решение проблем. Представляем вашему внимание адаптированную версию этого материала.

Статистика

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

Вот несколько примеров элементарных вопросов по статистике:

  • Что такое центральная предельная теорема ? В чем заключается ее практический смысл? Ответ
  • Что такое сэмплирование? Сколько методов выборки вы знаете?
  • В чем разница между ошибками типа I и типа II?
  • Что такое линейная регрессия ? Что означают P-значение , коэффициент, R-квадрат ? Каково значение каждого из этих компонентов? Ответ , ответ
  • Какие допущения применяются к линейной регрессии?

Существует четыре основных допущения: 1. Есть линейная зависимость между зависимой переменной и регрессорами, то есть модель, которую вы создаете, соответствует имеющимся данным . 2. Ошибки или остатки данных обычно распределяются и независимы друг от друга, 3. Существует минимальная мультиколлинеарность между объясняющими переменными, 4. Гомоскедастичность. (Означает, что дисперсия вокруг линии регрессии одинакова для всех значений предикторной переменной).

  • Что такое статистическое взаимодействие? Ответ
  • Что такое смещение выбора?
  • Какие примеры набора данных с негауссовым распределением вы можете привести?
  • Что такое биномиальная формула вероятности?

Программирование

Общие вопросы программирова н ия

  • С какими языками программирования вам удобнее всего работать?
  • Какие плюсы и минусы есть у вашего любимого статистического программного обеспечения?
  • Расскажите об алгоритме, который вы создали.
  • Опишите Data science проект, над которым вы работали продолжительное время. Что вы узнали из этого опыта?
  • Работаете ли вы над проектами с открытым исходным кодом?
  • Как бы вы очистили dataset в (язык программирования)?
  • Расскажите о коде, который вы использовали во время своего последнего проекта?

Вопросы по Big Data

  • Назовите два основных компонента структуры Hadoop.
  • Объясните наиболее простым способом при нцип работы MapReduce. Ответ
  • Как бы вы отсортировали большой массив чисел?
  • Перед вами — большой набор данных. Как вы будете работать с выбросами? Как поступите с недостающими значениями? Что скажете о преобразованиях?

Вопросы по Python

  • Какие модули / библиотеки вы используете? Что вам нравится/ не нравится в них?
  • Каковы поддерживаемые типы данных есть в Python?
  • В чем разница между кортежем и списком в Python?

Чтобы разобраться с дополнительными вопросами по Python, стоит ознакомиться с этим полезным ресурсом, созданным Toptal .

Вопросы по R

  • Каковы различные типы алгоритмов сортировки, доступные на языке R? Существуют алгоритмысортировки вставкой, пузырьком и выбором.
  • Каковы различные объекты данных в R?
  • Какие пакеты вы используете? Что вам нравится/не нравится в них?
  • Как получить доступ к элементу во втором столбце и четвертой строке матрицы с именем M?
  • Какая команда используется для хранения объектов R в файле?
  • Каков наилучший способ совместного использования Handoop и R для анализа?
  • Как вы разделите непрерывную переменную на разные группы/ранги в R?
  • Напишите функцию на R-языке, чтобы заменить отсутствующее значение в векторе средним значением этого вектора.

Вопросы по SQL

Н апример, соискателя могут попросить отфильтровать/сжать/систематизировать данные из таблицы, а потом сделать выводы. При наличии неуверенности в данном вопросе есть смысл воспользоваться информацией ресурса Mode Analytics с отличным введением в SQL.

  • Какова цель групповых функций в SQL? Приведите примеры групповых функций.
  • Групповые функции необходимы для получения суммарной статистики данных. COUNT, MAX, MIN, AVG, SUM и DISTINCT — это все групповые функции.
  • Объясните разницу между внутренним джоином, джоином слева / справа и UNION. Ответ
  • Что делает UNION? В чем заключается разница между UNION и UNION ALL?
  • В чем заключается разница между SQL, MySQL и SQL Server?
  • Если таблица содержит повторяющиеся строки, возвращает ли результат запроса двойные значения по умолчанию? Как вы можете удалить повторяющиеся строки из результата запроса?

Для дополнительной информации по SQL ознакомьтесь с этим ресурсом, созданным Toptal.

Моделирование

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

  • Расскажите о том, как вы разработали модель для прошлого работодателя или клиента.
  • Каковы ваши любимые методы визуализации данных?
  • Как бы вы могли наиболее эффективно представить данные с пятью измерениями?
  • Чем kNN отличается от кластеризации k-средних?

kNN, или k-ближайших соседей — это алгоритм классификации, где k является целым числом, которое описывает количество соседних точек данных, которые влияют на представленную классификацию. K-средство — это алгоритм кластеризации, где k — это целое число, описывающее количество кластеров, возникающих из представленных данных. Все они выполняют разные задачи.

  • Как бы выглядела ваша модель логистической регрессии?
  • Вы использовали модель временного ряда? Вы понимаете кросс-корреляцию с временными задержками?
  • Объясните правило 80/20 и расскажите мне о его важности при проверке модели.
  • Объясните, что такое точность и отзыв. Как они относятся к ROC-кривой?

Отзыв описывает, какой процент истинных положительных определен описан в качестве положительных моделью . Точность описывает, какой процент положительных прогнозов был правильным. Кривая ROC показывает взаимосвязь между отзывом модели и её спецификой. Отзыв, точность и ROC являются мерами, определяющими эффективность представленной классификационной модели.

  • Объясните разницу между методами регуляризации L1 и L2.
  • Что такое анализ основных причин?
  • Что такое коллизия хеш-таблиц?
  • Что такое точный тест?
  • На ваш взгляд, что более важно при разработке модели машинного обучения: производительность модели или её точность? Один из подходов к данному вопросу
  • Как вы будете обрабатывать несбалансированные данные, использованные для генерирования прогнозов? ( отрицательных классов больше, чем положительных ).
  • Как бы вы провели валидацию модели, созданной для количественного анализа при помощи множественной регрессии? Есть две модели сопоставимой точности и вычислительной производительности. Какую лучше выбрать для прода почему?
  • Как вы действуете с разреженностью?
  • Лучше потратить 5 дней на разработку на 90% точного решения или же 10 дней на 100% точность?
  • В каких ситуациях общая линейная модель неудачна?
  • Как вы думаете, что 50 маленьких деревьев принятия решений лучше одного большого или нет? Почему?
  • Изменяя алгоритм, как вы понимаете, что предпринимаемые действия лучше других?
  • Какие ошибки предпочтительней: первого или второго рода?

Прошлый опыт

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

Соискатель может услышать вопросы, касающиеся следующих тем:

  • Работа в команде
  • Руководство
  • Управление конфликтами
  • Решение проблем
  • Неудачи

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

Примеры таких вопросов:

  • Расскажите о том рабочем периоде, когда вы взяли инициативу в свои руки.
  • Расскажите об опыте, в рамках которого вы столкнулись с серьезной дилеммой.
  • Расскажите о том, когда вы разрешили конфликт.
  • Расскажите о своем провале и о выводах, сделанных впоследствии.
  • Расскажите о вашем прошлом опыте работы. Почему вы решили заниматься именно этим?
  • Расскажи о трудностях, которые вы преодолели, будучи задействованным в групповом проекте.
  • Сталкиваясь с утомительной, скучной задачей, как вы справляетесь с ней и мотивируете себя на ее завершение?
  • Что вы делали в прошлом, чтобы ваш клиент был удовлетворен результатами работы?
  • Какими своими достижениями на своей предыдущей работе вы гордитесь?
  • Каким образом вам удается поддерживать баланс между работой и личной жизнью?

Соответствие корпоративное культуре

В ходе интервью работодатель также хочет понять, насколько кандидат «соответствует» духу компании, почему он заинтересовался data science в целом, и предложенной вакансией — в частности. Следующие вопросы помогут кандидату не оказаться застигнутым врасплох, но самое главное при ответе на них — это честность. Правильного ответа не существует, однако лучший ответ — это тот, который сказан с уверенностью и улыбкой.

  • Какими data-специалистами вы больше всего восхищаетесь? Какими стартапами?
  • Как вы думаете, что характеризует хорошего data-специалиста?
  • Как вы заинтересовались data science?
  • Приведите несколько примеров «лучших практик» в data science.
  • Какую последнюю книгу о работе с данными вы прочитали? В каких мероприятиях по изучению данных вы в последний раз участвовали? Если вы давно ничего не читали ничего стоящего по data science, то у Springboard есть отличная подборка книг , которые заслуживают внимания!
  • Над каким проектом вы бы хотели поработать в нашей компании?
  • Какие уникальные навыки вы бы принесли команде?
  • Какой областью данных вы бы хотели заниматься при отсутствии ограничений?
  • Вы когда-нибудь задумывались о создании стартапа? Какая концепция/идея вас интересует?
  • О каких ваших хобби нет ни слова в резюме?
  • Каковы ваши прогнозы на следующие 20 лет?
  • Что вы делали сегодня/на этой неделе/на прошлой неделе?
  • Как бы вы поступили, если бы выиграли миллион долларов в лотерее?
  • Во что верите вы, в отличие от большинства людей?
  • Какие “пробивные” черты характера у вас есть?
  • Чем вы увлекаетесь?

Навыки решения проблем

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

  • Какие решения вы можете предложить для выявления плагиата?
  • Сколько «полезных» голосов получит отчет Yelp?
  • Как вы обнаруживаете, что индивидуальным аккаунтом пользуется несколько пользователей?
  • Вы собираетесь отправить миллион электронных писем. Как оптимизировать доставку? Как вы оптимизируете ответ?
  • У вас есть набор данных, содержащий 100 тысяч строк и 100 столбцов, причем один из этих столбцов является нашей зависимой переменной для решаемой проблемы. Как быстро определить, какие столбцы будут нужны для прогноза? Определите два метода и объясните их как пятилетнему ребенку.
  • Как вы обнаружите фиктивные отзывы или фиктивные аккаунты на Facebook?

Это возможность продемонстрировать свои знания алгоритмов машинного обучения; особенно, сентиментального анализа и алгоритмов анализа текста. Продемонстрируйте свои знания о “мошенническом” поведении: что его характеризует ?

  • Как бы вы выполняли кластеризацию на миллион уникальных ключевых слов, при том, что у вас есть 10 миллионов точек данных — каждая из двух ключевых слов, и метрика, оценивающая, насколько похожи два этих ключевых слова? Как бы вы создали эту таблицу из 10 миллионов таблиц данных на первом месте?
  • Как бы вы оптимизировали поисковик для более быстрой работы, получения более качественной информации и лучшего суммирования данных?

Идеальной методике по подготовке к data science собеседованию не существует, однако с помощью данного руководства почувствовать себя уверенно станет гораздо проще.

Собеседование по алгоритмам — как подготовиться к нему за одну неделю? [закрыт]

Примерно через неделю мне предстоит собеседование по алгоритмам.

У меня незаконченное математическое образование, что означает, что я знаю, что такое, например, логарифм или факториал, но при этом совершенно не имею академической подготовки по этой теме (толкового курса по программированию и по этой теме в частности в течение 3 лет, что я учился, не было). Мой суммарный опыт программирования — 4 года. Основные языки в настоящее время Objective-C и C.

Я пытаюсь продумать оптимальную стратегию для подготовки и поэтому интересуюсь: может ли кто-нибудь набросать что-то вроде обзора этой темы «Алгоритмы» (quick overview), ориентируясь на который можно было бы более или менее направленно успеть за неделю пройти самые-самые основные в этой теме вопросы?

Вот навскидку то, что мне известно в связи с этой темой (точнее о чём имею более или менее чёткое представление, список неисчерпывающий):

  • O-notation
  • Хорошо знаю примерно треть алгоритмов из этого репозитория: EKAlgorithms и даже кое-что добавил туда сам, например, алгоритмы Indexes of maximum and minimum elements simultaneously, Quickselect, Partial selection sort, алгоритм бинарного поиска.
  • Например, хорошо теперь знаком с geo-spatial структурами и алгоритмами вроде: KD-деревья и двумерные K-деревья в частности, Quad-деревья, алгоритмами Grid clustering и K-means.
  • Например, хорошо знаю, как устроены массивы и словари в C и Objective-C, включая circular buffer (который лежит в основе массивов NSMutableArray у Apple).
  • .

Одним словом, общее представление у меня точно есть, но всё-таки очень часто я сталкиваюсь с отсутствием академических знаний — например, только на днях узнал о таком понятии, как «амортизированная стоимость» или, например, недавно, понял, что не понимаю, почему при подсчёте алгоритмической сложности некоторых алгоритмов возникает именно десятичный алгоритм (то есть, откуда берётся именно 10 в основании).

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

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

P.S. Особо интересно было бы увидеть ответ @VladD.

Закрыт по причине того, что не по теме участниками Kromster says support Monica, aleksandr barakin, PashaPash, ЮрийСПб ♦ , Visman 1 окт ’15 в 17:41 .

Похоже, этот вопрос не соответствует тематике сайта. Те, кто голосовал за его закрытие, указывали следующую причину:

  • «Вопросы-опросники запрещены на Stack Overflow на русском. Для получения ответа, перефразируйте ваш вопрос так, чтобы на него можно было дать однозначно правильный ответ.» – Kromster says support Monica, aleksandr barakin, PashaPash, ЮрийСПб, Visman

Если вопрос можно переформулировать согласно правилам, изложенным в справке, отредактируйте его.

Заблокирован участником Nick Volynkin ♦ 24 янв ’16 в 11:03 .

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

Подробнее о заблокированных сообщениях здесь.

4 ответа 4

Приведу выжимку, которая мне кажется важной и подходит для креш-курса:

  1. Сложность алгоритмов, O-нотация, нужно уметь сходу оценивать O-сложность алгоритма хотя бы для простых случаев. Туда же Θ-нотация.
  2. Структуры данных: деревья, обходы их, trie, куча, разрежённые матрицы и всё такое. Про них любят спрашивать.
  3. Сортировки. Про них, скорее всего, не спросят, так как все знают и готовятся. Но всё же.
  4. Графы, различные их представления и работа с ними. Поиск в ширину и в глубину, алгоритм Дейкстры и A*.

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

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

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

  • систематизируйте имеющиеся знания, если есть видимые пробелы (например, та же «амортизированная сложность» в hashtable), заполните их. Вероятно, имеет смысл задать их отдельными вопросами здесь и на математике.
  • прогоните хорошую серию задач, чтобы чувствовать себя уверенно.
  • настройтесь на то, что не только работа нужна вам, но и вы — работе: адекватный работодатель возьмёт вас, если увидит, что вы интересуетесь темой и растёте над собой (даже если каких-то знаний на момент интервью нет), а неадекватный вам и не нужен.

Ну вы ж информируйте нас о том, как идёт подготовка, хорошо?

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

Расскажу в нескольких частях. Ничего интересного не обещаю. Особенно более опытным, чем я, участникам ХК.

I. Материалы и источники, которыми я пользовался.

  • Книга Cracking the code interview, 5th edition.
  • Лекции Яндекса: «Алгоритмы и структуры данных поиска. Бабенко Максим Александрович.» (торрент)
  • Видео-курс «Robert Sedgewick, Kevin Wayne — Algorithms»(торрент) и их книга Algorithms (fourth edition) .
  • Репозиторий с простейшими алгоритмами на Objective-C: EKAlgorithms, одним из контрибьюторов которого я являюсь. В основном я больше привношу в этот репозиторий, чем беру из него — среди прочего я постоянно добавляю варианты к уже существующим там алгоритмам и добавляю к ним тесты так, чтобы можно было легко проверять как уже имеющиеся варианты, так и новые варианты и легко сравнивать их между собой, в том числе по производительности. Кроме того, я стараюсь максимально оптимизировать и гуманизировать (humanize) все находящиеся там алгоритмы, чтобы их можно было легко и быстро адаптировать для использования в реальных Objective-C/Cocoa программах.

II. Подготовка.

Подготовка происходила сумбурно и, имея в виду разумное напутствие VladD:

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

Я посмотрел первые три лекции Яндекса: «Сложность и модели вычислений», «Анализ учётных стоимостей», «Функции быстрой сортировки и сортировки слиянием». Там я впервые узнал, например, про тета- и гамма- нотацию. Также внимательно слушал про «анализ учётных стоимостей» (амортизированная стоимость, метод банкира и др.). Послушал про сортировки — сравнение основных методов, стабильность, in-place, итд. Например, впервые узнал, но почти ничего усвоил — только смутное представление — про сортировку внешних данных External memory Merge Sort и K-way merge.

Прочитал около сотни страниц Cracking the code interview — особой пользы практической в связи с алгоритмами я, конечно, не получил, но зато появилось некоторое представление о том, что там происходит в компаниях «большой шестёрки» с точки зрения code interviews. Например, среднее количество собеседований в этих компаниях примерно 6-8 штук, но это все кроме меня тут наверняка знают.

Посмотрел выборочно несколько видео-лекций из курса Седжвика про сортировки и особенно остановился на его разборе быстрой сортировки — видео мне показалось мало, и я проглядел ещё и книгу, раздел про Quick Sort. Среди прочего удивило то, что только в 1990 году некий инженер из Bell Labs заметил, что quick sort начинает работать очень затратно на последовательностях с большим количеством одинаковых ключей (у него это были нули и единицы), и только после этого qsort в stdlib был исправлен для того, чтобы это учесть. Сюда же утверждение Серджвика о том, что в начале нужно делать рандомайз всего массива, чтобы гарантировать беспорядок, чтобы было N * log N . Словом, было интересно, и я все эти моменты отметил.

Во время прослушивания лекции Яндекса про merge sort меня привлекла идея о том, что при слиянии двух кусков можно обойтись N / 2 дополнительной памяти ( external storage ) вместо N (я думаю все кроме меня тут в курсе, о чём речь). Меня это сильно увлекло, и я решил закрепить этот принцип на практике и тут же поправил процедуру построения К-деревьев в библиотеке kingpin — там используется немного другая идея, но аналогия была очень точной и получилось сделать то самое сокращение temporary storage в 2 раза. Я квалифицирую это приключение, как решение задачи в количестве 1 штука в духе

прогоните хорошую серию задач, чтобы чувствовать себя уверенно.

как советовал @VladD.

Меня давно заинтересовала задача Иосифа (Josephus Problem), и я в течение двух-трёх дней из этой недели небольшими подходами пробовал решить её в качестве ещё одной из задач для разминки перед собеседованием. Признаюсь честно, сделать efficient-версию с O(K * log N) вместо O(N) ума не хватило даже совсем приблизительно, от чего до сих пор есть чувство собственной неполноценности — хватило только на наивную версию (как в Википедии) и версию, в которой используется «итератор-убийца» — она работает медленно, но зато позволяет хорошо визуализировать ход того, как происходят убийства.

Повторно изучал очень хороший, основанный на дизассемблировании, разбор того, как внутри устроен класс NSMutableArray — это класс для мутабельных массивов в Cocoa. В его основе лежит Circular buffer, но кроме этого простого факта в статье содержится ещё несколько деталей, которые очень полезно знать именно Objective-C разработчикам.

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

Так как кроме собеседования по алгоритмам ожидалось ещё одно собеседование по iOS, то я готовился ещё и по теме iOS — читал все основные источники в основном по двум темам: Run loops, Autorelease pools.


Основное вроде всё описал, двигаюсь дальше.

III. Собеседование.

Перед самым собеседованием настроение было такое, что меня уничтожат вопросами про деревья, графы, матрицы, про многочисленные изобретения Эдсгера Дейкстры и прочее. Вышло же всё совсем просто, хотя я всё равно 1! раз умудрился продемонстрировать незнание самых простых именно азбучных основ [из-за их отсутствия я собственно и открывал этот вопрос пару недель назад].

Первым вопросом было рассказать о общем о том, как измеряются сложность и эффективность алгоритмов. Я рассказал самые простые и тривиальные вещи. Вопрос был общий и простой.

Мастер Йода рекомендует:  Для чего мониторить цены конкурентов

Дальше было уточнение про O-нотации. Я тоже рассказал всё в общем адекватно и, как мне кажется, хорошо.

Следующим был задан вопрос про то, что именно обозначает O-нотация (подразумевалось в сравнении с тета-, гамма-) — тут я честно застрял, так как эти детали у меня совершенно вылетели из головы — я честно признался, что помню лишь, что одна из них «сверху», другая «снизу», третья «снизу и сверху», но какая из них какая, не знаю чётко. Считаю это главным своим недочётом во всём собеседовании.

Был вопрос именно про то, что мы обсуждали здесь про lg N, а именно: «А какой именно логарифм имеется в виду, когда говорится о логарифмической сложности?». Я конечно же рассказал всё то, что мы успели затронуть здесь — и о строгой математической нотации и о том, что log2 и lg асимптотически отличаются друг от друга на константу, о том, что скорее всего lg N просочилось в массовое употребление с подачи нескольких классических работ по алгоритмам. Словом, ответ был очень развёрнутый. Можно считать это замечательным совпадением, так как открывался этот топик в том числе для ответа на этот вопрос — «почему встречается lg N, если имеется в виду log N или точнее log2 N?».

Дальше был общий вопрос рассказать про Quick Sort — я тут же восторженно рассказал обо всём, что с большим интересом наизучал по видео и книге Седжвика и своим экспериментам с имплементацией всего им описанного: про 1990 год, про рандомайз, чтобы убрать худшие случаи, про откат к insertion sort’у на малом числе элементов. Как мне показалось, своим рассказом я «грузанул» своего собеседователя так, что следующим, что он предложил, было написать «что-нибудь попроще» на его компьютере в коллабедите (в котором присутствовал также второй собеседователь) простой Bubble Sort, что я и сделал мгновенно с использованием лаконичных Cocoa API. Меня попросили прокомментировать написанное, что я и сделал. Всё было правильно.

Дальше вступил второй собеседователь и спросил про худшие случаи для Bubble Sort и спросил, как можно их смягчить. Я сходу, по следам рассказа про худшие случаи в Quick Sort, ответил, что если такие худщие и редкие для Bubble Sort случаи действительно ожидаются, можно делать перед началом сортировки рандомайз. Мой ответ устроил спрашивающего, но он спросил: «А ещё?». Я подумал некоторое время и понял, что сходу сказать не смогу (я всегда в таких случаях точно могу оценить, сколько времени мне точно не хватит для решения задачи, и это был такой случай). Оба собеседователя сошлись на «ладно, хорошо» и попросили рассказать на словах про Selection Sort и Insertion Sort. Я чётко рассказал про Selection Sort и начал рассказывать про Insertion Sort — начав немного путаться, я попросил времени подумать. Первый собеседователь сказал: «ладно, у нас остаётся мало времени, давайте решим задачу».

Задача оказалась такой: есть генератор random01(), который в случайном порядке выдаёт нули или единицы. Нужно на его основе написать random0123(), который выдаёт случайные 0 или 1 или 2 или 3.

Не успев даже подумать про первый и второй биты целого числа, в каждый из которых записывается по random01() (это понимание уже пришло после собеседования), я сразу увидел геометрическую аналогию с задачей про выбор квадранта, которую мы недавно разбирали с @avp, @paulgri, @VladD и @mega, и тут же сказал, что нужно просто взять random01() два раза в две переменные, а потом использовать двойное ветвление, и показал собеседователю эту геометрическую аналогию. Я сказал, что будет честно считать, что я эту задачу знаю и что можно попробовать решить какую-нибудь ещё. Он спросил меня, «а как сделать на основе random01() троичный random012()?», то есть как из 2 получить 3 случайных числа, а не 4, как в первой задаче, но тут нас начали выгонять из переговорной. Я решил эту задачу уже дома, и понял, что будь на собеседовании больше времени, я бы не догадался о решении за отведённое малое время. Я отправил своему собеседователю это решение просто как follow-up, так как всегда выполняю нерешённые задачи в качестве «домашнего задания».

P.S.

А итог такой, что меня не взяли. Причины отказа не назвали, сославшись: «У нас не принято сообщать о причинах отказов» и только: «Фидбэк о вас очень положительный, но продолжить общение мы не сможем».

Было 4 собеседования:

1) Вводное с ведущим разработчиком. Про это рассказывать долго, отмечу основное:

Я очень грамотно рассказал о наивных имплементациях NSMutableArray, NSMutableDictionary в том виде, как они описаны Mike Ash в его известных постах «Let’s build NSMutableArray» и «Let’s build NSMutableDictionary» — я очень хорошо знаю эти реализации с С массивом позади NSArray и простейшим словарём позади NSDictionary, так как делал кое-какие вещи на их основе. В процессе рассказа был вопрос про амортизированную стоимость — я на тот момент об этом не знал совершенно, даже слов таких не слышал, о чём и сказал прямо. Кстати, это «жесткое незнание» было одной из причин открытия этого вопроса.

Ещё была простейшая задача на матрицу вида N * N, которую я не решил в отведённое время, запутавшись с индексами — я не предложил ответ, а так и сказал, что запутался. Это наверное, был единственный серьёзный прокол за все 4 собеседования. Мой ответ собеседователю был такой: «я чётко понимаю, что мне нужно больше времени на эту задачу, в пределах этого времени у меня нет решения». В самом деле, придя домой, я решил эту задачу за 5 минут, так как в этой задаче для её быстрого решения нужно было «всего лишь» догадаться об одной очевидной мелочи (кавычки потому что «эх, если б сразу, вовремя»).

2) Собеседование по iOS.

Типичные вопросы. Отмечу некоторые:

  • Вопросы про разницу instancetype и init.
  • Написать геттеры/сеттеры к данным @property (под MRC)
  • NULL, nil, Nil, NSNull — кто такие, и в чём разница.
  • Вопрос про блоки, в котором подразумевается знание о необходимости копировать блоки, чтобы копировать их содержимое на heap.

Проверка на знание Cocoa-паттерна:

3) Алгоритмы (о них я рассказал выше).

4) «Архитектура». Я предполагал, что это будут вопросы про архитектуру, то есть устройство iOS, оказалось, что это собеседование про проектирование — меня спросили как спроектировать библиотеку для единой авторизации, которую смогут использовать несколько родственных между собой мобильных приложений. Чуть позже выяснилось, что мои собеседователи в этом интервью сами как раз являются разработчиками этой функциональности для всей экосистемы мобильных приложений в этой компании.

P.S. №2

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

27 распространенных вопросов для собеседования (и ответы на них)

Хотите узнать, какие вопросы чаще всего звучат на собеседованиях? Вот полный список (с самыми удачными вариантами ответа).

Некоторые компании нестандартно подходят к собеседованиям, однако в большинстве своем они задают стандартные вопросы (и получают стандартные ответы).

Вот список самых распространенных вопросов для собеседования с наилучшими вариантами ответа:

1. «Расскажите о себе»

Если вы проводите собеседование, наверняка вы уже многое знаете. Вы читали резюме и сопроводительное письмо, просматривали страницы кандидата в LinkedIn, Twitter и Facebook.

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

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

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

2. «Назовите свой главный недостаток»

Каждый кандидат знает, как ответить на этот вопрос. Нужно выбрать абстрактную слабость и превратить ее в достоинство.

Например: «Иногда я так увлекаюсь работой, что теряю счет времени. Опомнившись, я вижу, что все уже ушли домой. Я знаю, что мне нужно тщательнее следить за временем, но мне очень нравится то, что я делаю, и я просто не могу думать ни о чем другом!»

Значит, ваш «недостаток» заключается в том, что вы тратите на работу больше времени, чем все остальные? Мда.

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

3. «Назовите свое главное достоинство»

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

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

Иными словами, не будьте голословными, ищите аргументы!

4. «Каким вы видите себя через пять лет?»

Отвечая на этот вопрос, кандидаты следуют одному из двух возможных сценариев. Одни начинают описывать свои амбиции (им кажется, что собеседник хочет услышать именно это) и всем своим видом показывают: «Мне нужна эта работа!» Другие скромничают (им тоже кажется, что собеседник длет подобной реакции) и дают самоуничижительный ответ: «Вокруг так много талантливых людей. Мне просто хочется получить работу и посмотреть, каких успехов я смогу достичь».

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

Если вы проводите собеседование, перефразируйте вопрос: «Если бы вы могли создать свою собственную компанию, чем бы она занималась?»

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

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

5. «Почему мы должны нанять именно вас?»

Поскольку кандидат не может сравнивать себя с теми, кого он не знает, ему остается лишь описывать свою любовь к делу и жгучее желание принести пользу. Фактически, компания заставляет кандидатов умолять ее пойти им навстречу. Задав этот вопрос, представители многих компаний откидываются в кресле и скрещивают руки на груди. Этот жест как бы говорить: «Ну же, я слушаю! Давайте, убедите меня!»

Увы, это еще один неинформативный вопрос.

Но его можно изменить: «Как вы думаете, о чем мы забыли поговорить?» или «Если бы у вас была возможность повторно ответить на один из предыдущих вопросов, что бы вы сказали?»

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

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

Обязательно поддерживайте беседу на этом этапе, не позволяйте кандидату говорить с самим собой. Не стоит слушать молча, чтобы потом сказать: «Спасибо, мы с вами свяжемся». Задавайте уточняющие вопросы. Просите привести примеры.

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

6. «Как вы узнали о вакансии?»

Порталы по поиску работы, объявления в газетах и Интернете, ярмарки вакансий. Многие люди ищут первую работу именно там, и в этом нет ничего плохого.

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

Он просто ищет работу. Любую работу.

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

Компаниям не нужны люди, которым просто нужна работа. Компаниям нужны люди, которым нужна компания.

7. «Почему вы хотите получить эту работу?»

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

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

8. «Назовите свое главное профессиональное достижение»

Ответ на этот вопрос должен иметь прямое отношение к вакансии. Если вы скажете, что за последние полтора года увеличили объем производства на 18%, претендуя на должно руководителя отдела персонала, собеседник сочтет ваш ответ любопытным, но совершенно не информативным.

Лучше расскажите о проблемном сотруднике, которого вы «спасли», или о конфликте между отделами, который вы погасили, или о подчиненных, получивших повышение за последние полгода.

Поделитесь достижениями, которые позволят представить вас в должности и предсказать ваши успехи.

9. «Расскажите в последнем конфликте с коллегой или клиентом. Что произошло?»

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

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

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

10. «Опишите свою идеальную работу»

Формулируя ответ, помните — он должен иметь отношение к вакансии!

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

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

11. «Почему вы хотите оставить работу, которая есть у вас сейчас?

Начнем с того, о чем не нужно говорить (если вы представляете работодателя, вам стоит насторожиться):

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

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

Люди, которые жалуются на начальство и коллег, подобны сплетникам. Если они сплетничают о ком-то еще, настанет день, когда они начнут сплетничать и о вас.

12. «Какие рабочие условия кажутся вам наиболее привлекательными?»

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

Подумайте о вакансии и о культуре компании в целом (культура есть у каждой компании — искусственная или стихийная.) Если для вас важен гибкий рабочий график, но вам его не предлагают, сосредоточьтесь на чем-нибудь еще. Если вам требуется постоянная поддержка руководства, а работодатель поощряет самоуправление, на время забудьте об этом.

Найдите способы совместить свои потребности с принятыми в компании правилами. Если вы не можете этого сделать, скорее всего, вам стоит поискать другую работу.

13. «Расскажите о самом сложном решении, которое вам довелось принять за последние полгода»

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

Если у вас нет ответа на этот вопрос, это очень плохо. Каждому приходится принимать сложные решения, вне зависимости от должности. Моя дочь как-то работала на полставки официанткой в ближайшем ресторане. Она постоянно принимала сложные решения — например, о том, как вести себя с постоянным клиентом, чьи действия порой граничили с домогательством.

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

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

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

14. «Опишите свой стиль управления»

Это вопрос, на который сложно ответить, не прибегая к банальностям. Попытайтесь привести примеры. Скажите: «Позвольте рассказать вам о трудностях, с которыми я столкнулся, занимая должность руководителя. Думаю, они дадут полное представление о моем стиле». После этого опишите, как вы решали проблему, мотивировали команду, преодолевали кризис и т.д. Объяснитье, что и зачем вы делали, чтобы собеседник понял, как именно вы управляете другими людьми.

Не забудьте упомянуть о результатах, которых вы достигли.

15. «Расскажите о ситуации, в которой вы были не согласны с решением большинства. Что вы сделали?»

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

Продемонстрируйте свой профессионализм. Докажите, что умеете конструктивно высказывать свои опасения. Если однажды вам удалось изменить общее мнение, и это изменение было удачным, хорошо. Если подобных примеров нет, подчеркните, что вы можете поддержать решение, даже если оно кажется вам неверным (речь не идет о неэтичных и безнравственных решениях).

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

16. «Как бы вас описали другие люди?»

Я ненавижу этот вопрос. Это же пустая трата слов! Правда, однажды я все же его задал и получил ответ, который мне очень понравился.

«Люди сказали бы, что я тот, кем кажусь», — ответил кандидат. — «Если я что-то говорю, я это делаю. Если я обещаю помочь, я обязательно помогаю. Я не думаю, что нравлюсь всем и каждому, но они могут на меня рассчитывать, потому что знают, как я работаю».

Что может быть лучше?

17. «Что нам стоит ожидать от вас в первые три месяца работы?»

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

Отвечать нужно так:

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

Используйте этот план ответа, добавив в него подробностей с учетом специфики вашей работы.

18. «Чем вы любите заниматься в нерабочее время?»

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

Пытаясь убедить собеседника в том, что вы идеально подходите, не восхищайтесь занятиями, которые на самом деле вам не нравятся. Сосредоточьтесь на занятиях, которые позволяют вам развиваться — изучать что-то новое, добиваться более высоких целей. Например: «Мои дети еще совсем маленькие, поэтому свободного времени почти нет, однако по дороге на работу и обратно я учу испанский язык».

19. «Сколько вам платили на предыдущем месте работы?»

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

Попробуйте метод, предложенный Лиз Райан. Скажите: «В настоящее время я сосредоточился на вакансиях, которые позволили бы мне зарабатывать примерно 50 тысяч рублей. Ваша вакансия подходит под этот критерий, верно?» (Вообще-то, вы наверняка уже знаете ответ, но почему бы не подыграть?)

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

20. «Улитка сидит на дне колодца глубиной 9 метров. Каждый день она проползает 2 метра, а за ночь сползает вниз на 1 метр. Сколько дней ей понадобится, чтобы вылезти из колодца?»

В последнее время подобные вопросы становятся все популярнее (спасибо, Google!). Возможно, ваш собеседник и не ждет, что вы тут же броситесь высчитывать. Скорее всего, он хочет понять, как вы мыслите.

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

21. «Вы хотели что-то спросить?»

Не упускайте возможность! Задайте умный вопрос — не только для того, чтобы подчеркнуть свою индивидуальность, но и для того, чтобы убедиться, что выбрали правильную компанию. Не забывайте, что собеседование — это двусторонний процесс.

22. «Каких результатов я должен достичь в течение первых трех месяцев работы?»

Если вам не задали этот вопрос, задайте его сами. Зачем? Хорошие кандидаты стремятся взяться за дело без промедления. Они не хотят тратить недели и месяцы на то, чтобы «получше узнать организационную структуру». Они не видят смысла в ориентационных мероприятиях и предпочитают учиться на ходу.

Они хотят приносить пользу уже сейчас.


23. «Назовите три качества, которыми обладают ваши лучшие сотрудники»

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

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

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

24. «От чего на самом деле зависят результаты работы в этой должности?»

Инвестируя в сотрудников, работодатели ждут, что они принесут ему прибыль (иначе зачем вообще им платить?).

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

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

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

25. «Перечислите приоритеты компании на этот год. Какой вклад я смогу внести, если займу эту должность?»

Каждый кандидат желает знать, что его работа важна для окружающих.

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

В противном случае работа теряет смысл.

26. «Какой процент ваших сотрудников был нанят по рекомендации?»

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

Все это говорит о качестве рабочего окружения и об атмосфере в коллективе.

27. «Что вы будете делать, если. «

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

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

Предположим, вы владеете магазином лыж. Примерно в километре от вас открылся еще один магазин. Как вы планируете бороться с конкуренцией? Или, предположим, у вас есть птицефабрика. Что вы сделаете, чтобы снизить расходы на корм?

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

Собираемся на собеседование JAVA Junior

Всем добрый день!

Нужен совет тех, кто прошел через собеседования на разработчика JAVA Junior. Проблема в том, что я занялся чисто практикой во время изучения языка и совсем забыл про теорию. Отсюда плохой словарный запас. Внимание вопрос:

Что спрашивают на собеседовании? В гугле много информации по этому поводу, но она очень разная и не понятно: взята она с практики или с воздуха. Расскажите, как вы проходили собеседования и что вас спрашивали; с какими трудностями сталкивались и что пришлось подтянуть.

Потом создам статейку с самыми полезными ответами 🙂

Дубликаты не найдены

У меня еще такой вопрос, какие задачи дают джуну вообще? Допустим тот-же банк, или андроид разработчик банковского приложения.

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

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

Как по мне основное — понимание, как будет работать то, что вы пишите. Что будет происходить, если сделать вот так, а что — если не сделать.
Отсюда и требуемый стек — Java Core (не стоит заморачиваться с многопоточкой, сложными алгоритмами, структурой данных сложнее хешмапы) плюсом будет знание SQL хотя бы на уровне join’ов.
Все остальное — это уже условности работодателя, кому-то нужны веб приложения, и тут может быть понадобится Jax-RS/Jax-WS хотя бы на базовом уровне, кому-то — работа с БД (Hibernate, MyBatis, Jooq), кому-то — работа с большими объемами данных (Hadoop. хотя врядли XD ), в общем вариативно.
Если же, на собеседовании вас просят написать алгоритм бинарного поиска, или допустим в тестовом задании просят нарисовать сайт юзающий геопозицию гугла и хранящий данные о ГП в БД — то может быть вас просто хотят взять как джуна, а юзать как мидла. Платить вам придется меньше, задачи вы будете выполнять (хоть и медленно), а как дорастете до хоть какого-то уровня (если дорастете) и попросите повыше ЗП — вас заменят на нового (к сожалению, по крайней мере в Питере, это достаточно частое явление)

Собеседование: 8 самых распространенных ошибок программистов

Изучим ошибки и поймем, как их избежать

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

Причина, по которой некто мог бы выполнить нечто, если бы такая возможность была, состоит в том, что он сделал бы то, что выполнить не может. (Огурчик Рик)

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

Мы изучили более 20 000 интервью, которые проводились на нашей платформе для собеседований с программистами Pramp. Рассмотрели взаимные отзывы, сгруппировали их по тематике и выявили статистически значимые тенденции.

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

В конце вы найдете описание методологии, примененной нами для написания статьи.

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

Давайте сначала бросим взгляд на проблему с высоты птичьего полета:

Общее количество всех столбцов составляет более 100%, поскольку некоторые отзывы описывают более одной ошибки.

#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, вот список ресурсов, которые мы рекомендуем:

  1. Отличный курс от Courcera, предоставляющий всю важную информацию об алгоритмах и структурах данных, необходимую каждому серьезному программисту: Алгоритмы, часть 1, Алгоритмы, часть 2.
  2. «Cracking Coding Interviews» Гейла Лаакманн Макдауэлла — хорошая книга, в которой есть примеры задач, решения и рассказы о том, как разные компании подходят к найму.
  3. Два хороших бесплатных учебных курса, посвященных тому, чтобы помочь вам добиться успеха в техническом собеседовании:
  • Подготовительный курс по техническому собеседованию от 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, мы можем разработать решение, которое больше не подвержено переполнению (более подробно см. второе решение в ссылке выше).

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

#8: Сырой код

Частота ошибки на собеседовании: 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 интервью также является репрезентативным и для общего числа технических интервью, проводимых в «реальном мире».

50 вопросов и ответов по программированию для подготовки к техническому интервью

Готовясь к собеседованию, многие начинающие программисты понятия не имеют, каких вопросов ожидать от интервьеюров — будь то собеседование в стартап или технологический гигант вроде Amazon, Microsoft или Google. В статье на Hacker Noon разработчик Джавин Пол собрал вопросы, которые любят задавать на таких интервью, а также ответы на них и дополнительные ресурсы для подготовки.

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

Но прежде чем приступить к ним, понадобится хорошо изучить эти темы, или по крайней мере освежить навыки решения задач по ним. Для этого можно пройти курс по алгоритмам и структурам данных Роберта Хорвика: часть 1 и часть 2.

Список наиболее часто задаваемых вопросов для собеседований по программированию.

1. Массивы

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

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

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

Вот самые частые вопросы:

  1. Как найти пропущенное число в заданном массиве целых чисел от 1 до 100? (решение)
  2. Как найти повторяющееся число в заданном массиве целых чисел? (решение)
  3. Как найти наибольшее и наименьшее число в неотсортированном массиве? (решение)
  4. Как найти все пары в массиве целых чисел, сумма которых равна заданному числу? (решение)
  5. Как найти повторяющиеся числа в массиве, если их несколько? (решение)
  6. Как удалить повторяющиеся элементы из заданного массива в Java? (решение)
  7. Как сортировать массив целых чисел без дополнительной памяти при помощи алгоритма быстрой сортировки? (решение)
  8. Как удалить повторяющиеся элементы из массива без дополнительной памяти? (решение)
  9. Как сделать поменять порядок элементов в массиве на обратный без дополнительной памяти в Java? (решение)
  10. Как удалить повторяющиеся элементы из массива без использования коллекций? (решение)

Эти вопросы помогут не только развить навыки решения задач, но и прокачать знания по массивам. Более сложные вопросы по теме можно найти в курсе по алгоритмам The Coding Interview Bootcamp: Algorithms + Data Structures, разработанном специально для подготовки к собеседованиям в таких технологических гигантах, как Google, Microsoft, Apple или Facebook.

Дополнительно можно поупражняться на этой подборке из 30 вопросов.

2. Связный список:

Ещё одна базовая структура данных — связный список. Как и массив, это линейная структура данных, и элементы в нём хранятся линейно, но в отличие от массива — не в непрерывных областях. Они разбросаны в памяти и соединяются с помощью узлов. Связный список — ничто иное, как список узлов, каждый из которых содержит собственно данные и ссылку на следующий узел.


Благодаря такой структуре добавлять и удалять элементы в связном списке достаточно легко, так как нужно просто изменить ссылку без необходимости создавать новый список. При этом искать элементы сложнее; поиск по односвязному списку занимает линейное время O(n). В этой статье можно подробнее прочесть о различиях между массивами и односвязными списками.

Есть разные виды связных списков: односвязный список, который позволяет передвигаться только в одну сторону: в начало или в конец; двусвязный список, дающий возможность перемещения как вперёд, так и назад; кольцевой список, который формирует зацикленную структуру.

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

Вопросы для собеседования:

  1. Как найти центральный элемент в односвязном списке за один проход? (решение)
  2. Как проверить заданный связный список на цикличность? Как найти исходный узел цикла? (решение)
  3. Как сделать реверс связного списка? (решение)
  4. Как сделать реверс односвязного списка без рекурсии? (решение)
  5. Как удалить повторяющиеся узлы из несортированного связного списка? (решение)
  6. Как найти длину односвязного списка? (решение)
  7. Как найти 3-й узел с конца в односвязном списке? (решение)
  8. Как найти сумму двух связных списков, используя стек? (решение)

Эти вопросы помогут развить умение решать задачи на связные списки и углубить знание этой структуры данных. Если они вызывают трудности, можно обновить свои знания структур данных и алгоритмов, пройдя курс Data Structures and Algorithms: Deep Dive Using Java.

Кроме того, можно потренироваться на этом списке из 30 вопросов.

3. Строки

Помимо массивов и связных списков, ещё одной популярной темой являются строки: вопросы по ним неизменно звучат на каждом собеседовании на должности в программировании.

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

Вот наиболее частые из них:

  1. Как вывести повторяющиеся символы из строки? (решение)
  2. Как проверить, являются ли две строки анаграммами? (решение)
  3. Как вывести первый неповторяющийся символ из строки? (решение)
  4. Как сделать реверс заданной строки с использованием рекурсии? (решение)
  5. Как проверить, что строка состоит только из цифр? (решение)
  6. Как найти повторяющийся символ в строке? (решение)
  7. Как посчитать количество гласных и согласных звуков в заданной строке? (решение)
  8. Как посчитать, сколько раз в строке встречается заданный символ? (решение)
  9. Как найти все возможные перестановки элементов строки? (решение)
  10. Как сделать реверс слов в заданном предложении, не используя классы-коллекции? (решение)
  11. Как проверить, является ли одна строка перестановкой другой? (решение)
  12. Как проверить, является ли заданная строка палиндромом? (решение)

Способность решить эти вопросы говорит о достаточно хорошем уровне владений строками. Более продвинутые задачи можно найти в книге «Алгоритмы. Руководство по разработке» Стивена Скиены.

Ещё 20 вопросов можно найти здесь.

4. Двоичное дерево поиска

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

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

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

Наиболее распространённые вопросы по бинарным деревьям:

  1. Как реализуется двоичное дерево поиска? (решение)
  2. Как выполнить обход в прямом порядке в заданном двоичном дереве? (решение)
  3. Как обойти заданное двоичное дерево в прямом порядке без рекурсии? (решение)
  4. Как выполнить симметричный обход в заданном двоичном дереве? (решение)
  5. Как вывести все узлы заданного двоичного дерева, используя симметричный обход без рекурсии? (решение)
  6. Как применяется алгоритм обхода в обратном порядке? (решение)
  7. Как обойти заданное двоичное дерево в обратном порядке без рекурсии? (решение)
  8. Как вывести на печать все листья двоичного дерева поиска? (решение)
  9. Как посчитать количество листьев в заданном двоичном дереве? (решение)
  10. Как выполнить двоичный поиск в заданном массиве? (решение)

Если пройти эти вопросы самостоятельно слишком сложно, не помешает пройти какой-нибудь качественный курс по структурам данных и алгоритмам, например From 0 to 1: Data Structures & Algorithms in Java. Вот ещё два списка книг и курсов на эту тему.

5. Прочие алгоритмы и вопросы

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

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

  1. Как реализуется сортировка пузырьком? (решение)
  2. Как реализуется итеративная быстрая сортировка? (решение)
  3. Как реализуется сортировка вставками? (решение)
  4. Как реализуется сортировка слиянием? (решение)
  5. Как реализуется блочная сортировка? (решение)
  6. Как реализуется сортировка подсчётом? (решение)
  7. Как реализуется поразрядная сортировка? (решение)
  8. Как поменять местами значения двух переменных без использования третьей? (решение)
  9. Как определить, пересекаются ли два прямоугольника? (решение)
  10. Как спроектировать торговый автомат? (решение)

Свыше 189 вопросов для прохождения собеседования по программированию с ответами можно найти в книге «Карьера программиста» (6-е издание) Гэйл Лакман Макдауэлл.

Здесь можно пройти ещё 50 вопросов по программированию для прохождения собеседований по телефону; закрепить навыки можно с помощью вот этих подборок книг и курсов.

Вот ещё несколько ресурсов и подборок, которые помогут подготовиться к собеседованию:

Что я узнал после многочисленных собеседований в компаниях, специализирующихся на ИИ

Индийский программист Аман Далмиа дал советы о том, как успешно пройти собеседование инженеру или дата-сайентисту, поделился списком компаний, в которых он рекомендует попробовать свои силы, и ресурсов для помощи в подготовке к интервью.

За последние восемь месяцев я успел пройти собеседования в различных компаниях вроде DeepMind, Microsoft, Ola, Fractal Analytics на должности аналитика данных, разработчика ПО и инженера-исследователя. В процессе мне посчастливилось не только пообщаться со многими интересными людьми, но также проанализировать, что интересует интервьюеров в соискателях. Мне кажется, если бы я обладал этими знаниями раньше, я мог бы избежать многих ошибок и лучше подготовиться.

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

1. Как сделать так, чтоб вас заметили

Честно говоря, этот шаг самый важный. Среди всех откликов рекрутер должен заметить именно ваш. Эту часть можно разделить на три ключевых шага:

a) Последовательная подготовка: Составьте профиль на LinkedIn, Github, сайт-портфолио и хорошее резюме. Во-первых, ваше резюме должно быть кратким и аккуратным. Это руководство поможет вам правильно его составить. В нем указано все, чем я хотел бы с вами поделиться, и я сам им очень часто пользуюсь. Если говорить о шаблонах резюме, неплохие варианты можно найти на Overleaf.

На одной странице можно уместить множество информации. Однако если вам действительно нужно больше места, формат, который я предложил выше, не подойдет. Вместо этого вы можете найти более объемный шаблон здесь. Еще одна важная вещь – ваш профиль на Github. Многие недооценивают потенциал этого сервиса, потому что, в отличие от LinkedIn, здесь нет функции «Кто просматривал ваш профиль». Люди просматривают ваш профиль на Github, потому что это единственный способ проверить то, что вы упомянули в своем резюме. Вот что вы должны сделать:

  • Создать аккаунт на Github , если вы еще не зарегистрированы.
  • Создать репозиторий для каждого из ваших проектов.
  • Добавить документацию, где указаны четкие инструкции, как запускать код.
  • Добавить документацию для каждого файла с указанием роли каждой функции, значением каждого параметра, правильного форматирования (например, PEP8 для Python) и сценария по автоматизации предыдущего шага (факультативно).

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

Наконец, многие рекрутеры и стартапы начали использовать LinkedIn как основную платформу для поиска сотрудников. Туда выкладывают очень много интересных предложений. Помимо рекрутеров, активность на сайте проявляют и люди, занимающие влиятельные должности. Поэтому если вы привлечете их внимание, у вас есть шанс найти работу. Конечно, с вами захотят связаться только в том случае, если у вас будет аккуратный профиль. Поисковая машина LinkedIn является очень важной частью этого сайта. Чтобы вас заметили, вы должны использовать в профиле актуальные ключевые слова. Кроме того, вы можете попросить людей, с которыми вы когда-либо работали, написать рекомендацию. Все это повысит ваши шансы быть замеченным. Еще раз оставлю здесь ссылку на руководство Udacity по созданию профилей на LinkedIn и GitHub.

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

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

в) Нетворкинг: Очень важно взаимодействовать с людьми каждый день – если не физически, то на LinkedIn. Вы должны создать мощную сеть знакомств. Если вы хотите выстроить крепкие отношения с человеком, сначала предложите ему помощь. Еще один полезный шаг в нетворкинге – публикация вашего контента. Например, если у вас что-то хорошо получается, напишите об этом пост и поделитесь им на Facebook и LinkedIn. Это поможет не только остальным, но и вам. Как только вы выстроите хорошую сеть знакомств, вы станете более узнаваемым в обществе. Вы не представляете, как сильно вам может помочь человек, который просто лайкнет ваш пост.

2. Список компаний и стартапов, куда следует отправить резюме

Я составил список интересных компаний, в которых можно попробовать свои силы. Организации, которые я лично вам рекомендую, я отметил знаком «*». Моя рекомендация основывается на следующих факторах: программное заявление, люди, личное взаимодействие и область обучения. Рекомендации с двумя звездочками основываются только на последних двух факторах.

  • Adobe Research
  • *AllinCall – (основана выпускником Индийского технологического института Бомбея)
  • *Amazon
  • Arya.ai
  • *Element.ai
  • *Facebook AI Research: Программа резидентов ИИ
  • *Fractal Analytics (также приобрели: Cuddle.ai, **Qure.ai)
  • **Google (Brain / DeepMind / X): Программа резидентов ИИ
  • Goldman Sachs
  • Haptik.ai
  • **HyperVerge – основана выпускниками Индийского технологического института Мадраса , которые также работают над развитием решений различных проблем на основе ИИ с клиентами по всему миру
  • IBM Research
  • *Intel AI labs
  • **Jasmine.ai – основана выпускником Индийского технологического института Мадраса, который также получил докторскую степень в Мичиганском университете
  • JP Morgan
  • *Microsoft Research: а) стипендия на один или два года в лаборатории Microsoft в Индии. б) программа резидентов ИИ
  • MuSigma
  • Next Education
  • niki.ai
  • *Niramai – бывшие сотрудники Xerox Research работают над ранним выявлением рака молочной железы с использованием тепловизора
  • Ola
  • *OpenAI
  • *PathAI
  • Predible Health
  • Qualcomm
  • *SalesForce
  • Samsung Research
  • *SigTuple
  • *Suki – голосовой ассистент для врачей на основе ИИ. Недавно компания привлекла множество инвестиций, и, вероятно, откроет офис в Индии
  • *Swayatt Robotics – специализируется на развитии беспилотных автомобилей в Индии
  • **Wadhwani AI – основана братьями-миллиардерами Вадхвани
  • *Uber AI Labs & Advanced Technologies Group: Программа резидентов ИИ
  • *Umbo CV
  • Uncanny Vision
  • Zendrive

3. Как понравиться на собеседовании

Существует два типа собеседований:

  1. Интервьюер пришел с подготовленным списком вопросов и будет задавать вам только их, независимо от вашего резюме.
  2. Интервьюер будет задавать вопросы, опираясь на ваше резюме.

Я начну со второго. Такие собеседования начинаются с вопроса: «Что вы можете рассказать о себе». В таком случае не стоит рассказывать об обучении в университете и деталях ваших проектов. Идеальный ответ должен уместиться в минуту или две. Из него собеседник должен понять, чем вы занимались до этого момента. Вы можете рассказать о своих хобби – чтении книг, спорте, медитации – буквально о чем угодно, что определяет вас как личность. Затем интервьюер, основываясь на вашем ответе, задаст следующий вопрос, а затем начинается техническая часть собеседования. Цель – определить, указали ли вы правду в своем резюме.

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

Я также заметил, что интервьюерам нравилось, когда я говорю о проектах в следующем порядке:

Проблема > один или два предыдущих подхода > наш подход > результат > интуиция

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

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

Недавно я начал просить интервьюеров высказывать то, что им во мне не понравилось, чтобы я мог исправить эти недостатки в будущем. Это очень помогло мне.

4. Минимальные ресурсы, необходимые для подготовки

Любые собеседования на должность исследователя данных охватывают вопросы по следующим темам: информатика, математика, статистика и машинное обучение.

Информатика

  • Алгоритмы и структура данных:
  • — InterviewBit (практика)
  • — Лекции Индийского технологического института Дели на YouTube
  • Операционные системы:
  • 10 концепций операционных систем, о которых должны помнить разработчики ПО
  • Главы 3, 4, 7 книги «Концепции операционных систем» (англ. – Operating System Concepts)
  • Операционные системы на GeeksForGeeks
  • Объектно-ориентированное программирование: Вас спросят, как спроектировать систему. Поэтому вам нужно обсудить с интервьюером его/ее требования, какие классы необходимо создать, какими переменными/методами должен обладать каждый класс, как можно использовать наследование и так далее. Все это приходит с практикой. Вы можете перейти по этой ссылке для базового понимания терминологии.

Математика и статистика

При подготовке полезными могут быть главы 2, 3 и 4 книги «Глубокое обучение». Благодаря ней вы сможете подготовиться к теоретическим вопросам. Я подготовил краткое изложение нескольких глав, где объяснил концепции, которые, как мне кажутся, сложны для понимания. Если говорить о статистике, этих статей будет достаточно.

Машинное обучение

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

  • CS 229 – курс по машинному обучению, который ведет Эндрю Ын
  • Курс по машинному обучению, который ведет профессор Калифорнийского технологического института Ясер Абу-Мостафа

Важные темы: Обучение с учителем (классификация, регрессия, SVM, дерево решений, Random Forests, логистическая регрессия, многослойный перцептрон, оценка параметров, теорема Байеса), Обучение без учителя (Метод k-средних, GMM), Понижение размерности (PCA).

Если вы проходите собеседование на более продвинутую должность, есть вероятность, что вас спросят о глубинном обучении. В таком случае вы должны хорошо разбираться в сверточных нейронных сетях и/или рекуррентных нейронных сетях. То есть вы должны понимать фундаментальную идею глубинного обучения, как работали сверхточные и рекуррентные сети, какие типы архитектур предлагались и почему эти архитектурные изменения произошли. Нет никакой короткой статьи, в которой это все объяснялось бы. Вы либо понимаете это, либо выделяете время на ознакомление с этими темами. Вы можете почитать ресурсы Стэнфорда CS 231N и CS 224N. В первом расскажут о сверточных нейронных сетях, во втором – о рекуррентных. Мне также очень понравилось это видео о нейронных сетях. Эта статья поможет быстро освежить в памяти материал. Не забывайте про Udacity. Как вы уже могли догадаться, Udacity – действительно важное место для тех, кто занимается машинным обучением.

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

Материалы по теме:

Нашли опечатку? Выделите текст и нажмите Ctrl + Enter

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

Поговорим о том, какие действия и ошибки обеспечат провал на собеседовании. Что написать в резюме, что сказать, как себя вести, чтобы наверняка отпугнуть работодателя?
Если вы еще не программист, но хотите им стать, рекомендуем пройти онлайн-курс по основам программирования. Это бесплатно!

Самые популярные ошибки при составлении резюме

Сергей Дмитриченко, основатель GMS Services, сооснователь AmazingHiring:

«Часто талантливые программисты не любят много писать. Хороший код должен содержать минимально возможное количество строк. При составлении резюме — это не всегда верно. Здорово, если описание опыта содержит несколько предложений о проектах, в которых вы участвовали, зоне ответственности, используемых технологиях и результатах работы. Если компания, в которой вы работаете, не очень известная, лучше добавить одно-два предложения о том, чем она занимается. Если имя на слуху — достаточно названия и ссылки на сайт.

Бывает, что при составлении резюме, разработчик ориентируется на технического специалиста. Например, такое описание опыта разработчика драйверов под операционную систему windows: C/C++, Asm, x86, x64, DDK, WDF, WDM, не всем рекрутерам позволит распознать правильного кандидата. С точки зрения же программиста — этого вполне достаточно, чтобы понять специализацию. Пояснение „заклинаний“ кратким текстом поможет рекрутерам быстрее найти вас и правильно оценить.

Программисты не всегда правильно преподносят свой опыт и ожидания от новой работы. Умение емко и четко рассказать о своем опыте, расставить правильные акценты — важная часть интервью. Отдельная тема — ответ на вопрос „чего вы ждете от новой работы?“, часто его сложно добиться. Важно помнить всем известную истину: собеседование — это двойная продажа (компания продает себя кандидату и наоборот). Если вы согласились на интервью, поищите информацию о компании, будьте вежливы и доброжелательно настроены, проявляйте заинтересованность, будьте пунктуальны.

Онлайн-репутация становится все более важным критерием найма. Высокий рейтинг на Stackoverflow, Kaggle, открытые репозитории на GitHub — информация, которую полезно добавлять в резюме. Она может позволить компаниям быстрее понять ваш профессиональный уровень и, возможно, сразу позвать на техническое интервью, вместо выполнения входного тестового задания».

Галина Денина, руководитель HR-службы Redmadrobot:

«Резюме стоит составлять, как минимум, отталкиваясь от того, в компанию какого профиля человек хочет устроиться — занимающуюся аутсорс-разработкой или продуктовую. Важно правильно расставлять акценты и ни в коем случае не игнорировать сопроводительное письмо, именно в нем можно сакцентировать внимание рекрутера на том, что соискатель считает важным и релевантным. В Redmadrobot самая частая причина отказа кандидатам — слабые технические навыки.

Вовсе не нужно упражняться в остроумии и снабжать резюме искрометными (как вам кажется) шутками. Такие попытки выделить свое резюме могут поднять настроение сотрудникам HR-отдела, но не сделают его резюме более заметным с профессиональной точки зрения. Компаниям нужны профессионалы, а чувство юмора — это soft skill, который вы сможете ненавязчиво продемонстрировать на финальном испытании. Вообще с юмором нужно быть аккуратнее — вас могут неправильно понять или не воспринять серьезно».

5 способов не пройти собеседование

Павел Настобурко, руководитель AppLead:

  1. Проситься с первого месяца пребывания в компании работать дома или удаленно;
  2. Не иметь никакого представления, о том, чем занимается компания в которую пригласили на собеседование;
  3. Не уделять внимание тестовому заданию, с помощью которого работодатель проверит уровень знаний программиста-соискателя. Частое заблуждение думать о том, что потом результат тестового задания соискателя используют в дальнейшей работе компании.
  4. Спешить или всячески показывать, что для собеседования выделили только 10 минут;
  5. Быть неспособным сформулировать должность на которую пришел. Вот это действительно очень раздражает.

Топ провальных «кейсов»

Екатерина Артюшина, HR-директор СимбирСофт:

«В нашей практике был кейс несанкционированного собеседования. Кандидат не просто пришел в компанию без предварительного приглашения или резюме, так еще и с мамой! Молодой человек был выпускником ИТ-специальности вуза, с хорошими оценками, но говорила на собеседовании только мама. Когда дошло до технической части, он почему-то не прошел, то ли давление со стороны навредило, то ли он просто не привык общаться самостоятельно».

Юрий Кондратьев, генеральный директор кадрового агентства Lightman Solutions:

«Могу вспомнить несколько случаев провального (для кандидатов) собеседования на технические позиции. Например, была встреча с разработчиком Java, на встречу он пришел с женой, сел в переговорной вместе с ней, когда его вызвали. Само собой, встреча приняла несерьёзный оборот. Провальность собеседования в самом способе проведения. Другой случай, программист 1С пришел, чтобы написать тест. Тест оказался сложным, и вместо ответов на большинство вопросов он тезисно писал рассуждения о жизни и нелегкой судьбе соискателя».

Елена Крачковская, руководитель административного отдела Группы Компаний ХОСТ:

«У нас был кандидат на разработчика Java. Он успешно выполнил тестовое задание, и мы пригласили его на собеседование. Тут-то и выяснилось, что задание за него выполнял дядя, а кандидат просто смотрел на «расшаренный» рабочий стол. На собеседовании он не ответил на самые простые вопросы по заданию и потом долго удивлялся, почему его не взяли на работу — „задание-то он выполнил“».

Тем, кто хочет разобраться в веб-разработке, рекомендуем профессию «Веб-разработчик» от GeekBrains.

Поговорим о том, какие действия и ошибки обеспечат провал на собеседовании. Что написать в резюме, что сказать, как себя вести, чтобы наверняка отпугнуть работодателя?
Если вы еще не программист, но хотите им стать, рекомендуем пройти онлайн-курс по основам программирования. Это бесплатно!

Самые популярные ошибки при составлении резюме

Сергей Дмитриченко, основатель GMS Services, сооснователь AmazingHiring:

«Часто талантливые программисты не любят много писать. Хороший код должен содержать минимально возможное количество строк. При составлении резюме — это не всегда верно. Здорово, если описание опыта содержит несколько предложений о проектах, в которых вы участвовали, зоне ответственности, используемых технологиях и результатах работы. Если компания, в которой вы работаете, не очень известная, лучше добавить одно-два предложения о том, чем она занимается. Если имя на слуху — достаточно названия и ссылки на сайт.

Бывает, что при составлении резюме, разработчик ориентируется на технического специалиста. Например, такое описание опыта разработчика драйверов под операционную систему windows: C/C++, Asm, x86, x64, DDK, WDF, WDM, не всем рекрутерам позволит распознать правильного кандидата. С точки зрения же программиста — этого вполне достаточно, чтобы понять специализацию. Пояснение „заклинаний“ кратким текстом поможет рекрутерам быстрее найти вас и правильно оценить.

Программисты не всегда правильно преподносят свой опыт и ожидания от новой работы. Умение емко и четко рассказать о своем опыте, расставить правильные акценты — важная часть интервью. Отдельная тема — ответ на вопрос „чего вы ждете от новой работы?“, часто его сложно добиться. Важно помнить всем известную истину: собеседование — это двойная продажа (компания продает себя кандидату и наоборот). Если вы согласились на интервью, поищите информацию о компании, будьте вежливы и доброжелательно настроены, проявляйте заинтересованность, будьте пунктуальны.

Онлайн-репутация становится все более важным критерием найма. Высокий рейтинг на Stackoverflow, Kaggle, открытые репозитории на GitHub — информация, которую полезно добавлять в резюме. Она может позволить компаниям быстрее понять ваш профессиональный уровень и, возможно, сразу позвать на техническое интервью, вместо выполнения входного тестового задания».

Галина Денина, руководитель HR-службы Redmadrobot:

«Резюме стоит составлять, как минимум, отталкиваясь от того, в компанию какого профиля человек хочет устроиться — занимающуюся аутсорс-разработкой или продуктовую. Важно правильно расставлять акценты и ни в коем случае не игнорировать сопроводительное письмо, именно в нем можно сакцентировать внимание рекрутера на том, что соискатель считает важным и релевантным. В Redmadrobot самая частая причина отказа кандидатам — слабые технические навыки.

Вовсе не нужно упражняться в остроумии и снабжать резюме искрометными (как вам кажется) шутками. Такие попытки выделить свое резюме могут поднять настроение сотрудникам HR-отдела, но не сделают его резюме более заметным с профессиональной точки зрения. Компаниям нужны профессионалы, а чувство юмора — это soft skill, который вы сможете ненавязчиво продемонстрировать на финальном испытании. Вообще с юмором нужно быть аккуратнее — вас могут неправильно понять или не воспринять серьезно».

5 способов не пройти собеседование

Павел Настобурко, руководитель AppLead:

  1. Проситься с первого месяца пребывания в компании работать дома или удаленно;
  2. Не иметь никакого представления, о том, чем занимается компания в которую пригласили на собеседование;
  3. Не уделять внимание тестовому заданию, с помощью которого работодатель проверит уровень знаний программиста-соискателя. Частое заблуждение думать о том, что потом результат тестового задания соискателя используют в дальнейшей работе компании.
  4. Спешить или всячески показывать, что для собеседования выделили только 10 минут;
  5. Быть неспособным сформулировать должность на которую пришел. Вот это действительно очень раздражает.

Топ провальных «кейсов»

Екатерина Артюшина, HR-директор СимбирСофт:

«В нашей практике был кейс несанкционированного собеседования. Кандидат не просто пришел в компанию без предварительного приглашения или резюме, так еще и с мамой! Молодой человек был выпускником ИТ-специальности вуза, с хорошими оценками, но говорила на собеседовании только мама. Когда дошло до технической части, он почему-то не прошел, то ли давление со стороны навредило, то ли он просто не привык общаться самостоятельно».

Юрий Кондратьев, генеральный директор кадрового агентства Lightman Solutions:

«Могу вспомнить несколько случаев провального (для кандидатов) собеседования на технические позиции. Например, была встреча с разработчиком Java, на встречу он пришел с женой, сел в переговорной вместе с ней, когда его вызвали. Само собой, встреча приняла несерьёзный оборот. Провальность собеседования в самом способе проведения. Другой случай, программист 1С пришел, чтобы написать тест. Тест оказался сложным, и вместо ответов на большинство вопросов он тезисно писал рассуждения о жизни и нелегкой судьбе соискателя».

Елена Крачковская, руководитель административного отдела Группы Компаний ХОСТ:

«У нас был кандидат на разработчика Java. Он успешно выполнил тестовое задание, и мы пригласили его на собеседование. Тут-то и выяснилось, что задание за него выполнял дядя, а кандидат просто смотрел на «расшаренный» рабочий стол. На собеседовании он не ответил на самые простые вопросы по заданию и потом долго удивлялся, почему его не взяли на работу — „задание-то он выполнил“».

Тем, кто хочет разобраться в веб-разработке, рекомендуем профессию «Веб-разработчик» от GeekBrains.

Сервисы для соискателей

Продвижение резюме

Доверьте составление резюме профессионалам!

Узнайте какой вы специалист и добейтесь большего

Автоматическое поднятие резюме в результатах поиска

Отправьте свое резюме в ведущие кадровые агентства

Отправьте свое резюме в компанию мечты

Образование и консультации

20 вопросов, которые вам могут задать на собеседовании

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

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

1. «Расскажите о себе». Вас об этом попросят, поэтому будьте готовы рассказать основные моменты рабочей биографии. Воспользуйтесь простой формулой «настоящее — прошлое — будущее». Сначала рассказываете о том, кем являетесь на данный момент, чем занимаетесь, что умеете. Затем говорите о том, что привело вас к текущему положению: совокупность навыков и опыта. В конце рассказываете о своих планах и перспективах.

2. «Назовите ваши сильные стороны». Здесь важно не просто перечислить ваши лучшие качества, но и привести пример, как они помогли достичь определенных целей и успехов в работе.

3. «Назовите ваши слабые стороны». Позиционируйте свои слабые стороны как точки роста: расскажите о том, как планируете работать над недостатками, что уже удалось исправить.

4. «Почему вы хотите работать именно у нас?» Здесь можно продемонстрировать степень подготовки к собеседованию, уровень знаний о компании, заинтересованность в работе. Если вам не удалось найти достаточно информации, не стесняйтесь задавать вопросы работодателю.

5. «Почему вы ушли с предыдущего места работы?» Быть откровенным здесь не обязательно. Если у вас не ладились отношения с руководством или просто стало скучно, работодатель насторожится. Отвечайте в позитивном ключе : вам хотелось бы, чтобы работа была более разнообразной, или идеальный начальник, по вашему мнению, не беспокоит вас в нерабочее время.

Еще 15 вопросов, которые вам могут задать:

6. «Кем вы видите себя через 5 лет?» Не пытайтесь быть точным в прогнозах: здесь работодателю интересен ваш ход мысли и направление мечтаний.

7. «Каковы ваши зарплатные ожидания ?» Будьте готовы к тому, что после этого вас спросят и о зарплате на последнем месте.

8. «Чем вы планируете заниматься в первый месяц/квартал вашей работы, если получите это место?» Не страшно, что вы пока не знаете тонкостей, главное — продемонстрировать активный настрой, готовность влиться в процесс.

9. Расскажите про ваши достижения на предыдущем месте .

10. Расскажите о вашем самом большом провале.

11. У вас есть дети?

12. Как давно ищете работу? Есть ли другие предложения, которые вас заинтересовали?

13. Чем именно вы занимались на предыдущем месте работы?

14. Как вы относитесь к переработкам?

15. Каков ваш последний крупный проект?

16. Почему мы должны взять на эту работу именно вас? Чем вы отличаетесь от других кандидатов?

17. Почему вы выбрали эту специальность/университет?

18. Как вы проводите свободное время?

19. Есть ли у вас вредные привычки?

20. Какие проблемы вам чаще всего приходится решать в вашей работе?

Если вы уже знаете, в какой компании хотите работать, но не находите подходящей для вас вакансии, отправьте работодателю сообщение «Хочу у вас работать!». Оно попадет в специальную папку, и работодатель узнает о вашей кандидатуре.

Мастер Йода рекомендует:  За какими отраслями будущее IT-сферы Куда идти, чтобы быть уверенным в завтрашнем дне
Добавить комментарий