Эта книга базируется на опыте практического участия автора во множестве собеседований, проводимых лучшими компаниями. Это квинтэссенция сотен интервью со множеством кандидатов, результат ответов на тысячи вопросов, задаваемых кандидатами и интервьюерами в ведущих мировых корпорациях. Из тысяч возможных задач и вопросов в книгу были отобраны 189 наиболее интересных и значимых.
Очередное собеседование обернулось разочарованием... в очередной раз. Никто из десяти кандидатов не получил работу. Может быть, мы были слишком строги? Несмотря на свой ум, кандидат с трудом справлялся с поставленными задачами. Более успешные кандидаты быстро разобрались с первым вопросом, который был построен на известной задаче, а у моего студента возникли проблемы с разработкой алгоритма. Когда он наконец-то осилил алгоритм, то не учел возможность оптимизации для других сценариев. Когда дело дошло до написания кода, он допустил множество ошибок. Это был не худший кандидат, но все видели, как ему далеко до победного результата.
В данной книге основное внимание уделено задачам алгоритмизации, программирования и дизайна. Почему? Потому что ответы на •поведенческие» вопросы могут быть такими же разнообразными, как и ваше резюме. И хотя в некоторых фирмах задают вопросы на эрудицию (например, •Что такое виртуальная функция?»), навыки, полученные в ходе подготовки к таким вопросам, ограничены весьма узкими областями. Я расскажу и о таких вопросах, но прежде всего я хотела бы уделить внимание более сложным вещам.
В большинстве ведущих технических (и многих других) компаний основную часть процесса собеседования составляют вопросы по алгоритмам и программированию. Считайте, что это проверка навыков практического решения задач. Интервьюер старается оценить вашу способность решать алгоритмические задачи, которые еще не встречались вам ранее.
Предисловие 11
Введение 12
Что-то пошло не так 12
Мой подход 13
Моя страсть 13
Часть I. Процесс собеседования 14
Часть II. За кулисами 19
Часть III. Нестандартные случаи 27
Часть IV. Перед собеседованием 37
Часть V. Подготовка к поведенческим вопросам 41
Часть VI. «О» большое 47
Часть VII. Технические вопросы 56
Часть VIII. После собеседования 72
Часть IX. Вопросы собеседования 78
1. Массивы и строки 79
2. Связные списки 84
3. Стеки и очереди 88
4. Деревья и графы 92
5. Операции с битами 105
6. Головоломки 111
7. Объектно-ориентированное проектирование 120
8. Рекурсия и динамическое программирование 125
9. Масштабируемость и проектирование систем 133
10. Сортировка и поиск 145
11. Тестирование 152
12. C и C++ 159
13. Java 167
14. Базы данных 171
15. Потоки и блокировки 177
16. Задачи умеренной сложности 185
17. Сложные задачи 190
Часть X. Решения 196
1. Массивы и строки 197
2. Связные списки 214
3. Стеки и очереди 234
4. Деревья и графы 248
5. Операции с битами 286
6. Головоломки 299
7. Объектно-ориентированное проектирование 317
8. Рекурсия и динамическое программирование 355
9. Масштабируемость и проектирование систем 387
10. Сортировка и поиск 415
11. Тестирование 437
12. С и C++ 443
13. Java 456
14. Базы данных 465
15. Потоки и блокировки 472
16. Задачи умеренной сложности 488
17. Сложные задачи 560
Часть XI. Дополнительные материалы 665
Часть XII. Библиотека кода 683
Часть XIII. Подсказки (скачайте с сайта издательства www.piter.com) 689
1. Структуры данных 690
2. Концепции и алгоритмы 699
3. Вопросы, основанные на знаниях 713
4. Дополнительные задачи 716
Название: Карьера программиста
Автор: Лакман Макдауэлл Гейл
Год: 2020
Жанр: программирование
Серия: Библиотека программиста
Издательство: Питер
Язык: Русский
Формат: pdf
Качество: pdf
Страниц: 690
Размер: 86 MB
Скачать Лакман Макдауэлл Гейл - Карьера программиста (2020)