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

Алгоритмы программирования 20+ Проблемы с базовыми алгоритмами из кодирования интервью

Часто задаваемые вопросы поиска и сортировки алгоритмов из программистов Python и Java. Tagged с Python, Java, алгоритмами, программированием.

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

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

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

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

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

Они основаны на общих алгоритмах поиска и сортировки, таких как Строковые алгоритмы , Бинарный поиск , Алгоритмы графика , и т.д.

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

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

Это также готовит вас к любым извращенным вопросам и альтернативным проблемам, таким как интервьюеры, часто любят просить вас решить конкретную проблему кодирования, используя Рекурсия или Итерация Анкет

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

Кстати, если вы являетесь полным новичком в мире структуры данных и алгоритмов, то я предлагаю вам сначала пройти всеобъемлющий курс алгоритма, такой как Структуры данных и алгоритмы: глубокое погружение с использованием Java На Udemy, который будет не только научить вас основной структуре данных и алгоритмах, но и тому, как их использовать в реальном мире и как решать проблемы кодирования с использованием их.

С другой стороны, если вы любите читать книги или предпочитаете книги по онлайн -курсам, вы должны прочитать комплексную книгу, такую как Введение в алгоритмы Томас Х. Кормен, чтобы получить понимание общих алгоритмов информатики, таких как поиск, сортировка, криптография, Графические алгоритмы И некоторые общие, такие как Фурье Преобразование.

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

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

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

1. Можете ли вы реализовать алгоритм бинарного поиска? ( Решение ) Это простой, бинарный поиск-это алгоритм разделения и завоевание, где проблема делится на субпроблема, и они решаются. Это алгоритм поиска, который означает, что он используется для поиска таких вещей, как число в целочисленном массиве или элемент в каталоге.

Самый простой способ реализовать Алгоритм бинарного поиска Использует рекурсию, что содержит ссылка на решение, но вы должны попробовать сами, прежде чем увидеть решение.

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

2. Напишите программу для реализации линейного алгоритма поиска? ( Решение ) Это даже проще, чем бинарный поиск, все, что вам нужно сделать, это пройти через все элементы в массиве, используя для петли или рекурсивный метод и сравните каждый элемент с тем, что вы хотите найти. Когда элемент совпадает, вы либо возвращаете индекс, либо TRUE/FALSE в зависимости от вашего требования.

Например, если вы пишете Содержит () Метод Вы можете вернуть Верно или ложный Чтобы указать, присутствует ли элемент в массиве или нет. Поскольку вам нужно сканировать весь массив, чтобы найти элемент, временная сложность этого алгоритма – На) .

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

3. Можете ли вы реализовать алгоритм бинарного поиска без рекурсии? ( Решение ) Вы можете знать, что вы можете заменить рекурсивный алгоритм на итеративный, используя петлю, а иногда и используя Стек структура данных. Для бинарного поиска также вы можете сделать это, просто разделите массив и сравните средний элемент, пока не найдете целевой элемент или больше нет элемента в массив.

Если целевой элемент больше середины, чем вы должны двигаться вправо или иным образом влево.

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

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

4. Реализовать алгоритм сортировки пузырьков? ( Решение ) Разве это не был первый алгоритм сортировки, который вы изучаете? Ну, я сделал, и поэтому я помню, что пузырьковые сортировки о сравнении каждого числа с каждым другим номером в массиве, чтобы после каждого прохода самый большой или самый маленький элемент пузырь до вершины.

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

Временная сложность этого O (n ^2) Что делает его непригодным для большого набора чисел, но это хорошо для небольшого набора чисел.

5. Записать код для реализации поиска заказа уровня в двоичном дереве? (решение) В поиске заказа в уровне вы впервые посетите узлы братьев и сестра, чем опустите на следующий уровень. Вы можете использовать Очередь для реализации поиска заказа уровня в двоичном дереве. Если вы хотите узнать больше, вы можете проверить любой из них Курсы бесплатной структуры данных и алгоритмы на Freecodecamp

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

6. Разница между стабильным и нестабильным алгоритмом сортировки? ( Ответ ) Это была сложная концепция, которую я не знал давно. Я еще не сталкивался с ни одного практического использования этого случая, но просто зная, что концепция в порядке с точки зрения интервью.

В стабильном алгоритме сортировки порядок того же элемента остается таким же даже после сортировки, но во время нестабильного алгоритма сортировки это меняется.

Хороший пример – это QuickSort и Mergesort где бывшая нестабильна, а позже – стабильный алгоритм.

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

Это сложно реализовать, но вы можете использовать стек для реализации DFS или алгоритма поиска в глубине. Если вам нужна дополнительная информация по этой теме, я предлагаю вам проверить Алгоритмы Гроккинга Книга Адитьи Бхаргава, его объяснение, вероятно, является лучшим объяснением этой темы

8. Как реализуется итеративный алгоритм QuickSort? ( Решение ) Очевидно, без рекурсии:-). Если вы помните, я уже говорил вам, что вы можете использовать стек для преобразования рекурсивный алгоритм в итеративный И это то, что вы можете сделать так же хорошо для реализации алгоритма QuickSort без рекурсии. Вы можете также увидеть Решение Если вам нужна дополнительная помощь в отношении реализации.

9. Как вы реализуете алгоритм подсчета? ( Решение ) Так же, как мы сделали с другими алгоритмами сортировки O (N), такими как Radix Sort и Bucket Sort.

Если вы не знаете Счет сортировки является еще одним целочисленным алгоритмом сортировки для сортировки коллекции объектов в соответствии с ключами, которые являются небольшими целыми числами.

У него O (n) Временная сложность, которая делает его быстрее, чем подобно QuickSort и Mergesort Для конкретного набора ввода. Смотрите решение для более подробной информации.

10. Как поменять два числа без использования третьей переменной? ( Решение ) Еще один сложный вопрос, который легко, если вы знаете трюк:-) Ну, вы можете поменять два числа без использования временной или третьей переменной, если вы можете сохранить сумму чисел в одном номере, а затем минус сумма с другим номером что -то вроде

а; ;

A + B;//8 \ — B;//3 \ — B;//5

Теперь у вас есть и, поэтому цифры заменены без использования третьей или временной переменной.

11. Как реализуется алгоритм сортировки Radix? ( Решение ) Это еще один целочисленный алгоритм сортировки со сложностью времени O (n). Согласно Википедии, Radix Sort – это Неврегующий алгоритм сортировки Это сортирует данные с целочисленными ключами, группируя ключи от отдельных цифр, которые имеют одинаковое значительное положение и значение.

Вы можете увидеть Алгоритмы, часть I и Часть II Роберт Седжвик на [Coursera], чтобы узнать больше об этих На) или алгоритмы сортировки лайнера. Курс бесплатный для обучения и изучения, но вам нужно заплатить, если вы также хотите получить сертификацию.

12. Как вы реализуете алгоритм сортировки вставки? ( Решение ) Вы когда -нибудь организовали колоду карт или, может быть, рубашки в своем шкафу? Что обычное дело между этими двумя вещами? Что ж, вы помещаете следующую карту или рубашку в их правильное положение, или, если я скажу, вы вставляете следующий элемент в его надлежащее положение. Это Вставка сортировки для тебя.

13. Напишите алгоритм, чтобы проверить, перекрываются ли два прямоугольника друг с другом? ( Решение ) Это сложный вопрос алгоритма, но если вам нужно слушать своего учителя в своем 2D -классе по математике, вы можете решить эту проблему. Есть еще один трюк, проверьте все условия, когда прямоугольник не будет перекрываться, и если какое -либо условие неверно, это означает, что оба прямоугольника перекрываются друг с другом. Например, если верхняя сторона одного прямоугольника находится ниже нижней стороны других прямоугольников, они не будут перекрываться, поскольку они вертикально выровнены.

14. Как реализуется алгоритм сортировки слияний? ( Решение ) Подобно QuickSort, сортировка Merge также является алгоритмом разделения и завоевания, что означает, что вы продолжаете делить проблему, пока не сможете разобраться на самого маленького из них.

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

Единственный Разница между QuickSort и Mergesort Это Mergesort – это стабильный В то время как QuickSort – это Не стабильный Анкет Это означает, что равные элементы сохраняют свое место до и после сортировки.

Другое стоит отметить разницу в том, что, хотя оба имеют O (nlogn) Среднее время, лучше использовать QuickSort, чем Mergesort, потому что QuickSort занимает меньше времени для одного и того же количества ввода, постоянный коэффициент меньше в QuickSort, чем сортировка слияния.

15. Как вы реализуете алгоритм сортировки ведра? ( Решение ) Сорт ведра – это еще один удивительный алгоритм, который может сортировать массив, даже не сравнивая элементы.

Это известно как Алгоритм сортировки без сравнения и может дать O (n) производительность для выбранного ввода.

Если вы не знаете об алгоритме сортировки, основанного на не соответствующем, см. Введение в алгоритмы книга.

16. Напишите алгоритмы, чтобы проверить, являются ли две строки Anagram ( Решение ) Анаграмма – это то, где длина и персонаж совпадают, но не порядок, как Армия и Мэри , оба имеют одинаковое количество символов.

Один трюк в том, чтобы решить эту проблему, чтобы Сортировать массив символов и проверьте, являются ли они одинаковыми или нет.

17. Реализуйте алгоритм QuickSort на вашем любимом языке программирования? ( Решение ) Это очень простой алгоритм сортировки, но только если вы практиковали, если нет, то вы можете сбросить свой путь. Помните, QuickSort это Алгоритм разделения и завоевания Что означает, что вы продолжаете делить массив, также известный как Разделение Анкет Затем вы решаете проблему на самом маленьком уровне, также известный как базовый случай, например, когда ваш массив содержит только один или нулевой элементы.

19, Разница между сравнительными и не соответствующими алгоритмами сортировки? ( Ответ ) Как следует из названия, по сравнению с алгоритмами сортировки на основе сравнения вы должны сравнивать элементы для сортировки как QuickSort, но в алгоритме сортировки, не являющегося соблюдением, например, Счет , вы можете сортировать элементы, не сравнивая их. Удивлен?

Ну да, тогда я предлагаю вам проверить этот курс, чтобы узнать больше о На) Сортировка алгоритмов, таких как Radix Sort, сортировка и сортировка ведра. Вы можете увидеть Структуры данных и алгоритмы: Глубокое погружение Если вы хотите узнать больше об этом На) Сортировка алгоритмов.

19. Как проверить, является ли две строки вращения друг друга? ( Решение ) Есть простой трюк, чтобы решить эту проблему, Просто объедините строку с собой и проверьте, существует ли там вращение. Вы можете сделать это, используя Indexof или подстроение метод Если конкатенированная строка содержит вращение, то заданная строка является вращением прежнего. * \ *

20. Реализовать алгоритмы Sieve of Eratosthenes для основного числа? ( Решение ) Это один из сложных алгоритмов для реализации, особенно если вы не помните об этом:-) Иногда интервьюер дает вам объяснение, но в других случаях вам нужно это помнить.

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

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

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

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

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

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

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

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

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

Ресурсы для подготовки к интервью

  1. Взломать интервью с кодом , [Гейл Лакманн Макдауэлл]
  2. Структуры данных и алгоритмы: глубокое погружение с использованием Java
  3. От 0 до 1: Структуры данных и алгоритмы на Java
  4. Структура данных и анализ алгоритмов —

Заключительные заметки

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

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

Другие статьи программирования, которые вам могут понравиться:

П.с. — Если вам нужны бесплатные ресурсы, вы можете проверить этот список Бесплатные структуры данных и курсы алгоритма Чтобы начать свою подготовку.

Оригинал: “https://dev.to/javinpaul/20-basic-algorithms-problems-from-coding-interviews-4o76”