Лучшая книга для подготовки к собеседованию по техническому кодированию

Собеседования по техническому кодированию заведомо сложны - почти на грани викторины для неподготовленных. Иногда бывает сложно ориентироваться во всех доступных в Интернете ресурсах по подготовке к техническому кодированию, и можно спросить: есть ли какая-то одна книга / ресурс, которые лучше всего подходят для собеседований по техническому кодированию?

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

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

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

О чем эта книга?

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

EPI был написан тремя людьми, которые работали в некоторых из самых известных технологических компаний в мире, таких как Facebook, Google, Uber и Microsoft. У авторов очень сильная техническая подготовка, о чем свидетельствует техническая направленность содержания книги.

Сама книга носит технический характер и глубоко погружается в фундаментальную информатику. Типы вопросов технического кодирования широко варьируются от манипуляций со строками до обходов графов. Книга также предлагает конкретные советы и приемы для решения определенных типов проблем с программированием и включает в себя шпаргалку, помогающую решить технические вопросы.

Хорошо

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

Что мне особенно понравилось:

  • имеет много вопросов (300+) с подробными ответами, по сравнению с другой популярной книгой (Cracking The Coding Interview), в которой всего 170+
  • поставляется в трех разных версиях: Java, Python и C ++. Подходит для людей, которые хотят использовать язык по своему выбору
  • есть отличная шпаргалка (глава 4), в которой обобщены все методы и структуры данных, которые вам понадобятся
  • подробно описывает каждую необходимую структуру данных, алгоритмы, которые вы должны знать, и методы, которые вы должны знать, в простом и понятном формате.
  • охватывает соответствующие технические темы, которые вас могут спросить на собеседовании по кодированию, например, что такое TCP / IP, как работает Интернет и как фиксировать отношения между различными объектами при разработке схемы

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

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

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

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

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

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

Короче говоря, EPI - это блокнот, который мне очень хотелось иметь, когда я готовился к техническим собеседованиям. Это книга, которую я подарил бы другу, который хочет подготовиться к техническим собеседованиям - помимо моего самого продаваемого курса собеседования (Acing The Tech Interview), который готовит любого кандидата ко всему опыту собеседования, от подготовки резюме, поведенческих вопросов до того, как творчески решать проблемы кодирования. Классы быстро заполняются, так что забронируйте себе место сегодня.

Плохо

У EPI есть и недостатки. Поскольку книга носит сугубо технический характер, это означает, что основное внимание в ней уделяется вопросам кодирования.

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

Кроме того, в книге подробно рассматриваются структуры данных и алгоритмы, но предоставляется только общий обзор различных других важных концепций, таких как SQL, NoSQL, до такой степени, что он может сбивать с толку из-за отсутствия контекста, как разработать правильная схема для простого приложения и многое другое.

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

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

Подходит ли мне эта книга?

Если у вас есть лишние ~ 40 долларов и большой аппетит к обучению, я бы так сказал.

В среднем книга продается за 36 долларов (существует 3 версии). Эта книга получила высокие оценки на Amazon.com, в среднем 4,53 звезды по всем трем версиям. Статистика следующая:

На Amazon.com:

3 версии (по состоянию на 12 марта):

  • Python: 169 оценок, средн.
  • Java: 203 оценок, 4.6 средн.
  • C ++: 436 оценок 4,7 средн.

Всего отзывов 808.

Некоторые обзоры:

«.. лучший алгоритм / структура данных, которые я когда-либо использовал» «код высокого качества, с использованием значимых имен переменных» «это книга, которую необходимо иметь»

А теперь стоит ли его покупать?

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

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

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

Мне нравится его глубина и понимание, и я рекомендую его многим студентам, которые также посещают мои курсы.

Ресурсы, которые я рекомендую

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

Acing The Technical Interview - мой самый продаваемый курс личного коучинга о том, как проходить технические собеседования. Мы освещаем обзор резюме, собеседование по техническому кодированию, поведенческие вопросы и многое другое.

Acing The Distributed Systems Design Interview - мой личный курс обучения по проектированию крупномасштабных распределенных систем. Узнайте о том, как разрабатывать такие функции, как Instagram Stories, Groupon, сайты потокового видео, такие как Netflix, в любом масштабе.