У многих из нас в голове возникают вопросы, например, что мне следует изучить для собеседований в 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/