35 общих вопросов для собеседования по структуре данных (плюс примеры ответов)

15 сентября 2021 г.

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

Вопросы об опыте и прошлом

Эти общие вопросы составлены для получения информации о ваших конкретных знаниях и навыках:

  1. Как вы научились программировать?

  2. Где вы учились в колледже?

  3. Какой была ваша специальность?

  4. Какой у вас самый высокий уровень образования?

  5. Как давно вы занимаетесь программированием?

  6. Как ваша последняя должность подготовила вас к этой роли?

  7. Ваша последняя должность связана со структурами данных?

  8. Вам комфортно работать в команде?

  9. Сможете ли вы объяснить структуры данных коллегам, незнакомым с программированием?

  10. Вы раньше занимали руководящую должность?

Вопросы об общих структурах данных

Ваши ответы на эти общие вопросы покажут интервьюеру, что вы понимаете, как работают структуры данных.

  1. Что такое структура данных?

  2. Что такое массив?

  3. Что такое многомерный массив?

  4. Что такое структура данных связанного списка?

  5. Что такое рекурсивная структура данных?

  6. Что такое строковое кодирование?

  7. Что такое бинарное дерево?

  8. Что такое сортировка слиянием?

  9. В чем разница между «null» и «void»?

  10. В чем разница между «толчком» и «хлопком»?

  11. Что такое абстракция данных?

  12. Что такое постфиксное выражение?

  13. Что такое очередь?

  14. Что такое алгоритм Хаффмана?

  15. Сколько очередей вам нужно для выполнения приоритетной очереди?

Алгоритм и структура данных вопросы интервью

Вот общие вопросы по алгоритму и структуре данных с пояснениями и примерами ответов.

1. Где следует использовать структуры данных?

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

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

2. Как бы вы удалили дубликаты из заданного массива в Java?

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

Пример: «Я могу описать два способа, которыми вы можете это сделать. Во-первых, вы можете использовать итератор. Для этого вам нужно создать новый ArrayList. Затем вам нужно пройтись по исходному ArrayList, который содержит повторяющиеся значения, и сохранить первое появление каждого элемента в новом ArrayList, используя метод contains(). Второй ArrayList будет содержать все элементы исходного массива за вычетом повторяющихся элементов.

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

3. Когда следует применять бинарный поиск?

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

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

4. Как бы вы обнаружили и удалили петлю в связанном списке?

Связный список — это структура данных, которая, как и массив, является линейной. Однако в то время как массив хранит свои элементы в смежных местах, связанные списки хранят элементы случайным образом и связывают их с помощью указателей. Как правило, связанный список представляет собой структуру данных, состоящую из узлов, каждый из которых состоит из поля данных и ссылки, указывающей на следующий узел в списке. Циклы в связанном списке могут вызвать ошибки в программе. Чтобы хорошо ответить на этот вопрос, вы должны хорошо знать рекурсию, поскольку это рекурсивная структура данных.

Пример: «Чтобы обнаружить и удалить петлю в связанном списке, вы должны написать функцию detectAndRemoveLoop, которая проверяет наличие петли в связанном списке, а затем удаляет ее, если она присутствует, а затем возвращает значение true. Если цикл не обнаружен, функция возвращает false».

5. Имея целое число «n», напишите функцию для вычисления n-го числа Фибоначчи.

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

Пример:

«публичный длинный фибоначчи (целое число x) {

если (х < 0) вернуть – 1;

если (х == 0) вернуть 0;

длинная[] кеш = новый длинный[x + 1];

for (int i = 1; i < cache.length; i++) {кэш[i] = -1;}

тайник[1] = 1;

вернуть фибоначчи (х, кеш);

}

частный длинный фибоначчи (целое x, длинный[] кеш) {

если (кэш[x] >-1) вернуть кеш[x];

тайник[x] = фибоначчи (х – 1, кеш) + фибоначчи (х – 2, кеш);

вернуть кеш[x];

}”

6. Как реализовать рекурсию обхода дерева в обратном порядке?

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

Пример: «Обход дерева узла «n» в обратном порядке включает следующие шаги, начиная с корня:

  • Левое поддерево n просматривается вызовом printPostorder(n.left).

  • Правое поддерево n просматривается вызовом printPostorder(n.right).

  • Затем посещается сам узел n».

Связанный: 7 практических советов по собеседованию**

7. Как определить, что два целых числа имеют противоположные знаки?

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

Пример: «Когда два целых числа имеют противоположные знаки, это означает, что их старшие значащие биты различны. Старший бит любого отрицательного числа всегда будет равен единице, тогда как старший бит положительных чисел всегда будет равен нулю. Если вы примените побитовый оператор исключающее ИЛИ (XOR «^») к двум целым числам с противоположными знаками, вы получите отрицательное число. Это означает, что если оператор XOR применяется к двум целым числам и возвращает меньше нуля, эти два числа имеют противоположные знаки».

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

8. Какая структура данных позволяет легко манипулировать элементами связного списка?

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

Пример: «Лучшая структура данных для перемещения элементов связанного списка — это структура связанного списка. Вы просто изменяете список, а не создаете массив».

9. Объясните разницу между массивом и стеком

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

Пример: «Стеки и массивы хранят данные двумя разными способами. Во-первых, тип данных. Стеки могут хранить данные разных типов, в то время как массивы хранят данные одного и того же типа. Во-вторых, размер конструкции. Стеки изменяются в размере по мере удаления или добавления элементов. Массивы не меняются в размере».

10. Объясните разницу между линейной структурой данных и иерархической структурой данных.

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

Пример: «Линейные структуры данных и иерархические структуры данных описывают отношения между частями данных, но они различаются тем, как данные взаимодействуют. Линейные структуры данных организуют данные в одноуровневой последовательности. Иерархические структуры данных организуют данные в многоуровневой конфигурации».

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *