Поскольку 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.