Разработчик ПО Гарима Раджпут поделилась полезными источниками и советами, которые помогли ей устроиться в Google. Они пригодятся тем, кому нужно подготовиться к собеседованию в компанию.
Как подготовиться к собеседованию в Google
Дарья Сидорова
Темы
Ниже приведен список тем, с которых стоит начать подготовку.
Анализ алгоритмов: асимптотические обозначения.
Алгоритмы поиска и сортировки.
Парадигмы разработки алгоритмов: разделяй и властвуй, жадный алгоритм, динамическое программирование, поиск с возвратом.
Структуры данных: массив, список, дерево, граф, хеш-таблица, стек, очередь.
Обход графа/дерева: поиск в глубину, поиск в ширину.
Источники
В процессе подготовки к собеседованию важно выбрать качественные источники информации. Чтобы не запутаться в изобилии онлайн-ресурсов и учебных материалов придерживайтесь следующих рекомендаций.
Новичкам стоит начать с книги «Алгоритмы: построение и анализ» (Introduction to Algorithms, CLRS): она ознакомит со всеми темами, перечисленными выше. GeeksForGeeks — еще один полезный ресурс.
Отточить навыки помогут эти платформы: InterviewBit, LeetCode, HackerRank. Также обратите внимание на раздел «Обсуждения» на LeetCode: там можно найти темы, которые пригодятся для собеседований и в другие компании.
Выясните, какие подходы используют другие специалисты. Это поможет по-новому взглянуть на проблему.
Участвуйте в еженедельных соревнованиях, проводите пробные собеседования, а также отслеживайте свои успехи и анализируйте ошибки.
Смотрите ролики о решениях задач LeetCode на YouTube.
Советы
Готовьтесь постепенно. Начинайте с решения задач простого уровня. Выработайте привычку делать это регулярно.
Не расстраивайтесь, если решение приходит не сразу.
Постарайтесь выявить закономерности в похожих вопросах.
Расширяйте количество используемых инструментов.
Не торопитесь отправлять готовое решение. Пробно запустите код и продумайте крайние случаи. Это упражнение поможет на настоящем собеседовании.
Попробуйте поучаствовать в соревнованиях по программированию. Это не обязательно, но поможет развивать полезные навыки.
Задачи
Двоичный поиск. Решите эту задачу. Разберитесь, как можно применять двоичный поиск для решения подобных проблем. Также обратите внимание на этот пост.
Динамическое программирование. Попробуйте применить этот метод при решении таких задач, как House Robber и Min Cost.
Граф. Решите эти две задачи (первая и вторая) и проанализируйте временную и пространственную сложность алгоритма.
Дерево. Обратите внимание на эту проблему.
Здесь еще одна интересная задача.
Источник.
Источник: