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

Хорошо! Обещаю сделать максимально кратко и лаконично! Название говорит само за себя. Просто чтобы было понятно, что гигантская технологическая компания относится к таким компаниям, как Google, Meta, Apple и т. д. Большинство советов и моментов, изложенных в этой статье, основаны на моем (недавнем) опыте. Я постараюсь кратко и систематизированно изложить все детали, которые мне хотелось бы знать перед интервью. Я должен сделать это заявление об отказе от ответственности, что информация здесь не является полностью точной для каждого интервью в каждой компании. У разных компаний есть свои стратегии проведения собеседований с кандидатами, но, согласно моему опыту и многим другим (которые вы можете найти с помощью простого поиска в Google), для всех них существует определенная закономерность. Итак, я предлагаю, помимо чтения этой статьи, обратиться к другому (более специфичному для компании) опыту, который вы можете найти в Интернете.

TL;DR Моя история началась около 6 месяцев назад, когда я решил сменить работу. До моей нынешней работы я в основном работал в малых и средних компаниях. Их процессы собеседования были несколько проще, чем в крупных технологических компаниях. На этот раз я искал работу в технологическом гиганте в качестве инженера по машинному обучению (ML). При поиске того, как подготовиться к таким собеседованиям, я понял, что, хотя я выполнял проекты машинного обучения как в промышленности, так и в академических кругах, было много аспектов, которые волнуют таких технологических гигантов и требуют, чтобы вы знали как будущий инженер машинного обучения (если честно Я впервые осознал это, когда со мной связался рекрутер в Meta через LinkedIn, после первого телефонного скрининга она прислала мне подготовительный материал, и я понял ОМГ! перейти от ОТСУТСТВИЯ на собеседовании к ПРИГЛУШЕНИЮ!

Что ожидать?

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

Теперь давайте подробнее рассмотрим, чего вам следует ожидать. Мне нравится делить весь процесс собеседования на 4 этапа:

Этап 1 — Начальное знакомство:

Здесь либо вы отправляете свое резюме рекрутеру, подающему заявку на определенную вакансию в компании, либо рекрутер связывается с вами напрямую, потому что они видели ваш профиль, скажем, в LinkedIn и рассматривают вас как потенциального кандидата на работу. открытие в компании. Помните, что на этом этапе вы будете разговаривать с определенным рекрутером из этой компании (рекрутеры сами являются сотрудниками, как и все остальные). Честно говоря, на этом этапе не так много, кроме очень короткого телефонного скрининга (обычно 15 минут), когда рекрутер звонит вам и задает кучу вопросов о вашем прошлом опыте, ваших областях интересов и объяснении того, что влечет за собой роль. . Рекрутер также расскажет вам об остальной части процесса собеседования и (возможно) отправит вам электронное письмо, содержащее некоторые видеоролики YouTube, ссылки, файлы и другие материалы, которые могут помочь вам на протяжении всего процесса собеседования (см. этап 2).

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

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

Этап 2 — Технический скрининг:

Как упоминалось ранее, после телефонного скрининга рекрутер отправит вам электронное письмо, содержащее некоторые материалы для подготовки к следующему собеседованию, которое обычно занимает 45–60 минут технического скрининга. Рекрутер также попросит вас сообщить ему/ей дату/время вашей доступности для этого собеседования. Обычно они дают вам срок от 2 до 6 недель с даты проверки телефона, чтобы вы могли подготовиться к этому собеседованию. Вы можете выбрать свои возможности, чтобы быть уверенными в своей производительности на этом этапе. Но как насчет контекста этого технического скрининга, требующего большой подготовки?

Технический скрининг на этом этапе почти наверняка не имеет ничего общего с машинным обучением. Это будет просто сессия решения 1-2 вопросов по программированию. Основное внимание будет уделено следующим моментам:

  • Методы решения проблем
  • Алгоритмическое мышление
  • Знакомство со структурами данных (например, BST, связанные списки, куча и т. д.)
  • Анализ кода с точки зрения нотации O
  • Насколько вам комфортно с выбранным вами языком программирования

Я думаю, что теперь, когда я объяснил, в чем будет заключаться контекст этого технического скрининга, вы начали понимать, почему вам нужно где-то между 2–6 неделями подготовки! Если нет, позвольте мне объяснить это вам из моего собственного взгляда и опыта.

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

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

Этап 3 — Цикл интервью:

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

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

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

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

Теперь о содержании цикла интервью. Причина, по которой этот этап называется «петлей», заключается в том, что он состоит из 4–5 сессий интервью, каждая по 45–60 минут, каждая из которых посвящена определенному аспекту работы инженера по машинному обучению. Часто одно или два из этих интервью являются сеансами программирования, такими же, как тот, который мы объясняли на этапе 2. Вы можете задаться вопросом, почему еще два сеанса того же интервью у вас уже были?! Честно говоря, я думаю, что единственная причина заключается в том, что способность разрабатывать эффективный код является очень важным навыком любого инженера-программиста (включая инженеров по машинному обучению). Однако я заметил, что тип проблем, с которыми вы сталкиваетесь в этом раунде, немного сложнее, чем первоначальный технический скрининг. Однако содержание остается прежним, и ваша стратегия (которую мы обсудим далее в этой статье) должна быть такой же. Вы просто должны видеть больше проблем и должны быть немного более творческими в их решении, думая нестандартно. Опять же, эти два интервью (обычно) не имеют ничего общего с ML, скорее, просто кодирование и решение проблем

Из остальных 2-3 интервью одно точно полностью посвящено ОД. Не ожидайте, что на этом собеседовании вы столкнетесь со статическими жесткими вопросами, такими как, например, объясните алгоритм K-средних и как он работает (кстати, если вы хотите узнать об алгоритмах k-средних, вот ссылка на глубокое введение!). Вместо этого вы столкнетесь с вопросом, подобным следующему:

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

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

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

Были ли у вас когда-нибудь разногласия с вашим менеджером? Как вы справиться с этим?

Я напишу о том, как подготовиться к этому интервью. Однако самое важное, о чем следует помнить, это то, что на вопросы, с которыми вы столкнетесь в этом интервью, не может быть правильного ответа. Разные люди по-разному относятся к условиям труда. Таким образом, рекрутер не ждет от вас правильного ответа, а пытается оценить, подходит ли ваша личность для компании и ее культуры. Конечно, некоторые ответы неприемлемы (например, представьте, что в ответ на вопрос выше вы говорите, что на самом деле кричите на своего менеджера!!), но здесь нет единственно правильного ответа на вопросы. Вот некоторые из распространенных вопросов, с которыми вы можете столкнуться на этом этапе:

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

Были ли у вас разногласия с кем-либо из ваших коллег? Как вы справиться с этим?

Вы когда-нибудь терпели неудачу в проекте или задаче? Чему вас научила эта неудача?

Как вы отреагируете, если кто-то из коллег причинит вам дискомфорт на рабочем месте?

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

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

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

Как подготовиться и дополнительные советы

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

Этап 1 — Начальное знакомство:

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

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

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

Этап 2 — Технический скрининг

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

Вы можете начать процесс подготовки, освежив память по таким предметам, как структуры данных и алгоритмы. Более конкретно:

  • Структуры данных: деревья, бинарные деревья, бинарное дерево поиска (BST), связанные списки, двусвязные списки, очереди, приоритетные очереди, стеки, красно-черное дерево, сбалансированное бинарное дерево, хэш-карты, хеш-таблицы.
  • Алгоритмы: поиск (бинарный поиск, линейный поиск, сортировка (пузырьковая сортировка, сортировка выбором, сортировка вставками, сортировка кучей, сортировка слиянием), поиск в глубину (DFS), поиск в ширину (BFS), обход дерева (по порядку, после -заказ, предварительный заказ), динамическое программирование (необязательно, но настоятельно рекомендуется).
  • Анализ сложности алгоритмов (как времени, так и пространства в терминах нотации O).

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

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

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

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

Во время интервью: я думаю, что хочу дать свои подсказки для этой части в виде списка:

  • Совет 1: Сохраняйте спокойствие. Возьмите с собой на собеседование чашку кофе, чая или воды, чтобы успокоиться, если это необходимо.
  • Совет 2: Не пытайтесь вспомнить решения из прошлого. Это не сработает, поскольку вероятность того, что вы столкнетесь с вопросом, который вы уже видели, довольно мала. Вместо этого сосредоточьтесь на проблеме, с которой вы столкнулись, и попытайтесь распознать любую закономерность. Точно так же, как и с любым другим вопросом по практике программирования.
  • Совет 3: не спешите с кодированием и решением вопроса. Вместо этого задайте уточняющие вопросы интервьюеру. Попробуйте определить крайние случаи. Задайте как можно больше вопросов, чтобы сделать вопрос кристально ясным. Довольно часто интервьюеры намеренно дают неясное описание вопроса. Они хотят увидеть, относитесь ли вы к тому типу людей, которые анализируют вопрос и пытаются прояснить его, прежде чем перейти к решению, или нет. Это очень важно.
  • Совет 4. Прежде чем переходить к программированию, попробуйте перенести свое решение и мысли на бумагу (или на виртуальную доску). Объясните ход ваших мыслей интервьюеру (думайте вслух!). Во-первых, потому что это позволяет им лучше понять ваше решение. Во-вторых, это позволяет им дать вам правильную подсказку (например, если вы застряли или может быть улучшение вашего решения). Кроме того, это показывает интервьюеру, что вы можете донести свою мысль до других (функция для любого члена команды). Опять же, это очень важно.
  • Совет 5. Пытаясь найти решение, вы должны отдавать предпочтение рабочему решению, а не оптимальному решению. Конечно, идеально, если вы можете предложить оптимальное решение. Но часто попытка дать наилучшее оптимальное решение с первой попытки невозможна. Сначала вы должны дать работающее решение, а затем вы можете работать с интервьюером, чтобы улучшить его (например, улучшить временную сложность вашего алгоритма). Очень часто люди застревают и теряются в вопросе просто потому, что хотят немедленно дать наилучшее возможное решение, вместо этого застревают вообще без какого-либо рабочего решения.
  • Совет 6: Не отвлекайтесь, если интервьюер какое-то время молчит. Это в основном потому, что они принимают к сведению во время интервью. Не стесняйтесь и не думайте, что делаете что-то не так. Просто сосредоточьтесь на предоставлении решения.
  • Совет 7: Практикуйтесь в анализе вашего алгоритма с точки зрения пространственно-временной сложности. Это очень важно, поскольку интервьюеры будут задавать дополнительные вопросы, основываясь на вашем ответе на вопрос «Какова временная сложность вашего алгоритма?»
  • Совет 8: Если вы застряли на каком-то этапе решения вопроса, попросите подсказки у вашего интервьюера. Это неплохо. Даже самые опытные программисты могут столкнуться с проблемой. На самом деле, интервьюеры хотят видеть, что вам достаточно комфортно задавать вопросы, когда вы застряли. Опять же, это важная черта командного игрока.
  • Совет 9: Обычно в конце собеседования интервьюер дает вам 5 минут, чтобы задать ему любой вопрос, который вы хотите. Используйте это время и задайте вопрос о работе, сколько есть команд, чем они занимаются, над чем работает новая компания и т. д. Это покажет интервьюеру, что вы с энтузиазмом относитесь к работе и интересуетесь тем, чем вы занимаетесь. компания занимается. Не будьте пассивными на этом этапе.

Этап 3 – Цикл интервью

Как упоминалось ранее, цикл собеседований состоит из 4–5 интервью, два из которых представляют собой просто технический скрининг (см. предыдущий этап). Поэтому подготовка к этим двум собеседованиям точно такая же, как упоминалось выше. Поэтому давайте поговорим об интервью по дизайну системы ML и поведенческом в двух отдельных разделах:

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

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

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

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

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

  • Нейронные сети и их разновидности (плотные, сверточные, рекуррентные, автоэнкодеры и т. д.)
  • Алгоритмы оптимизации (например, SGD, Adam, RMSprop и т. д.)
  • Трансформеры и механизм внимания.

Также очень важным плюсом является знакомство с новейшими технологиями и алгоритмами. Например, очень полезно знать такие технологии, как BERT или GPT3, и то, как их можно применять к различным задачам, начиная от NLP и заканчивая обработкой звука. Для обработки изображений это может быть U-Net или MobileNet.

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

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

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

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

Какие типы данных доступны для каждой публикации событий?

Какие типы данных доступны для каждого человека (например, возраст, пол и т. д.)

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

Наши данные предварительно обработаны?

Есть ли у нас ограничение на потребление энергии/памяти?

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

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

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

Поведенческое интервью:

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

Раньше я записывал по две истории для каждой из следующих категорий:

  • Неудача/ошибка в проекте и извлеченные уроки (также можно спросить, как бы вы по-другому сделали проект, чтобы сделать его успешным).
  • Успех в проекте или проектах, которыми я особенно горжусь (те же истории из этой категории можно также использовать в ответе на вопрос «опишите время/проект, в котором вы преуспели»).
  • Конфликт/разногласие с менеджером.
  • Конфликт/несогласие с коллегой.
  • Пример командной работы.

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

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

Последнее примечание

Я упомянул, что у вас может быть 5 интервью во время цикла интервью. Тем не менее, я говорил только о 4 типах интервью на данном этапе. Это потому, что 5-е собеседование может сильно отличаться от одной компании к другой. У некоторых могут быть очень специализированные интервью об определенном типе приложения ML (например, о языковом моделировании). Поэтому я не могу предоставить здесь много информации. Однако рекрутер предоставит вам достаточно информации и ресурсов, если состоится пятое собеседование.

Ресурсы:

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

  • Программирование и решение проблем:

Гики для гиков

Литкод

Хакерранк

40 вопросов для проверки дата-сайентиста по машинному обучению

Суперисследование алгоритма и структуры данных

Учебник FreeCodeCamp по структурам данных

Взлом интервью по программированию (приобретается на Amazon)

  • Дизайн системы машинного обучения

Проектирование систем машинного обучения (приобретается на Amazon)

Стэнфордский дизайн системы машинного обучения

Книга глубокого обучения

Вероятностное машинное обучение

  • Поведенческий

Метод интервью STAR

Поведенческие вопросы интервью

Другие вопросы поведенческого интервью

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