Книга «Карьера программиста. 6-е издание»
Привет, Хаброжители! У нас вышло 6-ое издание книги Гэйл Лакман Макдауэлл:
Книга «Карьера программиста» основана на опыте практического участия автора во множестве собеседований, проводимых лучшими компаниями. Это квинтэссенция сотен интервью со множеством кандидатов, результат ответов на тысячи вопросов, задаваемых кандидатами и интервьюерами в ведущих мировых корпорациях. Из тысяч возможных задач и вопросов в книгу были отобраны 189 наиболее интересных и значимых. Шестое издание этого мирового бестселлера поможет вам наилучшим образом подготовиться к собеседованию при приеме на работу программистом или руководителем в крупную IT-организацию или перспективный стартап. Основную часть книги составляют ответы на технические вопросы и задания, которые обычно получают соискатели на собеседовании в таких компаниях, как Google, Microsoft, Apple, Amazon и других. Рассмотрены типичные ошибки, которые допускают кандидаты, а также эффективные методики подготовки к собеседованию. Используя материал этой книги, вы с легкостью подготовитесь к устройству на работу в Google, Microsoft или любую другую ведущую IT-компанию.
Предисловие
Я (Гэйл Лакман Макдауэлл) не HR-менеджер и не работодатель, а всего лишь разработчик программного обеспечения. Именно поэтому я знаю, что может произойти на собеседовании (например, вас попросят быстренько разработать блестящий алгоритм, а затем написать к нему безупречный код). Мне самой давали такие же задания, когда я проходила собеседование в Google, Microsoft, Apple, Amazon и в других компаниях.
Случалось мне быть и по другую сторону баррикад — я проводила собеседования, просматривала стопки резюме соискателей, занимаясь подбором персонала. Я оценивала то, как они решали — или пытались решать — сложные задачи. Я спорила в комитете по набору персонала Google, достаточно ли хорошо показал себя кандидат для получения работы. Именно поэтому я с полной уверенностью могу утверждать, что мне знакомы все тонкости процесса найма, потому что я неоднократно прошла его полностью.
Если вы читаете эту книгу, то это означает, что вы собираетесь пройти собеседование завтра, на следующей неделе или через год. И я постараюсь укрепить ваше понимание основ компьютерной теории, а затем покажу, как применять их для успешного прохождения собеседований.
В 6-м издании книги материал 5-го издания был дополнен более чем на 70%: дополнительные вопросы, обновленные решения, введения к главам, новые стратегии алгоритмов, подсказки ко всем задачам и другие материалы. Обязательно загляните на сайт CrackingTheCodingInterview.com, там вы можете пообщаться с другими соискателями и получить новую информацию. Навыки, которые мы будем развивать, принесут огромную пользу. Хорошая подготовка позволит вам расширить ваши технические и коммуникативные способности, а это никогда не бывает лишним. Внимательно прочитайте вводные главы. Возможно, именно приведенный в них материал сыграет ключевую роль в принятии решения о вашем найме на работу.
И помните: собеседование будет сложным! В свое время (в период моей работы в Google) я видела многих интервьюеров, одни из них задавали «легкие» вопросы, а другие — «сложные». И знаете что? Простые вопросы вовсе не означали, что кандидату будет проще получить работу. Главное — не безупречные ответы на вопросы (такое бывает очень редко!). Главное, чтобы ваш ответ был лучше, чем у других кандидатов. И не паникуйте, если вам достался сложный вопрос, — те, кто его задают, знают, что вопрос сложен и не ждут от вас идеального ответа.
Введение
Что-то пошло не так
Очередное собеседование обернулось разочарованием… в очередной раз. Никто из десяти кандидатов не получил работу. Может быть, мы были слишком строги? Я была особенно огорчена: мы отказали одному из моих кандидатов. Мой бывший студент. Тот, кого я рекомендовала. У него был достаточно высокий средний балл в Вашингтонском университете — одной из лучших школ мира по компьютерным дисциплинам, — и он активно занимался проектами с открытым кодом. Он был энергичен, сообразителен, обладал творческим мышлением, упорно трудился и был компьютерным фанатом в хорошем смысле этого слова.
Но я была вынуждена согласиться с мнением других членов комиссии: он показал себя не лучшим образом. Даже если бы сыграла свою роль моя рекомендация, моему ученику все равно отказали бы на более поздних этапах отбора. Слишком много было «красных» карточек.
Несмотря на свой ум, кандидат с трудом справлялся с поставленными задачами. Более успешные кандидаты быстро разобрались с первым вопросом, который был построен на известной задаче, а у моего студента возникли проблемы с разработкой алгоритма. Когда он наконец-то осилил алгоритм, то не учел возможность оптимизации для других сценариев. Когда дело дошло до написания кода, он допустил множество ошибок. Это был не худший кандидат, но все видели, как ему далеко до победного результата.
Через пару недель он позвонил мне, а я не знала, что сказать. Нужно стать еще умнее? Дело было не в этом, я знала, что у него блестящий ум. Научиться лучше программировать? Нет, его навыки были не хуже, чем у других программистов, которых я знала.
Он тщательно готовился, как и большинство кандидатов. Он изучил классический учебник Кернигана и Ричи, он прочитал CLRS ((Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн. Алгоритмы. Построение и анализ). Он может описать в подробностях множество способов балансировки дерева и умеет делать на C такое, на что не осмелится ни один нормальный программист.
Мне пришлось сказать ему горькую правду — книжного академического образования недостаточно. Книги — это замечательно, но они не помогут вам пройти собеседование. Почему? Подскажу: интервьюеры не видели красно-черных деревьев со времен своего обучения в университете. Чтобы успешно пройти собеседование, нужно готовиться на реальных вопросах, встречающихся на собеседованиях. Нужно решать реальные задачи и изучать встречающиеся закономерности. Главное — разработка новых алгоритмов, а не запоминание существующих задач.
Книга «Карьера программиста» основана на опыте моего практического участия во множестве собеседований, проводимых лучшими компаниями. Это квинтэссенция сотен интервью с множеством кандидатов, результат ответов на тысячи вопросов, задаваемых кандидатами и интервьюерами в ведущих мировых корпорациях. В эту книгу из тысяч возможных задач и вопросов были отобраны 189 наиболее интересных.
Мой подход
В данной книге основное внимание уделено задачам алгоритмизации, программирования и дизайна. Почему? Потому что ответы на «поведенческие» вопросы могут быть такими же разнообразными, как и ваше резюме. И хотя в некоторых фирмах задают вопросы на эрудицию (например, «Что такое виртуальная функция?»), навыки, полученные в ходе подготовки к таким вопросам, ограничены весьма узкими областями. Я расскажу и о таких вопросах, но прежде всего я хотела бы уделить внимание более сложным вещам.Моя страсть
Преподавание — моя страсть. Мне нравится помогать людям совершенствоваться и узнавать новое. Свой первый «официальный» преподавательский опыт я получила в колледже Пенсильванского университета на должности ассистента преподавателя, это был курс информатики. Как техническому специалисту Google, мне всегда нравилось обучать и курировать новые кадры. Я даже использовала свои 20% времени для преподавания двух новых курсов информатики в Вашингтонском университете.
Прошли годы. Теперь я снова занимаюсь преподаванием информатики, но на этот раз с более конкретной целью — для подготовки технических специалистов к приему на работу. Я видела их ошибки и те проблемы, с которыми они сталкиваются, и разработала методы и стратегии для их преодоления.
Более подробно с книгой можно ознакомиться на сайте издательства
Оглавление
Отрывок
Для Хаброжителей скидка 25% по купону — Макдауэлл
P.S Книга доступна только в бумажном виде, в данный момент ведутся переговоры по получению элеронных прав. Ориентировочно в цифровом виде книга будет в продаже через 1,5–2 месяца. Если все сложится удачно, всем кто купит бумажную версию — элеронная копия придет бесплатно на e-mail, указанный при регистрации.
На сегодняшний момент, при оплате 6-го издания, на e-mail придет элеронная версия предыдущего издания книги.