Книга «Карьера программиста» основана на опыте практического участия автора во множестве собеседований, проводимых лучшими компаниями. Это квинтэссенция сотен интервью со множеством кандидатов, результат ответов на тысячи вопросов, задаваемых кандидатами и интервьюерами в ведущих мировых корпорациях. Из тысяч возможных задач и вопросов в книгу были отобраны 189 наиболее интересных и значимых. Шестое издание этого мирового бестселлера поможет вам наилучшим образом подготовиться к собеседованию при приеме на работу программистом или руководителем в крупную IT-организацию или перспективный стартап. Основную часть книги составляют ответы на технические вопросы и задания, которые обычно получают соискатели на собеседовании в таких компаниях, как Google, Microsoft, Apple, Amazon и других. Рассмотрены типичные ошибки, которые допускают кандидаты, а также эффективные методики подготовки к собеседованию. Используя материал этой книги, вы с легкостью подготовитесь к устройству на работу в Google, Microsoft или любую другую ведущую 1Т-компанию.
Процесс собеседования.
В большинстве ведущих технических (и многих других) компаний основную часть процесса собеседования составляют вопросы по алгоритмам и программированию. Считайте, что это проверка навыков практического решения задач. Интервьюер старается оценить вашу способность решать алгоритмические задачи, которые еще не встречались вам ранее.
Очень часто все собеседование занимает только один вопрос. Сорок пять минут — не так уж много. Трудно решить за это время несколько разных задач.
В процессе решения постарайтесь рассуждать вслух и объяснить свой ход мыслей. Иногда интервьюер может вступить в разговор, чтобы помочь вам; не сопротивляйтесь. Это нормально; не думайте, что у вас что-то не получается. (Хотя конечно, если подсказки вам не нужны, тем лучше.)
Оглавление.
Предисловие.
Введение.
Что-то пошло не так.
Мой подход.
Моя страсть.
Часть I. Процесс собеседования.
Почему?.
Как выбираются вопросы.
Часто задаваемые вопросы.
Часть II. За кулисами.
Microsoft.
Amazon.
Google.
Apple.
Facebook.
Palantir.
Часть III. Нестандартные случаи.
Профессионал.
Тестеры и SDET.
Менеджеры программ и менеджеры продукта.
Ведущие разработчики и менеджеры.
Стартапы.
Для интервьюеров.
Часть IV. Перед собеседованием.
Получаем «правильный» опыт.
Идеальное резюме.
Часть V. Подготовка к поведенческим вопросам.
Поведенческие вопросы.
Ответы на поведенческие вопросы.
Часть VI. «О» большое.
Аналогия.
Временная сложность.
Пространственная сложность.
Константы.
Исключение второстепенных факторов.
Составные алгоритмы: сложение и умножение.
Амортизированное время.
Сложность Log N.
Сложность рекурсивных алгоритмов.
Часть VII. Технические вопросы.
Как организовать подготовку.
Что нужно знать.
Процесс решения задачи.
Метод оптимизации 1: поиск BUD.
Метод оптимизации 2: интуитивный подход.
Метод оптимизации 3: упрощение и обобщение.
Метод оптимизации 4: базовый случай и расширение.
Метод оптимизации 5: мозговой штурм структур данных.
Неправильные ответы.
Если вы уже знаете ответ.
«Идеальный» язык для собеседований.
Как выглядит хороший код.
Не сдавайтесь!.
Часть VIII. После собеседования.
Реакция на предложение и на отказ.
Предложение работы.
Переговоры.
На работе.
Часть IX. Вопросы собеседования.
1. Массивы и строки.
Хеш-таблицы.
ArrayList и динамические массивы.
StringBuilder.
Вопросы собеседования.
2. Связные списки.
Создание связного списка.
Удаление узла из односвязного списка.
Метод бегунка.
Рекурсия и связные списки.
Вопросы собеседования.
3. Стеки и очереди.
Реализация стека.
Реализация очереди.
Вопросы собеседования.
4. Деревья и графы.
Разновидности деревьев.
Бинарные деревья и бинарные деревья поиска.
Обход бинарного дерева.
Бинарные кучи (min-кучи и max-кучи).
Нагруженные (префиксные) деревья.
Графы.
Список смежности.
Поиск в графе.
Вопросы интервью.
5. Операции с битами.
Расчеты на бумаге.
Биты: трюки и факты.
Поразрядное дополнение и отрицательные числа.
Арифметический и логический сдвиг.
Основные операции: получение и установка бита.
Вопросы собеседования.
6. Головоломки.
Простые числа.
Вероятность.
Начинайте говорить.
Правила и шаблоны.
Балансировка худшего случая.
Алгоритмический подход.
Вопросы собеседования.
7. Объектно-ориентированное проектирование.
Как подходить к решению заданий.
Паттерны проектирования.
Вопросы собеседования.
8. Рекурсия и динамическое программирование.
С чего начать.
Решения рекурсивные и итеративные.
Динамическое программирование и мемоизация.
Вопросы собеседования.
9. Масштабируемость и проектирование систем.
Работа с вопросами.
Проектирование: шаг за шагом.
Масштабируемые алгоритмы: шаг за шагом.
Ключевые концепции.
Дополнительные факторы.
Идеальных систем не бывает.
Пример: найдите все документы, содержащие список слов.
Вопросы собеседования.
10. Сортировка и поиск.
Распространенные алгоритмы сортировки.
Алгоритмы поиска.
Вопросы собеседования.
11. Тестирование.
Чего ожидает интервьюер.
Тестирование реального объекта.
Тестирование программного обеспечения.
Тестирование функций.
Поиск и устранение неисправностей.
Вопросы собеседования.
12. С и C++.
Классы и наследование.
Конструкторы и деструкторы.
Виртуальные функции.
Виртуальный деструктор.
Значения по умолчанию.
Перегрузка операторов.
Указатели и ссылки.
Шаблоны.
Вопросы собеседования.
13. Java.
Подход к изучению.
Перегрузка vs переопределение.
Java Collection Framework.
Вопросы собеседования.
14. Базы данных.
Синтаксис SQL и его варианты.
Денормализованные и нормализованные базы данных.
Команды SQL.
Проектирование небольшой базы данных.
Проектирование больших баз данных.
Вопросы собеседования.
15. Потоки и блокировки.
Потоки в Java.
Синхронизация и блокировки.
Взаимные блокировки и их предотвращение.
Вопросы собеседования.
16. Задачи умеренной сложности.
17. Сложные задачи.
Часть X. Решения.
1. Массивы и строки.
2. Связные списки.
3. Стеки и очереди.
4. Деревья и графы.
5. Операции с битами.
6. Головоломки.
7. Объектно-ориентированное проектирование.
8. Рекурсия и динамическое программирование.
9. Масштабируемость и проектирование систем.
10. Сортировка и поиск.
11. Тестирование.
12. С и C++.
13. Java.
14. Базы данных.
15. Потоки и блокировки.
16. Задачи умеренной сложности.
17. Сложные задачи.
Часть XI. Дополнительные материалы.
Полезные формулы.
Топологическая сортировка.
Алгоритм Дейкстры.
Разрешение коллизий в хеш-таблице.
Поиск подстроки по алгоритму Рабина - Карпа.
АВЛ-деревья.
Красно-черные деревья.
MapReduce.
Дополнительные материалы.
Часть XII. Библиотека кода.
HashMapList<T, Е>.
TreeNode (бинарное дерево поиска).
Linked ListNode (связный список).
Trie и TrieNode.
Часть XIII. Подсказки (скачайте с сайта издательства www.piter.com).
1. Структуры данных.
2. Концепции и алгоритмы.
3. Вопросы, основанные на знаниях.
4. Дополнительные задачи.
Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Карьера программиста, Лакман М.Г., 2020 - fileskachat.com, быстрое и бесплатное скачивание.
Скачать pdf
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России.Купить эту книгу
Скачать - pdf - Яндекс.Диск.
Дата публикации:
Теги: учебник по программированию :: программирование :: Лакман
Смотрите также учебники, книги и учебные материалы:
Следующие учебники и книги:
- Объектно-ориентированный подход, Вайсфельд М., 2020
- Ловушка для багов, Полевое руководство по веб-хакингу, Яворски П., 2020
- Конкурентность в С#, Асинхронное, параллельное и многопоточное программирование, Клири С., 2020
- Классические задачи Computer Science на языке Python, Копец Д., 2020
Предыдущие статьи:
- Python, Искусственный интеллект, большие данные и облачные вычисления, Дейтел П., Дейтел Х., 2020
- Гид по Computer Science для каждого программиста, Спрингер В., 2020
- Java Concurrency на практике, Гетц Брайан, Пайерлс Тим, Блох Джошуа, Боубер Джозеф, Холмс Дэвид, Ли Даг, 2020
- Swift, Основы разработки приложений под iOS, iPadOS и macOS, Усов В., 2021