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

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

Контрольный звонок

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

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

Техническое интервью

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

Пример: «1a2bc3def = abbcdddef» 1-A, 2-Bs, 1-C, 3-Ds, 1-E, 1-F

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

# Prompt: Create a function that will transform the the input to the output
# Input: 2a3bc4d
# Output: aabbbcdddd
def transformation(buffer):
  if len(buffer) == 0:
    return None
decompacted = ''
for index, character in enumerate(buffer):
    if character.isdigit():
      first_digit = int(character)
      if not buffer[index+1].isdigit():
        decompacted = decompacted + ((first_digit-1) * buffer[index+1])
      else:
        second_digit = int(buffer[index+1])
        multipler = (first_digit * 10)
        decompacted = decompacted + (multipler * buffer[index+2])
    else:
      decompacted = decompacted + character
  print(decompacted)
  return decompacted
# Test cases
assert transformation('1a2bc3def') == 'abbcdddef'
assert transformation('2a3bc4d') == 'aabbbcdddd'
assert transformation('12a3bc') == 'aaaaaaaaaaaabbbc'
assert transformation('15a3bc') == 'aaaaaaaaaaaaaaabbbc'

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

Интервью «на месте»

Мое последнее собеседование было назначено на начало февраля. Это последнее собеседование должно было пройти на месте, но, поскольку я в то время находился на другом конце Канады, они провели удаленное собеседование на месте с помощью Google Hangouts. Это финальное интервью состояло из 5 последовательных 45-минутных интервью (Back End, Front End, System Design, Company Fit, Hiring Manager).

Бэкэнд

Интервью с серверной частью было с двумя инженерами, полным стеком и серверной частью. Интервью началось с того, что меня спросили о моем прошлом и о том, что я сделал в бэкэнд-пространстве. Затем они задали пару технических теоретических вопросов, например, как мне спроектировать внутренние модели для системы записи на прием/управления клиентами. Это должен был быть вопрос очень высокого уровня. Затем они спросили меня, как я буду находить все уникальные ссылки на веб-странице, а затем возвращать все ссылки в списке, страница может быть картой сайта Google (огромный список). Я ответил на этот вопрос, предложив, чтобы вы могли использовать такой инструмент, как красивый суп, чтобы найти все ссылки, а затем сохранить их в чем-то вроде набора Redis.

Внешний интерфейс

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

Системный дизайн

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

Компания

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

Менеджер по найму

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

Следовать за

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