Карьера программиста. Как устроиться на работу в Google, Microsoft или другую ведущую IT-компанию

Карьера программиста. Как устроиться на работу в Google, Microsoft или другую ведущую IT-компанию
Автор книги: id книги: 98756     Оценка: 0.0     Голосов: 0     Отзывы, комментарии: 1 769 руб.     (8,24$) Читать книгу Купить и читать книгу Купить бумажную книгу Электронная книга Жанр: Программирование Правообладатель и/или издательство: "Издательство "Питер" Дата публикации, год издания: 2011 Дата добавления в каталог КнигаЛит: ISBN: 978-5-459-01120-3 Возрастное ограничение: 12+ Оглавление Отрывок из книги

Реклама. ООО «ЛитРес», ИНН: 7719571260.

Описание книги

Пятое издание этого мирового бестселлера поможет вам наилучшим образом подготовиться к собеседованию при приеме на работу программистом или руководителем в крупную IT-организацию или перспективный стартап. Основную часть книги составляют ответы на технические вопросы и задания, которые обычно получают соискатели на собеседовании в таких компаниях, как Google, Microsoft, Apple, Amazon и других. Рассмотрены типичные ошибки, которые допускают кандидаты, а также эффективные методики поготовки к собеседованию. Используя материал этой книги, вы с легкостью подготовитесь к устройству на работу в Google, Microsoft или любую другую ведущую IT-компанию.

Оглавление

Гейл Макдауэлл. Карьера программиста. Как устроиться на работу в Google, Microsoft или другую ведущую IT-компанию

Предисловие

Введение

Что-то не так

Мой подход

Моя страсть

От издательства

Часть I. Процесс собеседования

Небольшое вступление

Как выбираются вопросы

График и карта подготовки

Процедура оценки

Неправильные ответы

Дресс-код

10 наиболее частых ошибок

1. Использование компьютера

2. Игнорирование поведенческих вопросов

3. Отказ от псевдоинтервью

4. Попытка зазубрить ответ

5. Решение задачи «в уме»

6. Спешка

7. Грязный код

8. Отказ от проверки

9. Небрежное отношение к исправлению ошибок

10. Отказ от решения

Часто задаваемые вопросы

Нужно ли мне говорить интервьюеру, что я уже знаком с вопросом?

Какой язык программирования следует использовать?

После собеседования мне ничего не сказали. Мне отказали?

Могу ли я попытаться еще раз, если мне отказали?

Часть II. За кулисами

Microsoft

Amazon

Google

Apple

Facebook

Yahoo!

Часть III. Нестандартные случаи

Кандидат-профессионал

Тестеры и SDET

Менеджеры программ и менеджеры продукта

Стартап

Процесс подачи заявления

Виза и разрешение на работу

Резюме

Процесс собеседования

Часть IV. Перед собеседованием

Получаем «правильный» опыт

Налаживаем связи

Правильный круг знакомств

Как построить сильный круг знакомств

Идеальное резюме

Правильный размер

Трудовой стаж

Указывайте только значимые позиции

Проекты

Языки программирования и программные продукты

Часть V. Подготовка к поведенческим вопросам

Поведенческие вопросы

Как подготовиться

Ваши слабые места

Что заставляет вас работать

Какие вопросы нужно задавать интервьюеру

Ответы на поведенческие вопросы

Отвечайте четко, но без высокомерия

Часть VI. Технические вопросы

Подготовка

Как организовать подготовку

Что нужно знать

Таблица степеней двойки

Нужно ли знать все о программировании на C++, Java или других языках

Ответы на технические вопросы

Пять шагов к решению

Шаг 1. Задайте вопросы

Шаг 2. Разработайте алгоритм

Шаг 3. Псевдокод

Шаг 4. Код

Шаг 5. Проверка

Пять подходов к алгоритмизации

Подход 1. Приводим пример

Подход 2. Сопоставление с образцом

Подход 3. Упростить и обобщить

Подход 4. Базовый случай и сборка решения

Подход 5. Мозговой штурм структур данных

Как выглядит хороший код

Структуры данных

Обоснованное многократное использование кода

Модульность

Гибкость и надежность

Проверка

Часть VII. Жизнь после собеседования

Реакция на предложение и на отказ

Сроки принятия решения

Вы отказываетесь от работы

Вам отказали

Вам сделали предложение

Финансовый пакет

Карьерный рост

Стабильность компании

Удовольствие от работы

Переговоры

На работе

Создайте график своего карьерного роста

Устанавливайте прочные отношения

Спросите себя, что вам нужно

Часть VIII. Вопросы собеседования

Структуры данных. Вопросы и советы

1. Массивы и строки

Хэш-таблицы

ArrayList (динамический массив)

StringBuffer (буфер строк)

Вопросы интервью

2. Связные списки

Создание связного списка

Удаление узла из односвязного списка

Метод бегунка

Рекурсия и связные списки

Вопросы собеседования

3. Стек и очередь

Реализация стека

Реализация очереди

Вопросы собеседования

4. Деревья и графы

Потенциальные ловушки

Бинарное дерево vs бинарное дерево поиска

