Работа мечты для программиста

Работа мечты для программиста
Монган Д.,Гижере Э., Киндлер Н.
Жанры: Программирование
Год издания: 2014
Год прочтения: 2020
Моя оценка: Хорошая
Количество прочтений: 1
Количество страниц: 268
Конспект (страниц): 21
Первоначальный язык издания: Английский
Переводы на другие языки: Русский

Общее описание

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

Обзор

Первые почти 50 страниц (а именно 2 главы) сугубо теоретические, содержат много текста из разряда: определись с направлением, проанализируй рынок труда, определись с навыками, определись с видимостью в сети и портфолио. Вторая глава и вовсе вся посвящена подаче заявлений и поиску вакансий.

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

Далее сразу три главы идут о типах данных, а скорее о структурах данных. Рассмотрены связные списки (4-я глава), деревья и графы (5-я глава), массивы и строки (6-я глава). Пожалуй, это одни из самых полезных глав книги. Много примеров (в основном на C++, хотя в главе про строки и массивы ещё и на Java, JavaScript, C#). Сами структуры данных плюс-минус раскрыты неплохо, и основные термины разобраны. На примере списков — это типы списков (односвязные, двусвязные, кольцевые), работа со списком: обход, вставка, удаление, ну и, соответственно, практические задачки по работе со списком. Практически то же самое можно сказать и про деревья и графы, а также строки и массивы. В общем понимании эти темы неплохо описаны, и для тех, кто не работает постоянно, скажем, с графами, материала вполне хватит, чтобы освежить память.

Далее идёт рекурсия и задачи на рекурсию. Здесь особо нечего добавить.

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

Далее идёт раздел о параллельном программировании. Конечно, эта глава не покрывает все возможные варианты достижения параллельного программирования и уж тем более не описывает конкретные реализации каких-то популярных сегодня языков, таких как Go или Kotlin. Однако общие концепции есть, вполне неплохо описаны. Потоки, мониторы и семафоры, взаимные блокировки — всё это здесь есть.

Далее идёт ООП. Раздел буквально на 10 страниц, так что, я думаю, вы и сами понимаете, что невозможно за это рассмотреть хоть как-то нормально ООП даже как концепцию, не говоря уже о привязке к какому-то языку. Конструкторы, деструкторы, наследование, полиморфизм, виртуальные методы, классы и объекты — это то, что авторы успели разобрать.

Далее идут паттерны. Их тут на самом деле тоже не густо. Я бы сказал, их тут почти нет, так как на раздел также отведено очень мало страниц. Из плюсов — разобраны пара простых паттернов, а также перечислены группы паттернов (порождающие, поведенческие, структурные).

Идём дальше. Глава про базы данных. Также небольшого объёма. Как по мне — это вообще один из самых слабых и мало проработанных разделов.

Далее идёт раздел про графику и манипуляцию битами. Не скажу, что я что-то новое узнал в нём, но мне показался этот раздел интересным, так как в повседневной работе такими задачами я не занимаюсь, и это было любопытно почитать.

Далее идут два раздела про головоломки. Если первый — просто задачи на логику из разряда "какая лампочка за какой выключатель отвечает" (очень популярная на просторах интернета задача на логику) или же задача о необходимости переправить через реку (или пропасть) по одному разных животных, которых нельзя оставлять один на один с другими животными (тоже достаточно популярная задача в интернете), то во второй части упор уже идёт на графические головоломки (не стоит путать с одним из прошлых разделов "задачи про графику", так как эти задачи никак не связаны).

Предпоследняя глава — это задачи общего характера. Сюда авторы книг впихнули все возможные задачи и вопросы, не подходящие ни под одну из предыдущих глав. Это вполне технические вопросы. Это вполне логические вопросы, про архитектуру, шифрование, безопасность (хотя, на примере той же безопасности, материала слишком мало — всего пару страниц).

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

Моё мнение

В первую очередь книга полезная для тех, кто хочет войти в IT отрасль или вошел в нее недавно. В книге рассказывается о том, как и где искать работу. Есть тематики, которые помогут подготовить вас к собеседованиям (сложность алгоритма, списки и указатели, реализация деревьев и графов, ООП, паттерны, базы данных, работа с битами и многое другое).

Вверх