От 5 до 23 паттернов для прохождения любого собеседования по программированию

От 5 до 23 паттернов для прохождения любого собеседования по программированию

17 февраля 2022 г.

Эта статья является дополнением к известному документу по подготовке к собеседованию [14 Patterns to Ace Any Coding Interview] (https://hackernoon.com/14-patterns-to-ace-any-coding-interview-question-c5bb3357f6ed) (« 14 шаблонов»), предоставляя более ограниченную отправную точку, более инклюзивное место назначения и обновленное руководство по пути.


14 Patterns полезен в качестве инструмента подготовки к собеседованиям по структурам данных и алгоритмам в стиле Leetcode («DS&A»). Интервью DS&A в стиле Leetcode и [интервью по проектированию системы] (https://www.educative.io/courses/grokking-the-system-design-interview) составляют большую часть более широкой категории, называемой [интервью на белой доске] (https:/ /coderpad.io/blog/whiteboard-interview-guide/), стиль технического собеседования, который традиционно включает физическую доску в контексте личного собеседования. Этот стиль интервью является стандартным для цикла интервью Big Tech (также известного как [Big N] (https://www.netlingo.com/word/big-n-company.php) или Tier 1). Хотя в наши дни большая часть процесса собеседования проводится удаленно, этот термин прижился.


Шаблоны интервью


Эти интервью обычно имеют несколько общих элементов:


  1. Интервьюер просит кандидата написать программу для решения технической задачи, которая напоминает какую-то задачу на Leetcode или во многих случаях прямо взята из этого источника.

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

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

  1. Есть также много других общих черт. Я бы отослал вас к такому ресурсу, как interviewing.io для получения более подробной информации.

Интервью на белой доске вызвали некоторую реакцию. [Репозиторий GitHub Hiring Without Whiteboards] (https://github.com/poteto/hiring-without-whiteboards) — отличный источник информации о компаниях, которые не используют интервью с доской, и информацию о подходах, которые они используют вместо этого.


14 Шаблоны могут быть ошеломляющими для новичка. Это особенно высокий порог входа для нетрадиционного программиста или программиста-самоучки. Можем ли мы каким-либо образом сократить количество вещей, которые необходимо изучить, или, по крайней мере, расставить приоритеты среди этих паттернов? Да! Leetcode показывает частоту, с которой их вопросы были замечены в реальных интервью. Давайте расставим по приоритетам те паттерны, которые чаще всего используются как наиболее ценные и наиболее важные для изучения в первую очередь.



Давайте также убедимся, что наша стратегия основана на нескольких источниках, а не только на 14 паттернах. GeeksforGeeks предоставляет аналогичный ресурс для подготовки к DS&A под названием [10 лучших алгоритмов в вопросах интервью] (https://www.geeksforgeeks.org/top-10-algorithms-in-interview-questions/). Совет GeeksforGeeks пересекается с 14 паттернами, поэтому у нас, по сути, есть 10 алгоритмов, рекомендованных обоими источниками, и 4 паттерна, рекомендованных только в рамках 14 паттернов. Примечательно, что статья GeeksforGeeks была предоставлена ​​мне Uber для подготовки к официальному интервью.


GeeksforGeeks продолжает группировать свои 10 алгоритмов в 8 тем. Мы можем использовать данные о частоте Leetcode, чтобы исключить две наименее распространенные темы. Кроме того, я исключаю тему динамического программирования, основываясь на консультациях с карьерными коучами крупных технологических компаний на interviewing.io и подкрепленных дискуссиями на Blind. Динамическое программирование вопросы постепенно устаревают в Big Tech, поскольку известно, что они отнимают много времени и дают плохой сигнал о кандидате. Качество во время интервью.


В частности, мы исключаем эти три малозначительные темы:


  1. Теория чисел

  1. Битовые манипуляции

  1. Динамическое программирование

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


  1. Графики

  1. Связанные списки

  1. Алгоритмы сортировки и поиска

  1. Алгоритмы дерева

  1. Работа со строками и массивами

Как человек, готовящийся к DS&A, я бы начал с этих пяти. Найдите в Leetcode три простых вопроса по каждой теме. Выполняйте одну тему в день. Затем используйте The Blind 75, чтобы усилить эти же темы. После исключения малоценных тем из списка слепых 75 у нас осталось 7 высокоценных тем. Эти темы на самом деле ничем не отличаются от топ-5 паттернов, просто они сгруппированы немного по-другому:


  1. Массив

  1. График

  1. Интервал

  1. Связанный список

  1. Матрица

  1. Струна

  1. Дерево

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


Отличный ресурс, о котором я говорю, это [инструмент шаблонов Leetcode от Шона Прашада] (https://seanprashad.com/leetcode-patterns/). Этот инструмент получает восемь дополнительных шаблонов путем анализа Blind 75 и [Grokking the Coding Interview] (https://www.educative.io/courses/grokking-the-coding-interview), два других хорошо зарекомендовавших себя ресурса для подготовки к интервью DS&A.


Последние мысли


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


  1. Изучите 5 лучших паттернов за 1-2 недели.

  1. Изучите 7 ключевых паттернов от Blind 75 еще за 1-2 недели.

  1. Освоить вышеуказанные навыки до среднего уровня еще за 1-2 недели.

  1. Обратите внимание, что Топ-5 и Топ-7 существенно перекрываются, поэтому на этом шаге можно выполнить не более 5 задач.

  1. Расширить известные паттерны до 14 паттернов еще через 2-4 недели.

  1. Расширить известные паттерны до 23 паттернов еще через 4-6 недель.

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

  1. Только на этом этапе я бы подумал о том, чтобы практиковать трудные вопросы.

Давайте считать Топ-5 и Топ-7 паттернов базовыми паттернами. Как только вы освоитесь на среднем уровне с этими вопросами, может быть полезно попробовать эти два метода обучения, поскольку вы продолжаете учиться:


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

  1. Экспериментируйте с тем, что вам подходит! Лично я следую «правилу 20 минут», когда я ищу решение, если я неудовлетворен своим прогрессом после 20 минут работы над проблемой.

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


Сколько времени нужно учиться перед собеседованием? Я думаю, что собеседования сами по себе являются отличной практикой, и я не решаюсь требовать слишком многого от блокирующего обучения перед тем, как начать интервью. Откровенно говоря, освоение 23 паттернов на сложном уровне не кажется необходимым даже мне на уровне Senior/Principal, и на это могут уйти годы.


Давайте исключим 3 малозначительные темы из 14 паттернов и назовем оставшиеся 11 паттернов. Какую бы проблему вы ни поставили, давайте постараемся решить ее за 20 минут. Имея в виду этот контекст, вот некоторые из моих рекомендаций по уровням работы:


  1. Начальный/младший уровень: чувствуйте себя уверенно, решая простой из 7 лучших паттернов за 20 минут.

  1. SWE II-III:

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

  1. Чувствуйте себя комфортно, решая любой простой и умеренно комфортно решая средний из 11 лучших паттернов.

  1. Чувствовать себя довольно комфортно (вероятность успеха выше 25%), решая сложный из 11 лучших паттернов за 40 минут.

  1. Рассмотрите возможность обучения с помощью такого сервиса, как интервьюирование.io, или практикуйтесь, пока не получите зеленый свет от другого действующего инженера Big Tech.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE