Найкраща книга для технічного кодування Інтерв'ю Prep

Інтерв’ю з технічним кодуванням є загальновизнаним - майже прикордонна вікторина для тих, хто не готовий. Іноді може бути непростим завданням орієнтуватися у всіх доступних в Інтернеті ресурсах підготовки технічного кодування, і можна поставити запитання: чи існує одна книга / ресурс, яка найкраще готується до співбесід з технічного кодування?

Найкраще , це відносно, звичайно, у цьому випадку. Якщо ви шукаєте книгу, яка навчить вас вирішувати будь-які питання кодування, допоможе вам створити щось на зразок Instagram, яке масштабується до мільярда користувачів і робить ваш бутерброд, поки ви в ньому, то ця книга точно чи не так.

Але для того, щоб відшліфувати ваші технічні відбивні та переконатись, що ви добре підготовлені до вирішення проблем програмування в інтерв’ю, ця книга наближається до нього.

У сьогоднішньому огляді книг я детально розглядаю як хороші, так і погані книги однієї з найпопулярніших книг на Amazon для інтерв’ю з технічним кодуванням: Елементи програмування інтерв’ю (він же EPI , і в іншому це буде називатися таким) цієї статті).

Про що ця книга?

EPI - це книга, яка зосереджена на підготовці до питань співбесіди з технічного програмного забезпечення, які часто задають у технічних компаніях. Якщо ви шукаєте посаду інженера-програміста, ця книга знайде щось для вас.

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

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

Хороший

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

Те, що мені особливо сподобалось:

  • має багато запитань (300+) із детальними відповідями, порівняно з іншою популярною книгою (Cracking The Coding Interview), у якій лише 170+
  • поставляється в 3 різних версіях: 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 зірки в усіх 3 версіях. Статистика така:

На Amazon.com:

3 версії (станом на 12 березня):

  • Python: 169 оцінок 4,3 просп
  • Java: 203 рейтинги 4.6 просп
  • C ++: 436 рейтинги 4.7 просп

Загалом було проведено 808 відгуків.

Деякі відгуки:

".. найкращий алгоритм / структура даних, які я коли-небудь брав" "код високої якості, використовуючи значущі імена змінних" "це книга, яку потрібно мати"

Тепер, чи варто його купувати?

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

Якщо ви хочете, щоб усі структури даних, алгоритми, які вам потрібно знати, були в одній книзі, яка легко читається, тоді EPI - це книга для вас.

Що стосується конструкцій розподілених систем, я рекомендую шукати деінде. Хорошим початком є ​​розробка інтенсивних програм даних.

Я люблю його за глибину та розуміння, і я рекомендую його багатьом студентам, які також відвідують мої курси.

Ресурси, які я рекомендую

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

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

Інтерв’ю з проектування розподілених систем - мій особистий тренерський курс з проектування розподілених систем великого масштабу. Дізнайтеся про те, як розробити такі функції, як Instagram Stories, Groupon, сайти для потокового перегляду фільмів, такі як Netflix у масштабі.