У многих из нас в голове возникают вопросы, например, что мне следует изучить для собеседований в Google, Microsoft, Directi, Flipkart и Amazon, если у меня будет достаточно времени.
Что ж, вы должны начать с укрепления своих языковых навыков программирования. Получите хорошее представление о синтаксисе языка и библиотечных методах, предпочтительно Java или C++. Для C++ вам следует запомнить синтаксис основных структур данных из библиотеки STL.
Если у вас есть хорошие знания основ языка. Вам следует перейти к структурам данных и алгоритмам.
Для структур данных и алгоритмов Introduction to Algorithms Thomas H. Cormen является святым Граалем. Каждый начинающий инженер-программист должен прочитать ее один раз.
Вы также можете изучить онлайн-руководства:
Изучая алгоритмы и структуры данных, попробуйте сначала написать код самостоятельно, написав на бумаге или написав код на компиляторе. Вы должны практиковаться в написании кода. Не пытайтесь запомнить код, попробуйте сначала решить проблему. Попробуйте хоть раз понять и реализовать код самостоятельно. Понимая проблему, вы должны проанализировать временную сложность вашего решения в нотации Big O. Эта программа Знай свои сложности! шпаргалка может пригодиться. И постарайтесь оптимизировать временную и пространственную сложность вашего решения. Узнайте разницу между ними (сложность времени и пространства).
Основные структуры данных
- Массивы
- Связанные списки
- Стеки
- Очереди
- Деревья
- Двоичные кучи
- Хэш-карты
- Графики
Основные алгоритмы
- Рекурсия
- Разделяй и властвуй
- Динамическое программирование
- Алгоритм KMP (Knuth Morris Pratt) для поиска строк
- Поиск в глубину (DFS) и поиск в ширину (BFS)
- Минимальное остовное дерево
- Кратчайший путь: а) Дейкстра (один источник) б) Флойд-Уоршалл (все пары)
Подробнее читайте здесь:https://www.aureollabs.com/how-to-prepare-for-coding-interview-of-google-microsoft-amazon-facebook/