16 головоломок из интервью в ведущих IT-компаниях
Теоретическая часть — о том, как начать к поиск работы, заинтересовать работодателя и подготовиться к собеседованию — освещена в отдельном материале. Переходим к практической: с какими задачами и головоломками сталкиваются программисты на собеседованиях в топовых компаниях?
Независимо от языков, каждый программист должен обладать аналитическим и логическим мышлением и уметь выстраивать эффективные алгоритмы — именно эти способности интересуют HR и менеджеров в кандидатах.
Кстати, об алгоритмах. Узнать и увидеть больше в понятной форме можно на visualgo.net:
Потренируйтесь в составлении алгоритмов и решении логических задач перед поиском работы. Для примера, 16 реальных вариантов заданий, встречающихся в интервью американских IT-компаний:
А. Сортировка
1. Сравните и сопоставьте различные алгоритмы сортировки. Приведите плюсы и минусы каждого из них. Для каких ситуаций лучше подходит тот или иной метод?
Б. Массивы и строки
2. Определите, все ли символы в строке уникальны
3. Расположите символы в строке в обратном порядке
4. Запишите слова в строке в обратном порядке
В. Связанные списки
5. Удалить дубли из неотсортированного связанного списка. А потом - то же самое, но без дополнительных переменных.
6. Найти N-й с конца элемент в списке
7. Определить, является ли список цикличным
8. Составить элементы списка в обратном порядке
Г. Стеки / Очереди
9. Создайте стек, который позволяет найти минимальное/максимальное значение за одну операцию (O(1))
10. Решите загадку “Ханойская Башня” с помощью стека
Ханойская башня. Условия:
На один из трех стержней нанизаны 8 колец в порядке уменьшения площади от нижнего к верхнему.
Задача: за наименьшее число ходов перенести всю пирамиду на другой стержень. За один раз разрешается переносить только одно кольцо; запрещено класть большее кольцо на меньшее.
11. Реализовать очередь с помощью двух стеков
Д. Деревья / Графы
12. Выяснить, есть ли маршрут между двумя узлами
13. Определить, сбалансировано ли бинарное дерево
14. Вернуть высоту дерева
Е. Другие вопросы
15. Слить два отсортированных связанных списка чисел в один
16. Написать функцию, которая выводит все простые числа от 1 до N (включительно)
Проверьте себя и напишите в комментариях, какие задачи удалось решить, и сколько времени вам на это потребовалось.
Удачи!
Хотите стать программистом? Рекомендуем профессию «Веб-разработчик».