В основном он знакомит с некоторыми вопросами собеседования по алгоритму и рассказывает о том, как подготовиться к собеседованию по алгоритму.
Алгоритмические интервью — это больше, чем просто правильные ответы на вопросы.
Может разумно обдумать большинство вопросов, возникающих на собеседовании.
Что такое алгоритм интервью?
- Пусть у каждого будет разумный путь мышления, когда он столкнется с вопросами алгоритма на собеседовании:
- Это не означает, что на каждый вопрос алгоритма можно ответить «правильно», но разумное направление мышления на самом деле важнее, и это также является предпосылкой правильного ответа на вопросы алгоритма интервью.
- Хорошее собеседование по алгоритму не означает хорошее техническое собеседование
- Отличное техническое собеседование не означает, что вы можете получить предложение
Что такое разумный способ мышления?
- Цель алгоритмического интервью не в том, чтобы дать «правильный» ответ,
- Вместо этого покажите интервьюеру, как вы думаете о проблеме.
"Правильно" само по себе понятие относительное
- Алгоритмическое собеседование — это не вступительный экзамен в колледж.
- Думайте о процессе как об обсуждении решения проблемы с интервьюером.
- Для получения подробной информации о вопросе и среде приложения вы можете связаться с интервьюером.
- Это общение важно само по себе, и оно влияет на то, как вы думаете о проблеме.
пример
Нам нужно отсортировать набор данных
- Дизайн интерфейса сортировки, стандартный дизайн библиотеки, алгоритм сортировки в бизнесе.
- Сортировка является фундаментальной операцией и имеет важное значение.
решать
Алгоритм быстрой сортировки: O(nlogn)
- Базовая среда, используемая алгоритмом, игнорируется. Для динамического выбора.
(Спросите интервьюера): Каковы характеристики этого набора данных?
- Можно ли содержать много повторяющихся элементов?
- Если есть такая возможность, лучше выбрать тройной быстрый ряд.
- Обычные данные: подойдет обычная быстрая сортировка; трехсторонняя быстрая сортировка, используемая в стандартной библиотеке языка java.
- Близка ли большая часть данных к своему правильному местоположению? Почти порядок?
- В этом случае сортировка вставками является лучшим выбором.
- В соответствии с порядком возникновения бизнеса лучше всего подходит сортировка вставками по принципу «первым вхождением — первым завершением».
- Имеют ли данные очень ограниченный диапазон значений? Например, сортировка оценок учащихся.
- Если это так, сортировка по количеству — лучший выбор. Оценки Гаокао имеют ограниченный диапазон значений: лучше подсчет и сортировка.
(спросите интервьюера): Какие дополнительные требования предъявляются к заказу?
- Вам нужна стабильная сортировка?
- Если это так, сортировка слиянием является лучшим выбором.
(Спросите интервьюера): Каков статус хранения данных?
- Он хранится с использованием связанного списка?
- Если это так, сортировка слиянием является лучшим выбором.
- Быстрая сортировка основана на произвольном доступе к массивам.
(Спросите интервьюера): Каков статус хранения данных?
- Может ли размер данных поместиться в памяти?
- Объем данных велик, или памяти слишком мало для загрузки в память, и необходимо использовать внешний алгоритм сортировки.
Сортировка набора сводных данных
- Можно ли содержать много повторяющихся элементов?
- Близка ли большая часть данных к своему правильному местоположению? Почти порядок?
- Имеют ли данные очень ограниченный диапазон значений? Например, сортировка оценок учащихся.
- Вам нужна стабильная сортировка?
- Он хранится с использованием связанного списка?
- Может ли размер данных поместиться в памяти?
Каков «правильный» ответ на вопрос алгоритма
- Правильно, за исключением того, что вы можете закодировать код и запустить его, чтобы получить правильный результат. Правильный также включает оригинальное понимание проблемы, оптимизацию, спецификацию кода, отказоустойчивость и т.д.
- Не просто дайте код для решения задачи алгоритма, но и включите вышеперечисленные факторы.
- Если это очень сложная проблема, она также сложна и для ваших конкурентов.
- Ключ в том, как вы выражаете идею решения проблемы.
- Даже выразив направление идей решения проблемы, я пришел к выводу: в какой области должно быть решение этой проблемы, я могу решить проблему путем консультации или дополнительного обучения.
Алгоритм интервью — это только часть интервью
- Собеседование по алгоритму — это только часть технического собеседования.
- В зависимости от вашего резюме и должности, на которую вы претендуете, есть и другие технические аспекты, на которые следует обратить внимание.
- Опыт проекта и практические проблемы, возникшие в проекте
- Возможность решить, стоит ли участвовать
- думать глубоко
- техническое отношение
Перед собеседованием разберите пункты, написанные в вашем резюме: разберитесь, о чем вы можете спросить.
- Какая самая впечатляющая ошибка, с которой вы столкнулись?
- объектно-ориентированный
- Шаблоны проектирования
- Связанный с сетью; Связанный с безопасностью; Связанный с памятью; Связанный с параллелизмом; …
- Дизайн системы, масштабируемость (большой масштаб)
Отличное техническое собеседование не означает, что вы можете получить предложение
Техническое собеседование — это только часть собеседования. Интервью касается не только вашего уровня навыков, но и вашего прошлого, а также того, как вы думаете и ведете себя.
- О прошлом: Участие в проектах имеет решающее значение
Опыт проекта:
- рабочий
- аспирант
- Бакалавриат
- Дипломная работа
- Другое курсовое оформление (большое задание)
Как найти предметы?
- упражняться
- Создайте свой собственный проект
- Создайте собственное приложение: планировщик, заметки, плеер...
- Решайте небольшие задачи самостоятельно: краулер, анализ данных, статистика частотности слов...
- Проекты, которые «не являются проектами»: очистка кода для отличной технической книги и т. д. (github)
- Поделиться: собственный технический блог, github и т. д.
поведенческие проблемы
Узнайте, как вы думаете и действуете в прошлом:
- Возникла самая большая проблема?
- Допущены ошибки?
- Отказ?
- Что вам больше всего нравится в работе?
- Как справляться с конфликтами?
- Самый необычный поступок?
Конкретная проработка: С какой проблемой алгоритма я столкнулся в конкретном проекте: что это за проблема. Это самая большая проблема, с которой я когда-либо сталкивался, и то, как я ее преодолел.
Подготовьте правильные вопросы, чтобы задать интервьюеру
- Каков общий режим работы всей группы?
- Каков дальнейший план всего проекта?
- Как решается проблема в этом продукте?
- Почему выбирают определенные технологии? стандарт?
- Меня интересует технология, какие возможности у меня будут в вашей группе, чтобы вникнуть в эту технологию?
Алгоритмические интервью по-прежнему очень важная часть
Как подготовиться к алгоритмическому собеседованию
Подготовка к собеседованию и подготовка к алгоритмическому собеседованию — это два понятия.
- Алгоритмическое интервью — это только часть интервью.
- Далеко не нужно заканчивать "Введение в алгоритмы"
- Акцент на теоретическом доказательстве
- Нет необходимости понимать корректуру при первом чтении
- Первые несколько чтений должны просто запомнить заключение, не нужно понимать доказательство. Приложите больше усилий к алгоритмическому мышлению.
- Для алгоритмических интервью теоретические выводы и доказательства в разделе «Введение в алгоритмы» не являются очень важными аспектами.
Научитесь помнить о перфекционизме
- Низкая вероятность упоминания в интервью по продвинутым структурам данных и алгоритмам
- Необходимо знать основные концепции, но нет необходимости в более глубоких слоях, таких как реализация.
- Далеко не нужно достигать уровня соревнования по информатике
Объем подготовки к собеседованию по алгоритму
- Не стоит недооценивать базовые алгоритмы и структуры данных, просто сосредоточьтесь на «интересных» темах.
- Различные алгоритмы сортировки
- Реализация основных структур данных и алгоритмов: таких как кучи, бинарные деревья, графы…
- Использование базовых структур данных: таких как связанные списки, стеки, очереди, хеш-таблицы, графы, Trie, объединение поиска...
- Основные алгоритмы: поиск в глубину, поиск в ширину, бинарный поиск, рекурсия...
- Основные идеи алгоритма: рекурсия, разделяй и властвуй, поиск с возвратом, жадное, динамическое программирование...
пример
Вопросы для интервью с Intel:
Группа чисел, начальная последовательность которых равна 1 8 6 2 5 4 7 3, принимает сортировку кучей.Когда куча (малая корневая куча) заполнена, последовательность обхода бинарного дерева, соответствующая этой куче, имеет вид: ( )
A. 8 3 2 5 1 6 4 7
B. 3 2 8 5 1 4 6 7
C. 3 8 2 5 1 6 7 4
D. 8 2 3 5 1 4 7 6
Вопросы интервью LeEco:
Выполните двоичный поиск в упорядоченном массиве из 20 элементов, начальный индекс массива равен 1, затем нижний индекс последовательности сравнения для поиска A[2] равен ()
А. 9, 5, 4, 2
Б. 10, 5, 3, 2
С. 9, 6, 2
Д. 20, 10, 5, 3, 2
Ознакомьтесь с методом бинарного поиска.
Алибаба вопросы интервью
Набор кодов сортировки записей (5, 11, 7, 2, 3, 17), тогда начальная куча, установленная методом сортировки кучи, равна ()
А. (11, 5, 7, 2, 3, 17)
Б. (11, 5, 7, 2, 17, 3)
В. (17, 11, 7, 2, 3, 5)
Д. (17, 11, 7, 5, 3, 2)
Э. (17, 7, 11, 3, 5, 2)
Ф. (17, 7, 11, 3, 2, 5)
Baidu вопросы интервью
Когда граф хранится в списке смежности, временная сложность алгоритма Прима для нахождения минимального остовного дерева составляет ( )
- O(n)
- O(n+e)
- O(n^2)
- O(n^3)
Фокус
- Использование базовых структур данных: таких как связанные списки, стеки, очереди, хеш-таблицы, графы, Trie, объединение поиска...
- Основные алгоритмы: поиск в глубину, поиск в ширину, бинарный поиск, рекурсия...
- Основные идеи алгоритма: рекурсия, разделяй и властвуй, поиск с возвратом, жадное, динамическое программирование...
Выберите правильный OJ (онлайн-судья): система онлайн-судей
- Не выбирайте OJ, который слишком предвзято относится к соревнованиям по программированию. * Слишком сложно для конкуренции
-
выбери правильный дж
-
leetcode
- Online Portal for IT Interview
- реальные вопросы интервью
- www.leetcode.com
-
HankeRank
- Характерно, что классификация проблемы очень подробная. Это сложно, но может быть решено для определенного типа задачи о подразделениях.
- www.hackerrank.com
Уведомление
- Баланс между учебой и практикой
- Базовая реализация алгоритма и алгоритмическая мысль
Как отвечать на вопросы алгоритма интервью
Общая идея решения алгоритмических вопросов на собеседовании
- Обратите внимание на условия в вопросе
- Дан упорядоченный массив... (Дихотомия)
- Есть вопросы, в которых подразумевается условный характер
- Разработать алгоритм O(nlogn) (разделяй и властвуй: выполняй задачи в дереве поиска, сортируй данные)
- Нет необходимости учитывать дополнительное пространство (оптимизировать пространство по времени)
- Размер данных составляет около 10000 (может быть O (n ^ 2))
когда нет идеи
- Дайте себе несколько простых тестовых случаев и попробуйте
- Не игнорируйте решения грубой силы. Решение грубой силы обычно является отправной точкой для размышлений.
пример
LeetCode 3 Longest Substring Without Repeating Characters
Найдите самую длинную подстроку без повторяющихся букв в строке
Например, "abcabcbb", результатом будет "abc"
Например, "bbbb", результат "b"
-
для подстроки s[i...j] строки s
-
Используя алгоритм O(n^2) для обхода i,j, вы можете получить все подстроки s[i...j]
-
Используйте алгоритм O(length(s[i...j])) чтобы определить, содержит ли s[i...j] повторяющиеся буквы
-
Тройной цикл: сложность O (n ^ 3), для n = 100 данных, выполнимо
оптимизация
-
Обход общих идей алгоритма
-
Обход общих структур данных
-
Обмен пространством и временем (хеш-таблица)
-
Предварительная обработка информации (сортировка)
-
Найдите ответ в узком месте: O(nlogn) + O(n^2) ; O(n^3)
- Можно ли оптимизировать O(n^2).
-
Какая проблема использует какое мышление и структуру данных.
актуальная проблема с письмом
-
Оценка экстремальных условий
- Массив пуст?
- Строка пуста?
- Количество равно 0?
- указатель равен NULL?
-
Спецификация кода:
- имя переменной
- модульный
- возможность повторного использования
------------------------- Великолепная разделительная линия --------------------
Друзья, которые прочитали это, могут нажать «Нравится» / «Подписаться», ваша поддержка — самая большая поддержка для меня.
личный блогСтек томатной технологиииДомашняя страница Наггетс
Если вы хотите узнать больше, обратите внимание на мой публичный аккаунт в WeChat: Tomato Technology Stack.