Для одного из наших первых обзорных постов мы выбрали замечательную книгу, которую рекомендуем каждому программисту, желающему совершенствоваться и развиваться как профессионал.
Это пятое издание одного из западных бестселлеров среди книг по программированию — Взлом собеседования по программированию: 150 вопросов и ответов на собеседовании по программированию , получивший название в русском издании «Карьера программиста.
Как устроиться на работу в Google, Microsoft или другую ведущую IT-компанию» .
Для IT-книги эта книга имеет совершенно невероятный рейтинг на сайте Amazon (по состоянию на 6 сентября она была №388 в общем книжном рейтинге и №1 в разделе «Компьютеры и технологии»), поэтому я, как куратор этот проект, был просто счастлив, когда «Питер» получил эксклюзивные права на издание этого бестселлера в России.
Немного об авторе книги.
Гейл Лакман - Этот Милый Американская IT-девушка, которая, однако, за время подготовки российского издания успела выйти замуж и обзавестись второй фамилией Макдауэлл.
Гейл несколько лет проводила собеседования с соискателями в Google, Microsoft и Apple, а затем основала собственную компанию CareerCup, которая помогает программистам готовиться к собеседованиям в крупных IT-компаниях.
И, конечно же, Гейл известна еще и как автор книги Cracking Coding Interview, которая уже много лет переиздается на Западе и не покидает вершин книжных чартов бестселлеров.
О предприимчивости Гейл Лакман свидетельствует и тот факт, что она лично выступает издателем собственных книг, и мы даже напрямую с ней договаривались о лицензировании книги в России (в общем, нонсенс для современного издательского бизнеса).
О чем эта книга? По названию может сложиться впечатление, что оно посвящено описанию процесса собеседований и найма в крупных корпорациях: как одеваться, как вести себя, как проходят собеседования в Google или Microsoft и как на каждом из них отклоняют нежелательных кандидатов.
компания.
Не совсем.
Кстати, интересная история: наших коллег из интернет-магазина Ozon тоже смутило название книги, и они поместили ее в раздел «Кадровый учет и делопроизводство», а нам потребовались немалые усилия, чтобы вернуть издание.
в правильную ветку классификатора .
Так что Cracking Coding Interview следует поставить в один ряд с классическими книгами об алгоритмах, которые заставляют программистов думать и совершенствоваться.
Вышеуказанным темам действительно отведено немного места (а именно 50 страниц), но основная и самая ценная часть книги — это почти 400 страниц реальных вопросов и тестовых заданий, которые абитуриенты получают на собеседованиях в самых известных ИТ-компаниях мира.
.
Конечно, эта книга поможет вам, если вы действительно собираетесь на собеседование в Google, но сама по себе она даст любому программисту возможность по-новому взглянуть на свои навыки и свое развитие как профессионала, предлагая не только абстрактные, но и также вполне реальные задачи и решения, которые можно использовать на практике.
Всего в книге содержится 150 задач (и правильных ответов на них!) по таким темам, как ООП, тестирование, рекурсия, деревья и графы, базы данных, потоки и теория вероятностей и т. д. С аналогичным содержанием книги можно ознакомиться по адресу эта ссылка (PDF-файл на сайте издательства).
А для начала предлагаем вам попробовать выполнить одно из тестовых заданий книги из раздела «Задачи повышенной сложности».
Упражнение Напишите метод, который генерирует случайную последовательность из m целых чисел из массива размера n. Все элементы выбираются с равной вероятностью.Ответ из книги будет опубликован в комментариях завтра, 7 сентября, в 18:00. Просим владельцев книг не давать подсказок.
А ниже в качестве примера приведем еще одну задачу из раздела «Рекурсия и динамическое программирование» с правильным ответом.
Упражнение.Реализовать функцию заливки краской, которая используется во многих графических редакторах.
Дана плоскость (двумерный массив цветов), точка и цвет, которым нужно заполнить все окружающее пространство, окрашенное в другой цвет. Решение Прежде всего, давайте представим, как работает метод. Когда мы вызываем PaintFill («нажимаем» кнопку заливки в графическом редакторе), находясь, например, на зеленом пикселе, мы хотим расширить границы.
Мы движемся все дальше и дальше, вызывая PaintFill для окружающих пикселей.
Если цвет пикселя отличается от зеленого, мы останавливаемся.
Вы можете реализовать этот алгоритм рекурсивно: 1 перечисление Цвет { 2 Черный, Белый, Красный, Желтый, Зеленый 3 } 4 5 логическое значение PaintFill(Color[][] screen, int x, int y, Color ocolor, 6 Цвет ncolor) { 7, если (х < 0 || x > = экран[0].
длина || 8 лет < 0 || y > = экран.
длина) { 9 вернуть ложь; 10 } 11 if (screen[y][x] == ocolor) { 12 экран[y][x] = ncolor; 13 PaintFill(экран, x - 1, y, ocolor, ncolor); //левый 14 PaintFill(экран, x + 1, y, ocolor, ncolor); // верно 15 PaintFill(экран, x, y - 1, ocolor, ncolor); // вершина 16 PaintFill(экран, x, y + 1, ocolor, ncolor); // нижний 17 } 18 вернет истину; 19 } 20 21 логическое значение PaintFill(Color[][] screen, int x, int y, Color ncolor){ 22 return PaintFill(screen, x, y, screen[y][x], ncolor); 23 } Обратите внимание на порядок Икс И й в массиве экран[y][x] и помните, что когда вы решаете задачу, связанную с компьютерной графикой, вам нужно использовать этот порядок.
Поскольку x соответствует горизонтальному направлению, эта переменная описывает номер столбца, а не номер строки.
Значение y соответствует номеру строки.
Здесь очень легко допустить ошибку, как во время собеседования, так и во время ежедневного программирования.
- Книга на сайте издательства
- Книга на Озоне
-
Секрет Разблокировки Myspace
19 Oct, 24