Рубрики
Без рубрики

50+ Проблем со структурой данных и алгоритмами из интервью по кодированию

Набор структур данных и алгоритмов, кодирующих проблему из интервью, включая основные структуры данных, такие как строка, массив, связанный список, двоичное дерево, хэш-таблица и т.д.. С тегами java, программирование, информатика.

Раскрытие информации: Этот пост содержит партнерские ссылки; Я могу получить компенсацию, если вы приобретете товары или услуги по различным ссылкам, приведенным в этой статье.

Есть много выпускников компьютерных наук и программистов, претендующих на должности программистов, программистов и разработчиков программного обеспечения в таких стартапах, как Uber и Netflix; крупные организации, такие как Amazon , Microsoft и Google ; и сервисные компании, такие как Infosys или Luxsoft, но многие из них понятия не имеют, какие вопросы для собеседования по программированию следует ожидать, когда вы подаете заявку на работу в этих компаниях.

В этой статье я поделюсь некоторыми часто задаваемыми вопросами для интервью по программированию из разных собеседований на работу для программистов с разным уровнем опыта, от людей, которые только что закончили колледж, до программистов с опытом работы от одного до двух лет.

Интервью по кодированию состоят в основном из d вопросов, основанных на структуре и алгоритме ata , а также некоторых логических вопросов, таких как: Как поменять местами два целых числа без использования временной переменной?

Я думаю, что полезно разделить вопросы интервью по кодированию на разные тематические области.

Тематическими областями, которые я чаще всего видел в интервью, являются массив , связанный список , строка , двоичное дерево , а также вопросы от алгоритмов, таких как строковый алгоритм, алгоритмы сортировки, такие как быстрая сортировка или сортировка по радиусу и другие разные), и это то, что вы найдете в этой статье.

Это не гарантирует что вам будут заданы эти вопросы о кодировании или структуре данных и алгоритмике, но они дадут вам достаточное представление о том, какие вопросы вы можете ожидать на реальном собеседовании по программированию.

После того как вы ответите на эти вопросы, вы должны чувствовать себя достаточно уверенно, чтобы присутствовать на любых телефонных или личных собеседованиях.

Кстати, нет смысла пытаться ответить на эти вопросы, если у вас нет достаточных знаний о существенной структуре данных и алгоритмах или вы не прикасались к ним целую вечность.

В этом случае вам следует пройти хороший вводный курс, такой как Структуры данных и алгоритмы: Глубокое погружение с использованием Java , чтобы освежить свои навыки DS и алгоритмов.

Топ-50 алгоритмов и кодирования вопросов для интервью

Без дальнейших церемоний, вот мой список некоторых наиболее часто задаваемых вопросов для собеседования по программированию на собеседовании по программированию :

1. Вопросы Интервью с Кодированием Массива

Массив – это наиболее фундаментальная структура данных, которая хранит элементы в смежной области памяти. Это также одна из любимых тем интервьюеров, и вы услышите много вопросов о массиве в любом интервью по кодированию , таких как обращение массива, сортировка массива или поиск элементов в массиве.

Ключевое преимущество структуры данных массива заключается в том, что она обеспечивает быстрый поиск O(1), если вы знаете индекс, но добавление и удаление элемента из массива происходит медленно потому что вы не можете изменить размер массива после его создания.

Чтобы создать более короткий или длинный массив, вам нужно создать новый массив и скопировать все элементы из старого в новый.

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

Вот несколько советов по решению проблем кодирования на основе массива:

  1. индекс массива начинается с нуля
  2. Вы можете использовать циклы для перебора массива
  3. элементы массива хранятся в смежной области памяти, поэтому вы также можете получить к ним доступ с помощью арифметики указателей
  4. Массив обеспечивает производительность O(1) для поиска с использованием индекса
  5. Добавление или удаление элементов в массиве происходит медленнее из-за изменения размера

Вот некоторые из популярных вопросов для собеседования по кодированию на основе массива для вашей практики:

  1. Как вы находите недостающее число в заданном целочисленном массиве от 1 до 100 ? ( решение )
  2. Как вы находите повторяющееся число в заданном целочисленном массиве? ( решение )
  3. Как найти наибольшее и наименьшее число в несортированном целочисленном массиве? ( решение )
  4. Как найти все пары целочисленного массива, сумма которых равна заданному числу? ( решение )
  5. Как вы находите повторяющиеся числа в массиве, если он содержит несколько дубликатов? ( решение )
  6. Как удаляются дубликаты из данного массива в Java? ( решение )
  7. Как сортируется целочисленный массив на месте с помощью алгоритма быстрой сортировки? ( решение )
  8. Как удалить дубликаты из массива на месте? ( решение )
  9. Как вы меняете массив на месте в Java? ( решение )
  10. Как удаляются дубликаты из массива без использования какой-либо библиотеки? ( решение )

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

Если вам нужны более сложные вопросы, основанные на массиве, вы можете также посмотреть Буткемп Собеседования по кодированию: Алгоритмы + Структуры данных , курс в стиле Буткемпа по алгоритмам, специально разработанный для подготовки к собеседованию, чтобы получить работу в технических гигантах, таких как Google, Microsoft, Apple, Facebook и т.д.

И, если вы чувствуете, что 10 вопросов недостаточно, и вам нужно больше практики, то вы также можете ознакомиться с этим списком из 30 вопросов массива .

2. Связанный список Вопросов для Интервью по программированию

Связанный список – это еще одна распространенная структура данных, которая дополняет структуру данных массива. Подобно массиву, он также является линейной структурой данных и хранит элементы линейным образом.

Однако, в отличие от массива, он не хранит их в смежных местах; вместо этого они разбросаны повсюду в памяти, которая соединена друг с другом с помощью узлов.

Связанный список – это не что иное, как список узлов, где каждый узел содержит сохраненное значение и адрес следующего узла.

Из-за этой структуры легко добавлять и удалять элементы в связанном списке , так как вам просто нужно изменить ссылку вместо создания массива, но поиск сложен и часто требует O(n) времени, чтобы найти элемент в односвязном списке.

В этой статье содержится дополнительная информация о различиях между структурами данных массива и связанного списка.

Он также бывает разных видов, таких как односвязный список, который позволяет перемещаться в одном направлении (вперед или назад); двусвязный список , который позволяет перемещаться в обоих направлениях (вперед и назад); и, наконец, круговой связанный список, который образует круг.

Для решения вопросов, основанных на связанных списках, важно хорошее знание рекурсии , потому что связанный список представляет собой рекурсивную структуру данных .

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

Вот некоторые из наиболее распространенных и популярных вопросов для интервью по ссылочному списку и их решения:

  1. Как вы находите средний элемент односвязного списка за один проход? ( решение )
  2. Как вы проверяете, содержит ли данный связанный список цикл? Как вы находите начальный узел цикла? ( решение )
  3. Как изменить связанный список? ( решение )
  4. Как перевернуть односвязный список без рекурсии? ( решение )
  5. Как удаляются дубликаты узлов в несортированном связанном списке? ( решение )
  6. Как вы определяете длину односвязного списка? ( решение )
  7. Как вы находите третий узел с конца в одном связанном списке? ( решение )
  8. Как вы находите сумму двух связанных списков с помощью стека? ( решение )

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

Если у вас возникли проблемы с решением этих вопросов о кодировании связанных списков, я предлагаю вам обновить свои навыки в области структуры данных и алгоритмов, пройдя Структуры данных и алгоритмы: Глубокое погружение ** С использованием курса Java**.

Вы также можете ознакомиться с этим списком 30 связанных вопросов для интервью для получения дополнительных практических вопросов.

3. Строковое Кодирование Вопросов Для Интервью

Наряду со структурами данных массивов и связанных списков, строка является еще одной популярной темой на собеседованиях по программированию. Я никогда не участвовал в собеседовании по кодированию, где не задавались вопросы на основе строк .

Хорошая особенность строки в том, что если вы знаете массив, вы можете легко решать вопросы на основе строк, потому что строки – это не что иное, как массив символов .

Таким образом, все методы, которые вы изучаете, решая вопросы кодирования на основе массива , могут быть использованы и для решения вопросов строкового программирования.

Вот мой список часто задаваемых вопросов по кодированию строк из собеседований по программированию:

  1. Как вы печатаете повторяющиеся символы из строки? ( решение )
  2. Как вы проверяете, являются ли две строки анаграммами друг друга? ( решение )
  3. Как вы печатаете первый неповторяющийся символ из строки? ( решение )
  4. Как можно обратить заданную строку с помощью рекурсии? ( решение )
  5. Как проверить, содержит ли строка только цифры? ( решение )
  6. Как найти повторяющиеся символы в строке? ( решение )
  7. Как вы подсчитываете количество гласных и согласных в данной строке? ( решение )
  8. Как вы подсчитываете вхождение данного символа в строку? ( решение )
  9. Как вы находите все перестановки строки? ( решение )
  10. Как вы меняете местами слова в данном предложении без использования какого-либо библиотечного метода? ( решение )
  11. Как вы проверяете, являются ли две строки вращением друг друга? ( решение )
  12. Как вы проверяете, является ли данная строка палиндромом? ( решение )

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

Для более сложных вопросов я предлагаю вам решить проблемы, приведенные в Руководстве по разработке алгоритмов Стивена Скиены , книга с самыми сложными алгоритмическими вопросами.

Если вам нужно больше практики, вот еще один список 20 вопросы кодирования строк .

4. Вопросы для интервью с кодированием Двоичного Дерева

До сих пор мы рассматривали только линейную структуру данных, но вся информация в реальном мире не может быть представлена линейным способом, и именно здесь помогает древовидная структура данных.

Древовидная структура данных – это структура данных, которая позволяет хранить ваши данные иерархическим образом. В зависимости от способа хранения данных существуют различные типы деревьев, такие как двоичное дерево , где каждый узел имеет не более двух дочерних узлов.

Наряду со своим близким родственником бинарное дерево поиска , это также одна из самых популярных древовидных структур данных. Поэтому вы найдете множество вопросов, основанных на них, например, как их обойти, подсчитать узлы, найти глубину и проверить, сбалансированы они или нет.

Ключевым моментом для решения вопросов о двоичном дереве является глубокое знание теории, например, каков размер или глубина двоичного дерева, что такое лист и что такое узел, а также понимание популярных алгоритмов обхода, таких как обход до, после и по порядку.

Вот список популярных вопросов о кодировании на основе двоичного дерева из интервью с инженером-программистом или разработчиком:

  1. Как реализовано двоичное дерево поиска? ( решение )
  2. Как вы выполняете обход предварительного заказа в данном двоичном дереве? ( решение )
  3. Как вы проходите по заданному двоичному дереву в предварительном порядке без рекурсии? ( решение )
  4. Как вы выполняете обход по порядку в данном двоичном дереве? *( решение )
  5. Как вы печатаете все узлы данного двоичного дерева, используя обход по порядку без рекурсии? ( решение )
  6. Как вы реализуете алгоритм обхода после заказа? ( решение )
  7. Как вы проходите двоичное дерево при обходе после заказа без рекурсии? ( решение )
  8. Как печатаются все листья бинарного дерева поиска? ( решение )
  9. Как вы подсчитываете количество конечных узлов в данном двоичном дереве? ( решение )
  10. Как вы выполняете двоичный поиск в заданном массиве? ( решение )

Если вы чувствуете, что ваше понимание кодирования двоичного дерева недостаточно и вы не можете решить эти вопросы самостоятельно, я предлагаю вам вернуться и выбрать хороший курс по структуре данных и алгоритмам, например От 0 до 1: Структуры данных и алгоритмы в Java .

Если вам нужны еще какие-то рекомендации, вот мой список полезных книг по алгоритмам структуры данных и курсы для начала.

5. Разное Вопросы для Собеседования по Кодированию

Помимо вопросов, основанных на структуре данных, большинство собеседований при приеме на работу по программированию также задают алгоритмы , разработка программного обеспечения , манипуляции с битами и общие вопросы, основанные на логике, которые я опишу в этом разделе.

Важно, чтобы вы практиковали эти концепции, потому что иногда их становится сложно решить на самом собеседовании. Отработав их раньше, вы не только познакомитесь с ними, но и придадите больше уверенности в объяснении решения интервьюеру.

  1. Как реализован алгоритм сортировки пузырьков? ( решение )
  2. Как реализуется итеративный алгоритм быстрой сортировки? ( решение )
  3. Как вы реализуете алгоритм сортировки вставки? ( решение )
  4. Как реализован алгоритм сортировки слиянием? ( решение )
  5. Как вы реализуете алгоритм сортировки по корзинам? ( решение )
  6. Как вы реализуете алгоритм сортировки подсчета? ( решение )
  7. Как реализован алгоритм сортировки по основанию? ( решение )
  8. Как поменять местами два числа, не используя третью переменную? ( решение )
  9. Как вы проверяете, перекрываются ли два прямоугольника друг с другом? ( решение )
  10. Как вы проектируете торговый автомат? ( решение )

Если вам нужно больше таких вопросов по кодированию, вы можете воспользоваться помощью из таких книг, как Интервью по взлому кода , автор Гейл Лакманн Макдауэлл , в котором представлено 189+ вопросов по программированию и их решение. Хорошая книга для подготовки к собеседованиям по программированию за короткое время.

Кстати, чем больше вопросов вы решите на практике, тем лучше будет ваша подготовка. Итак, если вы считаете, что 50 недостаточно, и вам нужно больше, чем проверить эти дополнительные 50 вопросов по программированию для телефонных интервью и эти книги и курсы для более тщательной подготовки.

Теперь Вы готовы к собеседованию по кодированию

Это некоторые из наиболее распространенных вопросов за пределами структуры данных и алгоритмов, которые помогут вам действительно хорошо выступить на собеседовании.

Я также поделился многими из этих вопросов в своем блоге , поэтому, если вам действительно интересно, вы всегда можете пойти туда и поискать их.

Эти общие вопросы о кодировании, структуре данных и алгоритмах – это те, которые вам нужно знать, чтобы успешно пройти собеседование в любой компании, большой или маленькой, для работы в области программирования любого уровня.

Если вы ищете работу по программированию или разработке программного обеспечения в 2021 году, вы можете начать подготовку с этого списка вопросов по кодированию.

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

Хорошее знание структуры данных и алгоритмов важно для успеха в кодировании интервью, и именно на этом вы должны сосредоточить большую часть своего внимания.

Дальнейшее обучение \ Структуры данных и алгоритмы: Глубокое погружение с использованием Java 10 Книг для подготовки Технического программирования/Собеседования по кодированию 10 Книг по алгоритмам Каждый Программист Должен Прочитать Топ-5 книг по структуре данных и алгоритмам для разработчиков Java От 0 до 1: Структуры данных и алгоритмы на Java Анализ структуры данных и алгоритмов — Собеседование при приеме на работу

Заключительные примечания

Спасибо, Вы добрались до конца статьи… Удачи вам с вашим интервью по программированию! Это, конечно, будет нелегко, но, следуя этой дорожной карте и руководству, вы на один шаг приблизитесь к тому, чтобы стать инженером DevOps .

Если вам понравилась эта статья, пожалуйста, поделитесь ею со своими друзьями и коллегами и не забудьте подписаться джавин пол в Твиттере!

P.S.— Если вам нужны БЕСПЛАТНЫЕ ресурсы, вы можете ознакомиться с этим списком бесплатных курсов по структуре данных и алгоритмам, чтобы начать подготовку.

Оригинал: “https://dev.to/javinpaul/50-data-structure-and-algorithms-problems-from-coding-interviews-4lh2”