Tehnografi.com - Технологические новости, обзоры и советы

Как пройти собеседование с разработчиком iOS

Следующая статья поможет вам: Как пройти собеседование с разработчиком iOS

Вернуться в блог

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

Вот во что мы вникнем:

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

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

Большинство собеседований для разработчиков состоят из:

  1. Экран телефона: Менеджер по найму связывается с вами по телефону и беседует в течение 15 минут. Таким образом, менеджер по найму может отфильтровать разработчиков, с которыми они хотят провести собеседование лично.
  2. Личное интервью: Вас приглашают в офис вашего будущего работодателя на официальное собеседование. Они зададут типичные вопросы на собеседовании, например: «Над каким интересным проектом вы недавно работали?»
  3. Живое кодирование: Это уникально для вакансий разработчиков. Вас просят найти решение задачи по программированию. Существует множество вариантов: онлайн, лично, вживую или на дому, написание кода со старшим разработчиком, использование доски и т. д.
  4. Тестовый проект: Это буквально проект приложения для iOS, так что вы можете продемонстрировать свои навыки. Тестовые проекты становятся все более распространенными, поскольку зачастую они лучше отражают работу, на которую вы проходите собеседование.

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

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

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

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

В этом сценарии собеседование с разработчиком начинается с проверки кандидатов. Вот как:

  • Менеджер по найму просматривает резюме (Curriculum Vitae или «CV») и составляет короткий список.
  • Многие компании разрешают разработчикам подавать заявки онлайн, а используемое ими программное обеспечение иногда может автоматически проверять кандидатов (опыт, местоположение и т. д.).
  • Некоторые работодатели будут проверять ваши навыки письменной речи (английского и т. д.), что может быть весьма безличным, что необычно для небольших фирм.

Затем менеджер по найму планирует телефонное собеседование с разработчиками из их короткого списка. Число претендентов сократилось с сотен до дюжины или всего лишь нескольких. Это может быть весьма неприятно для вас, наемного разработчика, потому что вы входите в 80%, которые попадают в список «Не звонить», даже не задумываясь.

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

Подготовка к экрану телефона

Как вы готовитесь к собеседованию по телефону? Вот как:

  • Поищите в Интернете распространенные вопросы для собеседований по телефону. Типичный вопрос: «Что заставило вас подать заявку на эту должность?» Ответы на подобные вопросы занимают 50% экрана телефона. (Мы обсудим технику вопросов позже.)
  • Изучите компанию, в которую вы подаете заявление. Узнайте, над чем они работают, каковы цели компании, и подумайте, как бы вы вписались в нее. Включите эти идеи во все интервью с разработчиками (а не только на экран телефона).
  • На типичных экранах телефонов менеджер по найму спрашивает о «красных флажках», таких как пробелы в вашем резюме и частая смена работодателей. Разумно быть готовым к таким вопросам, но имейте в виду, что пробелы в резюме и смена работодателей часто не обязательно плохи.

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

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

Два вопроса, которые гарантированно произведут хорошее впечатление:

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

Совет для профессионалов: Создайте онлайн-витрину своей работы. Как портфолио, но лучше. Сосредоточьтесь на том, чтобы представить свою работу так, чтобы показать ее преимущества, качества и ценность будущим работодателям. Лучший способ получить работу (и по-прежнему) — это получить работу для вашей работы, а не пытаться получить работу в качестве обычной кодовой обезьяны. Нет работ для демонстрации? Начните работать над этим и помните о правиле 2×3: разработайте 3 профессиональных проекта и 3 связанных проекта, которые покажут, кем вы являетесь (эксперименты, пробные версии, открытый исходный код и т. д.).

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

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

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

  1. Светская беседа (казалось бы, бесцельная)
  2. Вопросы и ответы в форме диалога

Чего ждать!? Казалось бы, бесцельная светская беседа? О чем это?

Болтовня

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

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

Это, казалось бы, бесцельная светская беседа! Это невероятно важно на любом собеседовании с разработчиком. С одной стороны, вы получаете возможность пообщаться и продемонстрировать свои навыки и увлечения. С другой стороны, вы можете чувствовать себя комфортно, проходя собеседование и находясь «на месте». У вас часто также есть возможность проверить офис.

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

“Почему мы должны вас взять на работу?”

Следующий этап собеседования — это то, о чем мы думаем, когда думаем «собеседование». Вы подготовились к диалогу вопросов и ответов, с нервирующими вопросами типа «Почему мы должны нанять вас?», «В чем ваша самая сильная сторона?» и «Если бы вы были животным, каким животным вы бы были?» (Хорошо, возможно, последнее — миф.)

Как вы готовитесь к этой части собеседования с разработчиком?

  • Потренируйтесь отвечать на прямые вопросы, например: «Что делает вас идеальным для этой работы?» Цель здесь — не дать желаемый, ожидаемый ответ, а дать подлинное представление о вашей работе, навыках и сильных сторонах.
  • Не сосредотачивайтесь слишком сильно на практических вопросах и ответах, которые вы хотите дать, а сосредоточьтесь на том, как вы на них отвечаете. Научитесь отвечать, пока вы не сможете обыграть то, что хотите донести.
  • Проведите пробное собеседование с другом или с помощью специализированного сервиса, такого как Codementor. Моделирование сценария собеседования — отличный способ попрактиковаться, освоиться и научиться лучше проходить собеседование в безопасной среде. Это также помогает от беспокойства!

Прежде чем двигаться дальше, давайте обсудим стратегию ответа на вопросы в стиле диалога. Мы сосредоточимся на типичном вопросе: «Почему мы должны нанять именно вас?» вопрос.

Вашей первой реакцией может быть: «Ну, у меня нет работы, я увидел это объявление о работе, и теперь я здесь». Но на самом деле это не то, что интервьюер хочет услышать, когда задает этот вопрос! Акцент делается на том, почему они должны нанять вас. Итак… зачем им это нужно?

Метод АСА

Великолепной техникой является так называемый метод ВДА. Это означает «преимущество-претензия-преимущество», и, короче говоря, вы фактически дополняете претензию двумя преимуществами. Вы сначала даете преимущество, потом претензию, а потом заканчиваете еще одним преимуществом.

Допустим, вы хорошо разбираетесь в разработке для iOS. Вы не можете просто сказать: «Вам следует нанять меня, потому что я хорошо разбираюсь в разработке для iOS», потому что без доказательств это звучит невероятно. Как вы можете показать, что вы хороши в разработке для iOS, не говоря об этом прямо?

Вот несколько идей:

  • «На своей последней работе я работал над масштабным iOS-проектом с тысячами клиентов. Он научил меня хорошо разрабатывать проекты для iOS. С тех пор я включил эти идеи в более мелкие проекты».
  • «Я начал узнавать о Flutter несколько месяцев назад. Я уже свободно разбираюсь в разработке для iOS, поэтому использовал Flutter, чтобы узнать больше о разработке приложений с другой точки зрения».
  • «В качестве побочного проекта я создал это приложение в App Store. В процессе я стал экспертом в разработке для iOS. На прошлой неделе я получил это замечательное письмо от клиента». (Покажите электронное письмо с похвалой.)

Видите ли вы, как каждое утверждение (выделено курсивом) заключено в два преимущества (ACA)?

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

Что бы вы ни делали, не говорите, что «перфекционизм» — ваша самая большая слабость. Все так говорят! Если вы обнаружите, что склонны давать желаемые, неоригинальные ответы, попробуйте обратиться за помощью к профессионалу, чтобы выявить ваши сильные и слабые стороны. Это не так черно-бело, но может помочь вам взглянуть со стороны на то, в чем вы хороши (а что нет).

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

Вот как работает тест живого кодирования:

  • Живой тест по кодированию — это задача, которую вам нужно решить с помощью программирования. Проблемы обычно связаны с дисциплинами информатики «Алгоритмы и структуры данных», такими как временная сложность, двоичные деревья, поиск, сортировка, хеш-таблицы и связанные списки.
  • Тесты по кодированию в реальном времени могут проводиться онлайн, на таких платформах, как Codility и HackerRank, посредством телеконференций, таких как Zoom, или лично. От того, как проводится тест, зависит, как лучше всего к нему подготовиться.
  • Вас часто просят объяснить ваше решение задачи либо после того, как вы закончили, либо во время его написания. Особенно последнее может быть невероятно напряженным, потому что вам нужно уметь одновременно говорить и программировать.
  • Подраздел тестов по кодированию вращается вокруг доски. Когда вы рисуете проблему на доске, вы, по сути, работаете над своим кодом на доске — без компьютера или редактора кода. В некоторых случаях вы можете активно сотрудничать со старшим разработчиком для решения проблемы.

Познакомьтесь со средой кодирования

Во-первых, давайте обсудим среду, в которой вы выполняете эти тесты кодирования. Возьмем, к примеру, онлайн-среду Codility:

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

Лучший совет здесь: привыкните к среде кода, которую вы собираетесь использовать для живого теста кодирования. Если вы знаете, что Codility используется для тестов по кодированию, решите их практические задачи и узнайте, как они оценивают тесты. Если вы можете использовать Xcode Playgrounds в Zoom, отлично! Платформы онлайн-кодирования имеют ограничение по времени, поэтому примите это во внимание при разработке своей стратегии. Выполнить 2 из 3 тестов лучше, чем 3 теста, выполненных только наполовину.

доска

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

Некоторые идеи:

  • Подумайте, почему вы проводите этот живой тест по программированию. Это просто проверка, умеете ли вы программировать, или происходит что-то еще? Большинство интервьюеров хотят видеть ваш мыслительный процесс; посмотреть, как вы решаете проблему. Акцент делается не столько на успешном решении задачи, сколько на том, как вы ее решаете. Какой процесс вы используете?
  • Если можете, попробуйте полностью объяснить свое решение после того, как закончите кодирование. Работайте поэтапно. Сначала вы прорабатываете какую-то часть решения. Затем вы объясняете, как это работает. Затем вы переходите к следующей части и так далее. Это дает вам структуру, за которую можно держаться, и может помочь вам сохранять хладнокровие.
  • Делайте записи во время теста. Вы нашли крайний случай, который необходимо принять во внимание? Какой-то механизм или подзадача, которые вам понадобятся позже? Выгрузите это из рабочей памяти вашего разума и вернитесь к нему позже. Делать заметки особенно полезно во время работы с доской.

Решение задач живого кодирования

Далее давайте рассмотрим реальную задачу живого кодирования. Какова хорошая стратегия для ее решения?

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

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

Решение: Лучше всего вы можете представить себе решение как сортировку всех чисел, запись их в линию и группировку их ручкой (путем рисования линии между числами), если вы видите, что разница с последующим числом больше 2. Это действительно помогает, если вы можете представить это в своем уме!

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

Какова хорошая стратегия для решения этой проблемы?

  • Сначала подумайте, как бы вы решили эту задачу с помощью ручки и бумаги. Не начинайте программировать сразу! Обдумывание проблемы в уме поможет вам быстрее найти решение, поскольку вас не отвлекает синтаксис Swift. Это также поможет вам найти крайние случаи, а обсудить проблему с интервьюером — это быстрая победа.
  • Затем подумайте о временной сложности. Предлагаемое вами решение, какова его временная сложность? Обычно начинают с подхода грубой силы, но они часто имеют низкую временную сложность, например O(n2). Некоторые задачи живого кодирования могут потребовать от вас работы с определенной временной сложностью, например O(n log n).
  • Прочтите задание еще раз. Требования, такие как временная сложность, могут дать подсказку о том, что необходимо. Например, временная сложность O(n log n) может указывать на то, что вам необходимо отсортировать входные данные перед их обработкой. Аналогичным образом, описание проблемы может намекать на некоторые крайние случаи, которые вам, возможно, придется принять во внимание.
  • Приступайте к написанию кода решения. Вы подготовились как можно лучше. Сосредоточьтесь на реализации подхода «ручка и бумага» с помощью кода. Расскажите интервьюеру о вашем процессе. Закончив, проверьте свой код на наличие пограничных случаев. Многие испытания имеют несколько скрытых сценариев, которые вам нужно принять во внимание, но которые не очевидны сразу. Что, если входные данные сколь угодно малы или велики? А что, если это все одинаковые числа? Или целые числа ниже нуля?
  • Отправьте свое решение. Если вы работаете в Интернете, отправка обычно является завершением упражнения, и вы получите результаты по электронной почте. Если вы проводите собеседование лично, вам, возможно, придется обсудить свое решение с интервьюером. Найдите время, чтобы поговорить с ними об этом. Даже если ваше решение не является на 100 % правильным, возможно, вы сможете заработать несколько баллов за свой рабочий процесс и объяснения.

Практика, практика, практика

Последний совет, которым стоит поделиться, — много практиковаться. Фактически, это справедливо для всего интервью с разработчиком. Решите примеры задач таких платформ, как Codility, HackerRank, Project Euler и т. д. Освойтесь со стратегией, которая работает для вас. Практика действительно приводит к совершенству!

Вот несколько пошаговых задач, которые вы можете попробовать:

  • Играйте с кодом: преобразование римских цифр с помощью Swift
  • Как: объяснение перетасовки массива в Swift
  • Игра с кодом: сортировка вставками в Swift
  • Давайте решим задачу FizzBuzz в Swift

Живые тесты по программированию на собеседованиях с разработчиками становятся все более противоречивыми, поскольку они могут не отражать должность, на которую вы проходите собеседование. Интересна история Макса Хауэлла. Он является создателем Homebrew, менеджера пакетов для Mac/Linux, который используется во всем мире. Он провалил собеседование в Google из-за того, что не смог инвертировать двоичное дерево, несмотря на то, что многие люди в Google, вероятно, используют его программное обеспечение…

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

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

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

Разумеется, это руководство не будет полным без нескольких примеров вопросов для собеседования:

  • Сколько теннисных мячей можно поместить в лимузин? (Вы можете найти массу этих глупых вопросов в Интернете. Будьте оригинальны и постарайтесь связать их с текущей работой.)
  • Что вы думаете по технической теме X? (Важно высказать свое мнение и защитить его. Когда вы можете, покажите, что вы тоже открыты для новых идей.)
  • Почему мы должны вас взять на работу? (Этот вопрос отстой, пока вы не поймете, что это шанс продемонстрировать свою работу и сильные стороны.)
  • Что отличает великого программиста от хорошего? Чувствуете ли вы, что обладаете этими качествами? (Не давайте здесь нужных ответов. Конечно, вы думаете, что хорошо справляетесь со своей работой. Начните с примеров.)
  • Каковы, по вашему мнению, принципы хорошей разработки программного обеспечения? Каким основным принципам должен следовать каждый? (Не будьте здесь слишком строги. Хороший ответ сочетает в себе фундаментальные принципы со здравым смыслом и проницательностью.)
  • Чем ты любишь заниматься вне работы? (Вопрос с подвохом! Это ловушка! Они не хотят, чтобы у вас была жизнь вне работы. Я, конечно, шучу.)
  • Вы застряли на тропическом острове, имея только ноутбук. Что бы вы сделали, чтобы выбраться с острова? (Отличная возможность для дополнительных вопросов.)
  • Каков ваш процесс поиска ошибки в приложении? (Не полагайтесь здесь на программное обеспечение или предустановленные рабочие процессы. Посмотрите, сможете ли вы ответить на этот вопрос с помощью низких технологий.)
  • Над каким интересным проектом вы недавно работали? Какова была ваша роль в этом? (Отличная идея — легко выбрать проект, о котором вы рассказываете. Вы также можете объединить предыдущие профессиональные проекты и свою собственную работу.)
  • Что заставило вас претендовать на эту должность? (Отличная возможность показать, что вы изучили компанию и что ваша собственная работа хорошо подходит компании.)

Table of Contents