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

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

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

Одним из самых известных руководств по подготовке к собеседованиям по программированию является Cracking the Coding Interview Гейл Лаакманн Макдауэлл. Наполненный более чем 150 вопросами и решениями по программированию, он, вероятно, является одним из «обязательных» при подготовке к предстоящей задаче кодирования. В дополнение к техническим решениям книга также предлагает общие интервью. Хотя ее популярность может означать, что вы не увидите ни одного из этих конкретных вопросов в интервью, нет сомнений, что она все еще может быть бесценным оружием в вашем растущем арсенале кодирования. инструменты для подготовки к испытаниям.

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

Последний из инструментов для подготовки к написанию кода, о котором мы поговорим, — это Advent of Code, с которым у меня есть личный опыт. В отличие от других источников в этом списке, я наткнулся на этот ресурс через сообщение Reddit о, как вы уже догадались, подготовке к интервью. Каждый день в декабре в полночь выпускаются новые логические головоломки в рамках рождественской истории, которые постепенно усложняются до окончания события 25 декабря. Автор задач, Эрик Вастл, делает все возможное, чтобы погрузить программистов в историю, которую он создал:

В ночь перед Рождеством один из эльфов Санты звонит вам в панике. «Принтер сломался! Мы не можем напечатать список непослушных или хороших!» К тому времени, как вы доберетесь до 17-го подвала, до полуночи останется всего несколько минут. «У нас большая проблема», — говорит [эльф]. «В этой системе должно быть почти 50 ошибок, но ничто другое не может напечатать список. Встаньте на эту площадь, быстро! Нет времени объяснять; если вы сможете убедить их платить вам звездами, вы сможете…» Она дергает за рычаг, и мир становится размытым.

Когда ваши глаза снова могут сфокусироваться, все кажется более пиксельным, чем раньше. Должно быть, она отправила тебя внутрь компьютера! Вы проверяете системные часы: 25 миллисекунд до полуночи. За это время вы сможете собрать все 50 звезд к 25 декабря.

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