Сбалансировано vs несбалансировано

Полнота дерева

Обход бинарного дерева

Балансировка: красно-черные и АВЛ-деревья

Префиксное дерево

Обход графа

Поиск в глубину

Поиск в ширину

Вопросы собеседования

Концепции и алгоритмы. Вопросы и советы

5. Поразрядная обработка

Расчеты на бумаге

Биты: трюки и факты

Основные задачи: получение, установка, очистка и обновление бита

Извлечение бита

Установка бита

Очистка бита

Обновление бита

Вопросы собеседования

6. Головоломки

Начните говорить

Правила и шаблоны

Балансировка худшего случая

Алгоритмический подход

Вопросы собеседования

7. Математика и теория вероятностей

Простые числа

Делимость

Является ли число простым

Список простых чисел: решето Эратосфена

Теория вероятностей

Вероятность события {A and B}

Вероятность события {A or B}

Независимость событий

Взаимоисключающие события

Обратите внимание!

Вопросы собеседования

8. Объектно-ориентированное проектирование

Как подготовиться к заданиям по ООП

Разработка шаблонов

Singleton

Factory Method

Вопросы собеседования

9. Рекурсия и динамическое программирование

С чего начать

Динамическое программирование

Простой пример динамического программирования: числа Фибоначчи

Рекурсивные и итерационные решения

Вопросы собеседования

10. Сортировка и поиск

Общие алгоритмы сортировки

Алгоритмы поиска

Вопросы собеседования

11. Масштабируемость и ограничения памяти

Пошаговый подход

Что нужно знать: информация, стратегия и проблема

Типичная система

Разделение данных

Пример: найдите все документы, содержащие список слов

Вопросы собеседования

12. Тестирование

Чего ожидает интервьюер

Тестирование реального объекта

Тестирование программного обеспечения

Тестирование функций

Поиск и устранение неисправностей

Вопросы собеседования

Базовые знания. Вопросы и советы

13. C и C++

Классы и наследование

Конструкторы и деструкторы

Виртуальные функции

Виртуальный деструктор

Значения по умолчанию

Перезагрузка операторов

Указатели и ссылки

Ссылки

Арифметика указателей

Шаблоны

Вопросы собеседования

14. Java

Подход к изучению

Ключевое слово final

Ключевое слово finally

Метод finalize

Перегрузка vs переопределение

Java Collection Framework

Вопросы собеседования

15. Базы данных

SQL-синтаксис и его варианты

Денормализованные и нормализованные базы данных

SQL-операторы

Запрос 1: регистрация студента

Запрос 2: размер аудитории

Проектирование небольшой базы данных

Проектирование больших баз данных

Вопросы собеседования

16. Потоки и блокировки

Потоки в Java

Расширение класса Thread

Расширение класса Thread vs реализация Runnable-интерфейса

Синхронизация и блокировки

Методы синхронизации

Синхронизованные блоки кода

Блокировки

Взаимные блокировки и их предотвращение

Вопросы собеседования

Дополнительные задачи

17. Задачи умеренной сложности

18. Задачи повышенной сложности

Часть IX. Решения

Структуры данных: решения

1. Массивы и строки

Структуры данных: решения

2. Связные списки

Структуры данных: решения

3. Стеки и очереди

Структуры данных: решения

4. Деревья и графы

Концепции и алгоритмы: решения

5. Поразрядная обработка

Концепции и алгоритмы: решения

6. Головоломки

Концепции и алгоритмы: решения

7. Математика и теория вероятностей

Концепции и алгоритмы: решения

8. Объектно-ориентированное проектирование

Концепции и алгоритмы: решения

9. Рекурсия и динамическое программирование

Концепции и алгоритмы: решения

10. Сортировка и поиск

Концепции и алгоритмы: решения

11. Масштабируемость и ограничения памяти

Концепции и алгоритмы: решения

12. Тестирование

Базовые знания: решения

13. C и C++

Базовые знания: решения

14. Java

Базовые знания: решения

15. Базы данных

Базовые знания: решения

16. Потоки и блокировки

Дополнительные задачи: решения

17. Задачи умеренной сложности

Дополнительные задачи: решения

18. Задачи повышенной сложности

Благодарности

Об авторе

Отрывок из книги

Дорогой читатель!

Я не HR-менеджер и не работодатель, а всего лишь разработчик программного обеспечения. Именно поэтому я знаю, что может произойти на собеседовании (например, вас попросят быстренько разработать блестящий алгоритм, а затем написать к нему безупречный код). Мне самой давали такие же задания, когда я проходила собеседование в Google, Microsoft, Apple, Amazon и в других компаниях.

.....

Есть много разных способов решить такую задачу.

Неудачная реализация

.....

Добавление нового отзыва

Комментарий Поле, отмеченное звёздочкой  — обязательно к заполнению

Отзывы и комментарии читателей

  

Код в примерах просто ужасен

В данном переводе примеры кода просто ужасные. Код не виделен читабельно. Читать очень тяжело. В оригинале намного лучше.

Смотреть еще отзывы на сайте ЛитРеса
Подняться наверх