Самый часто задаваемый вопрос, с которым я сталкиваюсь, звучит так: «Как ты взломал Google и как я тоже могу это сделать?» Пройдя путь от стремления попасть в ведущие компании до их взлома, вот мой взгляд на то, как следует готовиться.

Любая компания, нанимающая на технические должности, такие как разработчики/инженеры программного обеспечения, в основном обращает внимание на навыки решения проблем, предметные знания и производительность (оценки, проекты).

Общий процесс найма в отрасли включает в себя два основных этапа: онлайн-тест по кодированию, за которым следуют собеседования.

Вот схема из пяти шагов, которая поможет вам успешно пройти раунды найма технических специалистов!

  1. Изучите любой язык программирования (предпочтительно C++/JAVA/Python) и основы временной и пространственной сложности. Затем вы можете попрактиковаться в этом на HackerEarth.
  2. Изучите основы программирования, такие как структуры данных и алгоритмы. Теорию по темам вы также можете найти в статьях GFG или некоторых видеороликах на YouTube.(Некоторые отличные каналы YouTube для DSA: Abdul Bari, Coding Made Simple и «Code with Гарри")
  3. Практикуйте то, что вы узнали. После того, как вы изучите, примените свои знания на практике. Решите как можно больше вопросов на онлайн-платформах, таких как Hackerrank, Codeforces, Codechef и AtCoder. Если у вас мало времени, решите 450 задач из Сборника DSA Лав Баббар.
  4. Как только вы начнете разбираться в вещах, переходите к проведению конкурсов на Codeforces/Codechef. Это действительно поможет вам натренировать свои навыки кодирования и поможет вам адаптироваться к конкурентной среде с ограниченным временем, с которой вы в конечном итоге столкнетесь в тестах кодирования компаний. Некоторыми отличными ресурсами для чтения по CP являются статьи CpAlgorithms, Edu-курсы Codeforces и Competitive Programmer’s Handbook.
  5. Для собеседований потренируйтесь на InterviewBit и Leetcode, так как эти платформы зададут вам вопросы, которые вы не найдете нигде, кроме как на собеседованиях. Вопросы о связанных списках, бинарных деревьях и оптимизации времени/пространства часто задают на собеседованиях, поэтому убедитесь, что вы охватываете вопросы с этих платформ. Для практики дайте инсценированные интервью (среди друзей/старших или на сайте типа Pramp). Вы можете обратиться к моему блогу Что можно и чего нельзя делать на собеседовании по кодированию и Как подготовиться к собеседованию по кодированию, а также получить дополнительную информацию. Это короткое видео от Google даст вам представление о том, как проходят собеседования.

Обратите внимание, что шаблон собеседования различается для разных компаний. Например, Google не спрашивает о проектах или основах компьютерных наук (ОС, СУБД, ООП, CN, системный дизайн и т. д.), но это делают другие фирмы. Вы можете найти более подробную информацию о конкретных организациях в Интернете и подготовиться соответствующим образом.

Что касается основ CS, не стесняйтесь исследовать онлайн-ресурсы, вот те, которые я использовал.

  1. ООП. Ознакомьтесь с концепциями ООП C++ или любого другого языка ООП по вашему выбору. Для C++ OOPS вы можете обратиться к книге E Balagurusamy или просмотреть Saurabh Shukla Videos (на хинди) или этот краткий курс от freecodeacademy (на английском языке) на Youtube. Всегда имейте готовый пример из реальной жизни для каждой концепции ООП. В целях пересмотра вы можете ссылаться на короткие заметки от balagurusamy или короткие заметки от GFG.
  2. Проектирование систем. Некоторыми хорошими курсами для SD являются Курс системного дизайна от educative.io и Раздел системного дизайна на интервьюбите. Вы также можете просмотреть Плейлист по дизайну системы от Тушара Роя или прочитать раздел Дизайн системы в разделе Собеседование по кодированию, чтобы лучше понять некоторые концепции.
  3. Операционные системы: вы можете просмотреть плейлист операционных систем от Gate Smashers, короткие заметки от Лав Баббар, а также прочитать некоторые общие вопросы об операционных системах от GFG.
  4. СУБД / SQL: вы можете изучить Учебник по SQL от freecodecamp (охватывает все основы СУБД и SQL) и Курс проектирования баз данных от freecodecamp (охватывает все концепции СУБД в более глубоком, более теоретическом курсе). Если у вас есть достаточно времени, вы можете прочитать некоторые общие вопросы собеседования по СУБД, а также попробовать проблемы SQL на Leetcode.
  5. Компьютерные сети. Вопросы о сетях не так часто задают на собеседованиях, но если у вас есть достаточно времени, вы можете осветить некоторые важные темы, как описано в этом видео дорожной карты от Love Babbar.

Бонус — несколько случайных советов:

  • Копайте глубже, даже если вы нашли сокровище — то есть, даже после того, как вы прошли все контрольные примеры во время практики, ищите другие способы решения той же проблемы. Это научит вас думать с разных точек зрения и оптимизировать ваши пространственно-временные сложности.
  • Отметьте в закладках вопросы, которые вы не ответили правильно с первого раза, или не смогли решить, или решить которые было очень сложно.
  • Это может звучать старомодно, но заведите блокнот, в котором вы записываете все сложные и важные вопросы вместе с различными возможными решениями этих вопросов. Раньше я писал решения от худшего к лучшему, так же, как мы продвигаемся к решению на собеседовании.
  • Не расстраивайтесь, если увидите, что во время конкурсов ваш рейтинг падает. Изменения всегда сложны поначалу, грязны в середине и прекрасны в конце. Ваш снижающийся рейтинг скоро повысится :)
  • Никогда не отвергайте себя. Подавайте заявки в компании, в которых вы мечтаете работать!

Это были мои два цента о том, как подготовиться к большим технологическим гигантам. Если вы нашли какую-то ценность, поделитесь ею со своим другом, которому она тоже может понадобиться.

Теперь иди, шлифуй и получай! Удачи.