Интересные задачи с IT-собеседований с решением
Популярные IT-компании, как Apple, Microsoft и Google, задали тренд на необычные задачи на собеседованиях, чтобы проверить креатив кандидата и его способность принимать решения в нестандартных ситуациях. Сегодня мы тоже потренируем логику и решим вместе несколько таких задач.
Два стражника
Эта логическая задача часто встречается на интервью от Apple. Согласно условиям, игрок дошёл до финального задания в квесте, но в конце пути упёрся в две двери. Одна из них приведёт его к победе и богатству, а другая — к поражению. У каждой двери стоит стражник. Оба из них знают, куда ведут их двери. Суть в том, что один из них точно скажет неправду, но кто именно — неизвестно. Задать вопрос каждому стражнику можно всего один раз.
Вопрос: что нужно спросить у стража, чтобы выйти к богатству и выиграть квест?
Ответ звучит так: «Какая дверь, по мнению другого стражника, ведёт к победе?».
Суть в том, что если игрок задаст вопрос правдимому стражнику, тот укажет на дверь с поражением. Так как второй стражник всегда врёт, он тоже укажет на дверь с поражением. Вот так, зная неправильную дверь, вам просто нужно выбрать другую.
10 тысяч серверов
Представьте, что в вашем распоряжении 10 000 серверов в дата-центре. Всеми ими вы можете управлять удалённо.
Задача: что вы сделаете с их помощью, чтобы получить миллион долларов?
Ответ можно давать в двух направлениях.
1. Прагматичный, в стиле Google. Можно продать серверы, например, за 100 долларов каждый. Так вы сможете легко заработать 1 миллион долларов или, что более вероятно, — 10 миллионов.
2. В другом случае можно произвести на интервьювера положительное впечатление и рассказать ему о нереализованном бизнес-плане, который вы тщательно обдумываете перед сном, представляя идеальную жизнь. 😏 Только вот крупным компаниям этого ответа будет мало. В Microsoft, например, вас скорее всего внимательно и вежливо выслушают, а затем спросят: «Да, это интересно, но вы уверены, что сможете заработать миллион долларов уже в первый день?».
Кофе-брейк
А сейчас давайте рассмотрим одну интересную задачу для начинающих программистов. Представьте, что перед вами стоит три автомата. Один из них выдает кофе, другой чай, а третий — оба напитка, но не в постоянной последовательности. Каждый напиток стоит 1 копейку. Но, к сожалению, на заводе перепутали таблички-названия автоматов.
Вопрос: какое наименьшее количество монет может потратить сотрудник, чтобы узнать, какой напиток в каком автомате выдают?».
Правильный ответ: одну монету. Почему? Давайте решим задачу в несколько шагов:
- Сначала нужно закинуть одну монетку, например, в автомат, на котором написано «Чай\кофе». Машина нальёт вам кофе.
- Анализируем ситуацию: если «Чай/кофе» выдал кофе, то автомат с надписью «Чай» уже не будет ни чайным, ни кофейным. Это значит, в нем разливается «Чай или кофе».
- Соответственно, тот, где написано «Кофе», будет чайным.
Вот так легко решается задача, которая на первый взгляд может показаться трудной.
Сковорода и котлеты
Не отходя далеко от темы напитков, давайте решим ещё одну вкусную задачку — про котлеты.
У вас есть две сковородки и три котлеты для бургера. На приготовление одной котлеты с одной стороны уходит 1 минута. Согласно условию, на одной сковороде помещается только одна котлета.
Итак, за какое минимальное время вы сможете полностью обжарить все 3 котлеты?
В этой задаче есть два варианта ответа. Если вы ответили «4 минуты» — вы молодец. Но не забывайте, что не всё так просто, и это проверка на нестандартное мышление. Если ваш ответ «3 минуты», скорее всего вы придерживались верной последовательности и вас примут на работу. План действий такой:
1 минута. Сначала нужно положить жарить по одной котлете на две сковороды.
2 минута. Далее переверачиваем первую котлету и убрать вторую, чтобы на её место положить третью котлеты.
3 минута. Через 60 секунд первая котлета будет готова с обеих сторон.
Пееркладываем её на булочку, и кладём дожариваться на эту сковороду вторую котлету, которую мы отложили. А третью котлету просто переворачиваем.
Bon appétit!
Рычажные весы и шарики
А эта задач просочилась в интернет после собеседований в Google. Итак, у вас есть рычажные весы и 8 шариков одинакового вида и размера. Один из них тяжелее остальных.
Нужно найти самый тяжелый шар, но учтите, что взвешивание можно проводить только 2 раза.
Подумайте хорошенько перед тем, как смотреть ответ.
Ответ:
- Делим все шарики на три группы. Сначала нужно разделить все шары на три группы. В двух группах — по 3 шара, а в одной — 2.
- Сначала кладем три шара на одну чашу весов, и три — на другую.
- Взвешиваем два шара из этой группы. Если шары весят одинаково, значит тяжелый остался в стороне.
- Если же группы по три шара весили одинаково, то нужно взвесить оставшиеся два шара и найти самый тяжелый.
⌘⌘⌘
Напишите в комментариях, сколько задач из подборки у вас получилось решить? Нам очень интересно.
😌
Кстати, HR-менеджеры REG.RU тоже проводят крутые собеседования как в онлайн, так и в офлайн формате, чтобы узнать насколько ценности человека совпадают с ценностями или ДНК-компании. Мы ищем смелых, целеустремлённых и увлечённых людей — если вы один из них, обязательно присоединяйтесь к нашей команде!
Кликай на кнопку и смотри актуальные вакансии.
Посмотреть вакансии
Какие задачи бывают на IT-собеседовании
Собеседование в IT-отделе — это то, чего боятся многие начинающие программисты. Они не знают, какие задачи перед ними будут ставиться, смогут ли ответить на все вопросы, как посмотрит на них будущее руководство. Новички-разработчики пытаются выучить назубок все формулы, которые им пригодятся. А когда начинается собеседование, то они не могут ответить и на пару вопросов, потому что такого не проходили на курсах или в университете.
На собеседовании работодатель только 20 процентов вопросов будет задавать о навыках программиста, чтобы убедиться, что на работу устраивается не официант.
Остальное — это решение логических задач. Для работодателя решающим фактором в принятии на работу сотрудника будет умение последнего выходить из сложных ситуаций. Поэтому многие вопросы ставят в тупик новобранцев. Ну а те, кто подкован, легко отвечают на них и идут дальше.
Давайте посмотрим, на какие вопросы просят работодатели отвечать тех, кто претендует на должность программиста.
Логические задачи на собеседовании
Разработчикам веб-приложений могут дать несколько задач и минуту на решение каждой. В списке представлены логические задачи, которые задают программистам на собеседовании:
- дождь и солнце;
- кофе-брейк;
- про Винни-Пуха;
- парк из 50 грузовиков;
- алгоритм для миллиона наименьших чисел.
Про «Дождь и солнце» задают обычно под самый конец собеседования. Это решающая задача, на которой обычно новички спотыкаются. Так происходит потому, что силы и энергия мозга иссякают к окончанию собеседования.
Посмотрите, какие задачи решают будущие сотрудники на собеседованиях с программистом в таких больших компаниях, как Microsoft, Apple.
Дождь и солнце
Задание таково: «Представьте, что сейчас час ночи и идет дождь. Вопрос: будет ли солнечная погода по истечении семидесяти двух часов?». Программист сдается или не знает, что ответить. На самом деле нужно просто посчитать, что 72 часа — это трое суток, значит, спустя эти часы будет снова один час ночи. Поэтому солнечной погоды не будет.
Чтобы не попасть в такую ловушку, не расслабляйтесь до окончания собеседования. Старайтесь напрягать свой мозг до тех пор, пока не выйдете за дверь. Даже если вам скажут, что вы приняты на работу, не окрыляйтесь, так как работодатель любит устраивать различные необычные ситуации, чтобы подловить будущего сотрудника.
Задача про кофе-брейк
Это еще одна интересная задача, на которой немало начинающих программистов провалило тест. Смысл заключается в следующем: перед вами стоит три автомата, выдающих чай в одном, кофе в другом и оба напитка, но не в постоянной последовательности, в третьем. Угоститься напитком из автомата можно за 1 копейку.
Однако на них написано, что названия, к сожалению, перепутаны с завода. Вопрос: какое наименьшее количество монет может потратить сотрудник, чтобы узнать, какой напиток в каком автомате выдают?».
Правильным ответом будет: «Одна монета». Чтобы проверить, где какой напиток разливается, вам нужно сделать следующие шаги:
- В первую очередь закидываете одну монету в автомат, где написано «Чай/кофе». Автомат вам налил кофе.
- Анализируем ситуацию: если «Чай/кофе» выдал кофе, то автомат с надписью «Чай» уже не будет ни чайным, ни кофейным. Это значит, в нем разливается «Чай или кофе».
- Соответственно, тот, где написано «Кофе», будет чайным.
Вот так легко решается задача, которая на первый взгляд может показаться трудной.
Про Винни-Пуха
Однажды Винни-Пух глянул на свои цифровые часы, которые показывали время 12:45, и сказал, что пора перекусить, так как все числа на часах разные. Задача для программиста состоит в определении количества раз, выделяемых Винни-Пухом на еду в сутки.
Необходимо помнить условие, что цифры на часах всегда должны быть разными. Не допускается присутствие даже двух одинаковых чисел. Правильным ответом будет 644 раза. Вычисляется следующим образом:
- Находится десятиминутный промежуток, типа 1:23, 1:24 и так далее.
- Высчитывается количество десятиминутных наборов в часе.
- В итоге получаем 644.
Парк из 50 грузовиков
Вы владеете парком из пятидесяти грузовиков. Каждая машина заправлена полным баком горючего и может проехать ровно сто километров. Вопрос: как далеко вы сможете доставить груз?
Решить задачу можно постоянным переливом топлива, если все грузовики выедут одновременно и будут переливать топливо через каждые 50 километров, когда наполовину в баке закончится горючее. Итого они смогут проехать 450 км.
Либо необходимо загрузить на один из них топливо со всех остальных грузовиков и постоянно доливать его во время пути. Тогда грузовик сможет проехать расстояние в 2500 километров.
Создать решение для нахождения миллиона наименьших чисел
Программиста попросят прописать или создать алгоритм нахождения миллиона наименьших чисел, если в ПЗУ ПК находится всего миллиард чисел. Эту задачу решают тремя методами:
- Сортировкой. Когда берут все цифры в порядке возрастания и сортируют. Только на это потребуется время.
- Минимумом кучи. Программист делает кучу из первого миллиона. Большая цифра должна находиться вверху. Затем он смотрит список и удаляет наибольшую цифру.
- С помощью ранжирования. Программисту потребуется составить такой код:
Заключение
Теперь вы знаете, что спрашивают на собеседовании. Просмотрите еще раз задачи, полистайте Интернет и изучите другие типы задач и ответов на них. Если вы желаете стать веб-разработчиком, пройдите курсы программирования в DevEducation.
100+ вопросов для интервью по кодированию для программистов и инженеров-программистов в 2022 году | by javinpaul
Решите эти часто задаваемые проблемы с программированием, чтобы успешно пройти следующие собеседования по программированию.
image_credit- Coderust 3.0: более быстрая подготовка к собеседованию по кодированию с интерактивными задачами и визуализациейСобеседования по кодированию — настолько важная вещь в жизни программиста, что он просто не может пройти мимо этого. Это первое препятствие, которое им нужно преодолеть, чтобы получить работу разработчика программного обеспечения, о которой они мечтают в школьные и студенческие годы.
Что еще хуже, вы обнаружите, что так много людей в Интернете говорят, что собеседование по программированию несовершенно, процесс найма программистов отстой и так далее, но вам не нужно обращать на них внимание, по крайней мере в начале вашей карьеры.
Возможно, они правы, но они внутри поезда, в который вы пытаетесь попасть. Неважно, как сильно они критикуют собеседования по программированию и процесс найма программистов, многие из них прошли один и тот же путь к тому, что они имеют.
Все мы знаем, что Система интервью по кодированию не идеальна, и многие пытаются ее изменить, но пока она не изменится, вы должны следовать ее правилам, чтобы попасть в Систему.
Это то, с чем должны иметь дело опытные разработчики, поскольку ваш приоритет как младшего разработчика должен заключаться в том, чтобы пройти собеседование по программированию и получить работу, которую вы хотите.
Как автор блога Java и публикации на Medium, я получаю много запросов, связанных с проблемами кодирования и способами их решения, и поэтому я продолжаю писать подобные статьи, которые помогли многим программистам напрямую и косвенно. непосредственно в своей карьере.
В этой статье я поделюсь с вами топ-100 проблем на собеседовании по кодированию из собеседований по программированию , которые должен знать каждый программист.
Теперь, когда я развеял путаницу, что собеседования по программированию важны и не должны отвлекать, давайте приступим к реальной работе. Большой вопрос : что подготовить к собеседованию по программированию?
Что ж, самое важное, что нужно подготовить, — это проблемы кодирования на основе структуры данных, такие как проблемы кодирования на основе массивов, проблемы со строками, проблемы со связанными списками, проблемы с двоичными деревьями и т.
д.
Помимо вопросов, основанных на структуре данных, большинство собеседований по программированию также задают вопросы по алгоритмам, дизайну, работе с битами и общей логике, которые я опишу в этом разделе.
Важно, чтобы вы практиковали эти концепции, потому что иногда их сложно решить на самом собеседовании. Попрактиковавшись в них раньше, вы не только ознакомитесь с ними, но и придадите больше уверенности в объяснении решения интервьюеру.
Одна из основных проблем с программированием заключается в том, что существуют сотни и тысячи задач кодирования на собеседованиях, есть даже такие сайты, как LeetCode, HackerRank, Codewars, Topcoder, freeCodeCamp, HackerEarth, которые обучают программистов кодированию интервью с множеством сложных вопросов. , что иногда просто перегружает новичка, ищущего работу.
Я верю в простоту и 10% усилий, которые дают 90% результатов, и поэтому я собрал 100 самых несложных задач кодирования, которые часто задают на реальных собеседованиях.
Решение этих задач не только придаст вам уверенности, но и поможет вам распознать некоторые из наиболее распространенных алгоритмических паттернов, которые также помогут вам решить некоторые невидимые проблемы на реальных собеседованиях.
Выбор хороших ресурсов очень важен для успеха ваших интервью по кодированию. Если вы выбрали неправильный ресурс, то больше, чем деньги, вы потеряете драгоценное время, необходимое для подготовки, следовательно, потратите некоторое время на поиск хорошего ресурса.
Если вам нужны рекомендации, ниже приведены некоторые из моих проверенных ресурсов для углубленного изучения структуры данных и алгоритмов для интервью по кодированию:
- Структуры данных и алгоритмы: глубокое погружение с использованием Java для разработчиков Java. Узнайте о массивах, связанных списках, деревьях, хеш-таблицах, стеках, очередях, кучах, алгоритмах сортировки и алгоритмах поиска
Структуры данных и алгоритмы: глубокое погружение с использованием Java
алгоритмы на Java (или другом объектно-ориентированном языке программирования), но…
udemy.
com
- Алгоритмы и структуры данных в Python для тех, кто любит Python
Руководство по реализации самых современных алгоритмов с нуля: массивы, связанные списки, графовые алгоритмы и сортировка
Алгоритмы и структуры данных в Python
Этот курс посвящен структурам данных и алгоритмам. Мы собираемся реализовать задачи на Python. Я очень…
udemy.com
- Мастер-класс по алгоритмам и структурам данных JavaScript от Colt_Steele для программистов JavaScript. Учебный лагерь для интервью с пропавшими без вести в области компьютерных наук и кодирования. Узнайте все, что вам нужно, чтобы пройти сложные собеседования по программированию.
Мастер-класс по алгоритмам и структурам данных JavaScript
Этот курс включает в себя месяцы компьютерных наук и материалы для подготовки к интервью в 20 часов видео. Содержание основано на…
udemy.
com
- Освоение структур данных и алгоритмов с использованием C и C++ для тех, кто хорошо владеет C/C++
- Структуры данных в Java: повторение интервью by Группа обучения для обновления важных структур данных и алгоритмов концепции в Java. Этот курс содержит подробный обзор всех распространенных структур данных и предоставляет подробную информацию об уровне реализации в Java, чтобы читатели могли хорошо подготовиться.
- Grokking the Coding Interview: шаблоны для вопросов по кодированию от Fahim ul Haq и The Educative Team
Это похоже на мета-курс для интервью по кодированию, который не научит вас, как решать проблему кодирования, а вместо этого научит вас, как решать определенный тип проблемы кодирования с использованием шаблонов. . Освойте эти 15 основных шаблонов вопросов для собеседования, и вы сможете справиться со всем, с чем столкнетесь на собеседовании.
Несколько лет назад, освежая в памяти ключевые структуры данных и просматривая…www.educative.io
И, если вы предпочитаете книги, нет ничего лучше, чем Cracking The Coding Interview , автор Gayle Laakmann McDowell , в котором представлены вопросов и решений по программированию 1. Хорошая книга для быстрой подготовки к собеседованию по программированию. Кстати, я также заработаю немного денег, если вы купите любой из этих ресурсов, упомянутых здесь.
Вот несколько моих практических советов, которые помогут пройти следующее собеседование по программированию. Они заработаны тяжелым трудом, и я научился на своих ошибках и опыте.
- Нет лучшего способа преуспеть на собеседованиях по программированию, чем отработать как можно больше задач по кодированию. Это не только научит ваш разум распознавать алгоритмические закономерности в задачах, но и придаст вам столь необходимую уверенность в решении проблем, с которыми вы раньше никогда не сталкивались.

- Мой второй совет — изучить как можно больше структур данных и алгоритмов. Это дополнение к предыдущему совету, но оно также включает в себя чтение, а не просто практику. Например, если вы знаете о хеш-таблице, вы также можете легко решить множество проблем с массивами и счетчиками. То же самое верно для деревьев и графов.
- Выбор правильной структуры данных является очень важной частью собеседования по разработке программного обеспечения и кодированию, и пока вы не узнаете их, вы не сможете сделать выбор.
- Засекайте время самостоятельно. Кандидаты, которые решают проблемы на собеседовании в установленные сроки и быстро, с большей вероятностью преуспеют на собеседовании, поэтому вам также следует засечь время.
- Подумайте о пограничных случаях и пропустите через них свой код. Некоторыми хорошими пограничными случаями могут быть пустые входные данные, некоторые странные входные данные или некоторые действительно большие входные данные для проверки граничных условий и ограничений.

- Решив проблему, попробуйте объяснить ее другу или коллеге, как он тоже интересуется проблемами кодирования. Это покажет вам, действительно ли вы поняли проблему или нет. Если вы можете легко объяснить, значит, вы поняли . Кроме того, обсуждение заставляет ваш мозг работать, и вы можете найти альтернативное решение и найти некоторые недостатки в ваших существующих алгоритмах.
- Еще один полезный совет, чтобы преуспеть в собеседованиях по кодированию, – это , которые появляются на собеседованиях по кодированию, и их много. Вы обнаружите, что становитесь лучше после каждого собеседования, и это также поможет вам получить несколько предложений, что в дальнейшем позволит вам лучше вести переговоры и получить те дополнительные 30–50 тысяч, которые вы обычно оставляете на столе, если у вас есть только одно предложение.
- Кстати, если вы готовы к собеседованию по программированию, вы также можете пройти тест TripleByte и перейти непосредственно к финальному этапу собеседований с ведущими технологическими компаниями, такими как Coursera, Adobe Acrobat, Dropbox, Grammarly, Uber, Quora, Evernote, Twitch.
и многое другое. Раньше я не знал о Triplebyte, но они предоставляют отличный сервис для соискателей. Большое им спасибо.
Triplebyte: Инженер-программист Поиск работы
Пройдите тест. Получайте предложения сразу от нескольких ведущих технологических компаний.
Triplebyte.com
Не теряя больше вашего времени, вот мой список из 100 часто задаваемых проблем с программированием на собеседованиях по программированию. Чтобы получить большую часть этого списка, я предлагаю решить проблему.
Сделай сам, даже если ты застрял, потому что это единственный способ научиться. После решения пары задач вы обретете уверенность.
Я также предлагаю вам взглянуть на решение, когда вы застряли или уже решили проблему, так вы научитесь сравнивать различные решения и подходить к проблеме с разных сторон.
- Как реализован алгоритм пузырьковой сортировки? ( решение )
- Как реализован алгоритм сортировки слиянием? ( решение )
- Как подсчитать вхождение данного символа в строку? ( решение )
- Как напечатать первый неповторяющийся символ из строки? ( решение )
- Как вы конвертируете данную строку в int как atoi() ? ( решение )
- Как реализовать алгоритм сортировки ведром? ( решение )
- Как реализовать алгоритм сортировки подсчетом? ( решение )
- Как удалить дубликаты из массива на месте? ( решение )
- Как перевернуть массив на месте в Java? ( решение )
- Как удаляются дубликаты из массива без использования какой-либо библиотеки? ( решение )
- Как реализован алгоритм сортировки по основанию? ( решение )
- Как поменять местами два числа без использования третьей переменной? ( раствор )
- Как проверить, перекрываются ли два прямоугольника друг с другом? ( решение )
- Как спроектировать торговый автомат? ( решение )
- Как найти пропущенное число в заданном целочисленном массиве от 1 до 100? ( решение )
- Как найти повторяющееся число в заданном целочисленном массиве? ( решение )
- Как найти повторяющиеся числа в массиве, если он содержит несколько дубликатов? ( решение )
- Разница между стабильным и нестабильным алгоритмом сортировки? (ответ)
- Как реализован итеративный алгоритм быстрой сортировки? ( решение )
- Как найти наибольшее и наименьшее число в несортированном массиве целых чисел? ( решение )
- Как перевернуть связанный список на месте? (решение)
- Как добавить элемент в середину связанного списка? (решение)
- Как сортировать связанный список в Java? ( решение )
- Как найти все пары целочисленного массива, сумма которых равна заданному числу? ( решение )
- Как реализовать алгоритм сортировки вставками? ( решение )
- Как удаляются дубликаты из заданного массива в Java? ( решение )
- как удалить повторяющийся символ из строки? ( решение )
- Как найти максимальное количество символов в заданной строке? ( решение )
- Как целочисленный массив сортируется на месте с помощью алгоритма быстрой сортировки? ( решение )
- Как перевернуть заданную строку на месте? ( решение )
- Как вы печатаете повторяющиеся символы из строки? ( решение )
- Как проверить, являются ли две строки анаграммами друг друга? ( решение )
- Как найти все перестановки строки? ( решение )
- Как данную строку можно перевернуть с помощью рекурсии? ( решение )
- Как проверить, является ли данная строка палиндромом? ( решение )
- Как найти длину самой длинной подстроки без повторяющихся символов? (решение)
- Учитывая строку str, как найти самую длинную палиндромную подстроку в строке str? (решение)
- Как проверить, содержит ли строка только цифры? ( решение )
- Как удалить N-й узел из конца связанного списка? ( решение )
- Как объединить два отсортированных связанных списка? (решение)
- Как преобразовать отсортированный список в двоичное дерево поиска? ( решение )
- Как найти повторяющиеся символы в заданной строке? ( решение )
- Как подсчитать количество гласных и согласных в данной строке? ( решение )
- Как поменять местами слова в данном предложении без использования каких-либо библиотечных методов? ( решение )
- Как проверить, являются ли две строки вращением друг друга? ( решение )
- Как преобразовать массив байтов в строку? ( решение )
- Как удалить заданный символ из строки? ( раствор )
- Как найти средний элемент односвязного списка за один проход? ( решение )
- Как проверить, содержит ли данный связанный список цикл? Как найти начальный узел цикла? ( решение )
- Как перевернуть связанный список? ( решение )
- Как перевернуть односвязный список без рекурсии? ( решение )
- Как удаляются повторяющиеся узлы в несортированном связанном списке? ( решение )
- Как найти длину односвязного списка? ( решение )
- Как найти третий узел с конца в односвязном списке? ( решение )
- Как найти сумму двух связанных списков с помощью стека? ( решение )
- В чем разница между массивом и связанным списком? ( ответ )
- Как удалить дубликаты из отсортированного связанного списка? ( решение )
- Как найти узел, с которого начинается пересечение двух односвязных списков.
( решение ) - Учитывая связный список и значение x , разделите его так, чтобы все узлы были меньше x идут перед узлами, большими или равными x . ( решение )
- Как проверить, является ли данный связанный список палиндромом? (решение)
- Как удалить все элементы из связанного списка целых чисел, которые соответствуют заданному значению? (решение)
- Как реализовано бинарное дерево поиска? ( решение )
- Как вы выполняете предварительный обход в заданном двоичном дереве? ( решение )
- Как пройти заданное бинарное дерево в прямом порядке без рекурсии? ( решение )
- Как выполнить неупорядоченный обход в заданном двоичном дереве? ( решение )
- Как вывести все узлы заданного бинарного дерева, используя неупорядоченный обход без рекурсии? ( решение )
- Как реализовать алгоритм обратного обхода? ( решение )
- Как пройти бинарное дерево в обратном порядке без рекурсии? ( решение )
- Как печатаются все листья бинарного дерева поиска? ( решение )
- Как подсчитать количество листовых узлов в заданном бинарном дереве? ( решение )
- Как выполнить бинарный поиск в заданном массиве? ( решение )
- Как поменять местами два числа без использования третьей переменной? ( решение )
- Как проверить, перекрываются ли два прямоугольника друг с другом? ( решение )
- Как спроектировать торговый автомат? ( решение )
- Как реализовать кэш LRU на вашем любимом языке программирования? ( раствор )
- Как проверить, является ли данное число палиндромом? ( решение )
- Как проверить, является ли данное число числом Армстронга? ( раствор )
- Как найти все простые множители заданного числа? ( решение )
- Как проверить, является ли данное число положительным или отрицательным в Java? ( решение )
- Как найти наибольший простой делитель заданного целого числа? ( решение )
- Как напечатать все простые числа до заданного числа? ( раствор )
- Как распечатать треугольник Флойда? ( решение )
- Как напечатать треугольник Паскаля? ( раствор )
- Как вычислить квадратный корень из заданного числа? ( решение )
- Как проверить, является ли данное число простым? ( решение )
- Как сложить два числа без использования оператора плюс в Java? ( решение )
- Как проверить, является ли заданное число четным/нечетным без использования арифметического оператора? ( решение )
- Как распечатать заданную пирамидальную структуру? ( решение )
- Как найти самый высокий повторяющийся мир из данного файла в Java? ( решение )
- Как обратить данное целое число в Java? ( решение )
- Как преобразовать десятичное число в двоичное в Java? ( решение )
- Как проверить, является ли данный год високосным в Java? ( решение )
- Можете ли вы реализовать алгоритм бинарного поиска без рекурсии? ( решение )
- Разница между стабильным и нестабильным алгоритмом сортировки? ( ответ )
- Что такое алгоритм поиска в глубину для бинарного дерева? (решение)
- Как реализован итеративный алгоритм быстрой сортировки? ( решение )
- Как реализовать алгоритм сортировки вставками? ( решение )
- Как реализован алгоритм сортировки слиянием? ( решение )
- В чем разница между алгоритмами сортировки со сравнением и без сравнения? ( ответ )
- Как реализовать алгоритмы решета Эратосфена для простых чисел? ( решение )
Этих многих вопросов должно быть достаточно, но если вам нужно больше таких вопросов по кодированию, вы можете воспользоваться помощью таких книг, как Cracking The Code Interview , by Gayle Laakmann McDowell , в котором представлено 189+ вопросов и решений по программированию.
Хорошая книга для быстрой подготовки к собеседованию по программированию.Это одни из самых распространенных вопросов, не связанных со структурой данных и алгоритмами, которые помогут вам действительно хорошо пройти собеседование.
Я также поделился многими этими вопросами в своем блоге, поэтому, если вы действительно заинтересованы, вы всегда можете пойти туда и поискать их.
Эти общих вопросов о кодировании, структуре данных и алгоритмах — те, которые вам необходимо знать, чтобы успешно пройти собеседование в любой компании, большой или маленькой, для любого уровня работы по программированию.
Если вы ищете работу по программированию или разработке программного обеспечения в 2019 году, вы можете начать подготовку с этого списка вопросов по программированию, и если вы готовы к собеседованию, вы также можете пройти тест TripleByte и сразу перейти к финалу. раунд интервью с ведущими технологическими компаниями, такими как Coursera, Adobe, Dropbox, Grammarly и многими другими.

Triplebyte: Инженер-программист Поиск работы
Пройти тест. Получайте предложения сразу от нескольких ведущих технологических компаний.
Triplebyte.com
Этот список содержит хорошие темы для подготовки, а также помогает оценить вашу подготовку, чтобы выявить ваши сильные и слабые стороны.
Хорошее знание структуры данных и алгоритмов важно для успеха в кодировании интервью, и именно на этом вы должны сосредоточить свое внимание.
Дальнейшее обучение
Структуры данных и алгоритмы: глубокое погружение с использованием Java
10 книг для подготовки к собеседованию по техническому программированию/кодированию
10 книг по алгоритмам, которые должен прочитать каждый программист
5 лучших книг по структурам данных и алгоритмам для разработчиков Java
От 0 до 1: Структуры данных и Алгоритмы в Java
Структура данных и анализ алгоритмов — собеседование при приеме на работу
20+ задач кодирования на основе строк из интервью
20+ задач связанных списков из интервью
20+ задач на основе базовых алгоритмов из интервьюЗаключительные заметки
Спасибо, вы дочитали статью до конца… Удачи на собеседовании по программированию! Это, конечно, будет непросто, но, следуя этим вопросам алгоритма поиска и сортировки, вы на шаг ближе, чем другие.
Кстати, чем больше вопросов вы решите на практике, тем лучше будет ваша подготовка.Итак, если вы считаете, что 100 задач по программированию недостаточно и вам нужно больше, тогда ознакомьтесь с этими дополнительными 50 вопросами по программированию для телефонных интервью и эти книги и курсы для более тщательной подготовки.
Всего наилучшего на собеседовании по программированию.
Другие Статьи вам могут понравиться:
10 лучших бесплатных курсов по структуре данных и алгоритмам для начинающих — лучшее из лота
Алгоритмы и структура данных — две из самых фундаментальных и важных тем компьютерных наук, которые…
medium.com
10 лучших книг по структуре данных и алгоритмам для начинающих в Java, C/C++ и Python
Алгоритмы не зависят от языка, и любой достойный программист должен уметь преобразовывать их в код на своем…
medium.com
Мои любимые бесплатные курсы для углубленного изучения структур данных и алгоритмов Структуры данных и алгоритмы являются одними из самых важных тем для программистов, как для получения работы…
www.
freecodecamp.orgТоп 75 вопросов на собеседовании по программированию Ответы на собеседование по программированию
Привет, ребята, если вы готовитесь к следующему собеседованию по программированию и ищете ответы на часто задаваемые вопросы по кодированию или программированию, чтобы попрактиковаться, то вы обратились по адресу. В этой статье я поделюсь некоторыми из наиболее часто задаваемых вопросов по кодированию на собеседованиях по программированию. Чтобы хорошо пройти собеседование по кодированию, вам нужна практика, вы просто не можете пойти туда и попытаться решить проблемы с кодированием за ограниченное время, это на самом деле одна из самых распространенных причин провала ваших собеседований по программированию. Иногда интервьюер также задает более простые вопросы кодирования во время телефонного интервью, такие как повторение массива на месте или переворачивание строки на месте.
Иногда, когда вы впервые слышите эти популярные вопросы по программированию на собеседовании, вы спотыкаетесь из-за нервозности и отсутствия подготовки, и именно здесь важно знать популярные вопросы по программированию, прежде чем идти на какое-либо собеседование по программированию.
Большинство вопросов по кодированию основаны на структурах данных, таких как массив, строка, связанный список, двоичное дерево и т. д., но иногда вы также получаете алгоритмические, каверзные, логические и основанные на сценариях вопросы, например, как поменять местами два целых числа без использования временная переменная или как проверить, пересекаются ли два прямоугольника друг с другом или нет.
Вот почему я разделил этот список проблем с кодированием на пять категорий, в том числе
вопросы кодирования на основе массивов , вопросы на основе строк, вопросы со связанными списками, вопросы о двоичном дереве и другие разные вопросы, где вы найдете вопросы по битам. манипуляции, дизайн, хитрые, логические и другие разные темы.Кстати, хорошее знание структуры данных и алгоритмов очень важно, и хотя вы узнаете много новых концепций, решая эти вопросы, я предлагаю вам сначала освежить свои знания о структуре данных и алгоритмах, прежде чем пытаться ответить на эти вопросы, присоединившись к всеобъемлющему конечно нравится Data Structures and Algorithms: Deep Dive Using Java на Udemy.

Нет смысла задавать эти вопросы, если у вас недостаточно знаний о структуре данных и алгоритмах.
50 лучших вопросов для собеседования по кодированию для программистовВот мой список некоторых из самых популярных вопросов по программированию, чтобы взломать любое собеседование по программированию.
Вопросы больше похожи на те, что вы найдете в популярной книге Гейл Лакманн Макдауэлл «Взлом на собеседовании по кодированию», одной из книг, необходимых для успешного прохождения собеседования, но больше внимания уделяется структуре данных и кодированию, а не затрагиванию всех возможных тем. требуется для собеседования по программированию, такого как SQL, UNIX, базы данных, сети и т. д., для этого вам нужно читать книги, и вы можете найти много хороших названий здесь.
Мы начнем список с изучения вопросов на основе массивов, таких как поиск пар, сумма которых задана числом, а затем перейдем к вопросам на основе строк, вопросам на основе связанных списков , вопросам о двоичном дереве и, наконец, к другим темам.
1. Вопросы для собеседования по программированию на основе массивов
. Если вы спросите меня только об одной теме, чтобы действительно хорошо подготовиться к собеседованию по программированию, я бы выбрал множество. Это одна из основных структур данных и любимая часть интервью по кодированию. Существует так много популярных вопросов для интервью по кодированию, которые основаны на массиве, некоторые из них простые, а некоторые сложные, но вы можете быть уверены, что вы увидите некоторые вопросы, основанные на массиве, на вашем следующем собеседовании по программированию.Если вы не знаете, массив — это структура данных, которая содержит другие объекты, такие как String, int, float и т. д. Она хранит их в смежных местах в памяти , что упрощает их поиск и извлечение за O(1 ) время с использованием индекса.
Вставка и удаление массива сложны, потому что вы не можете изменить размер однажды созданного массива, и вам нужно создать новый массив и скопировать элементы из старого в новый.

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

Это единственный верный способ научиться программировать, решая эти вопросы по кодированию.Если вам трудно ответить на эти вопросы, то еще раз предлагаю вам сначала освежить свои знания о фундаментальных структурах данных, таких как массивы, пройдя всесторонний курс. Если вам нужны рекомендации, Алгоритмы и структуры данных, часть 1 и часть 2 Роберта Харвика, являются двумя лучшими курсами для начала. Вы также узнаете о нотации Big(O) и о том, как вычислять временную и пространственную сложность.
Если вы считаете, что этих 10 вопросов из массива недостаточно, и вы заинтересованы в решении других задач программирования на основе массива, вы также можете проверить эти 30 вопросов по кодированию на основе массива для большей практики.
2. Вопросы для собеседования по кодированию на основе строкСледующей популярной темой на собеседованиях по программированию после массива является String, но если вы хорошо разбираетесь в массиве, вы легко сможете решать вопросы по программированию String, потому что String — это не что иное, как массив символов.

Строка реализована по-разному в другом языке программирования, например, в C это массив символов, заканчивающийся NULL, но в Java это объект. Однако вы все равно можете получить доступ к базовому массиву, чтобы применить свою логику.
Вот список некоторых часто задаваемых вопросов о кодировании, основанных на String. Хотя некоторые из них довольно старые, вы все еще можете ожидать этого на собеседовании по программированию:
11. Как вывести повторяющиеся символы из строки? (решение)
12. Как проверить, являются ли две строки анаграммами друг друга? (решение)
13. Как напечатать первый неповторяющийся символ из строки?
(решение)14. Как перевернуть заданную строку с помощью рекурсии? (решение)
15. Как проверить, содержит ли строка только цифры? (решение)
16. Как найти повторяющиеся символы в строке? (решение)
17. Как посчитать количество гласных и согласных в заданной строке? (решение)
18.
Как подсчитать вхождение заданного символа в строку? (решение)19. Как найти все перестановки строки? (решение)
20. Как поменять местами слова в заданном предложении без использования каких-либо библиотечных методов? (решение)
21. Как проверить, являются ли две строки вращением друг друга? (решение)
22. Как проверить, является ли данная строка палиндромом? (решение)
Подобно массиву, я также дал ссылку на решение для всех этих проблем со строками, но если вы хотите получить большую часть этой статьи, вам лучше решить эти вопросы, не глядя на ответы. Только когда вы застряли и у вас мало времени, вы можете посмотреть на решение.
И, если вам трудно решить эти часто задаваемые проблемы со строками, возможно, пришло время вернуться к чертежной доске и снова изучить основы структуры данных String. Если вам нужны ресурсы, то Структуры данных и алгоритмы Специализация
на Coursera — один из лучших онлайн-ресурсов, который вы можете использовать, чтобы укрепить свои основы.
Вы также можете извлечь из этого урок, сравнив свое решение с решением, которое я дал. Не обязательно, чтобы они были одинаковыми, но вы можете многому научиться, сравнивая их, и если вам нужно больше практики, вот еще один список 20 вопросов по алгоритму String.
3. Вопросы для собеседования по программированию на основе связанных списковНаряду с массивом и строкой связанный список является еще одной популярной структурой данных в мире программирования, а также на собеседованиях по программированию. В связанном списке вы найдете множество вопросов, таких как обращение связанного списка, добавление нового элемента, удаление элемента из середины и т. д.
Это также аналог структуры данных массива. В то время как массив хранит элементы в смежных местах памяти, связанный список хранит их в разных местах и находит их, сохраняя их адрес. связанный список состоит из узлов, внутренней структуры данных, которая содержит значение, а также адрес следующего узла.

Из-за своей структуры проще добавлять и удалять элементы из связанного списка, например, за O(1) раз, если вы добавляете или удаляете из головы, но поиск не менее сложен и занимает O(n) времени, так как вы приходится буквально пройтись по каждому элементу.
В любом случае, вот несколько простых и сложных вопросов по кодированию на основе связанных списков для вашей практики:
23. Как найти средний элемент односвязного списка за один проход? (раствор)
24. Как проверить, содержит ли заданный связанный список цикл? Как найти начальный узел цикла? (решение)
25. Как обратить связанный список? (решение)
26. Как перевернуть один связанный список без рекурсии? (решение)
27. Как удалить повторяющиеся узлы в несортированном связанном списке? (решение)
28. Как найти длину односвязного списка? (решение)
29. Как найти 3-й узел с конца в односвязном списке? (решение)
30. Как найти сумму двух связанных списков с помощью Stack? (программа)
Подобно массиву и строке, я также дал ссылки на все решения, но вам следует просматривать их только после того, как вы решили проблему самостоятельно или чувствуете, что застряли.

Ключом к решению связанного списка является хорошее понимание рекурсии потому что связанный список является естественно рекурсивной структурой данных, например, если вы удалите один узел из связанного списка, результатом будет другой связанный список, но многие программисты изо всех сил пытаются понять рекурсию.
Так было и со мной, но после практики и визуализации того, как на самом деле работает рекурсия, я преодолел этот недостаток. Если вы находитесь в одной лодке, я настоятельно рекомендую вам пройти визуальный курс, такой как Визуализация структур данных и алгоритмов в Java , чтобы изучить рекурсию и структуру данных. Это очень поможет вам в вашем мыслительном процессе и навыках решения проблем.
Как только вы поймете рекурсию, большинство проблем, основанных на связанных списках, имеют более простое рекурсивное решение, чем их итеративная версия. А если вам нужно больше практики, вот еще один список из 30 вопросов по программированию связанных списков для справки.
4. Вопросы для собеседования по кодированию на основе двоичного дерева
Дерево — еще одна популярная структура данных в мире программирования и на собеседованиях по программированию. В отличие от массива и связанного списка, которые считаются линейными структурами данных, дерево считается иерархической структурой данных и используется для организации информации в иерархическом порядке.
Существует множество различных видов деревьев, например. двоичное дерево, двоичное дерево поиска, дерево AVL, красно-черное дерево и т. д., но двоичные и двоичные деревья поиска, также известные как BST, являются двумя из самых популярных, и большинство вопросов основано на них.
Некоторые вопросы также основаны на теоретических знаниях о древовидной структуре данных, например. нахождение высоты дерева, нахождение листовых узлов, проверка сбалансированности дерева и т. д., поэтому вам также следует потратить некоторое время на изучение основ, а также на отработку вопросов по кодированию.

В любом случае, вот список популярных вопросов по программированию на основе двоичного дерева и двоичного дерева поиска, которые стоит попрактиковать перед собеседованием:
30. Можете ли вы написать программу для реализации двоичного дерева поиска? (решение)
31. Как выполнить предварительный обход в заданном бинарном дереве? (решение)
32. Написать программу для обхода данного бинарного дерева в предварительном порядке без рекурсии (решение)
33. Как выполнить обход по порядку в заданном бинарном дереве? (решение)
34. Как вывести все узлы заданного бинарного дерева, используя неупорядоченный обход без рекурсии (решение)
35. Как реализовать алгоритм обратного обхода? (решение)
36. Как обойти бинарное дерево в обратном порядке без рекурсии (решение)
37. Как вывести все листья бинарного дерева поиска? (решение)
38. Как подсчитать количество листовых узлов в заданном бинарном дереве? (решение)
39.
Как выполнить бинарный поиск в заданном массиве? (решение)Подобно вопросам с массивами, связанными списками и строками, я также дал ссылки на все решения для вопросов о двоичном дереве, но вам следует смотреть на них только после того, как вы попробуете это сами.
Один прием, которым я хотел бы поделиться с вами при решении вопросов о дереве, заключается в том, чтобы помнить, что, подобно связному списку, дерево также является рекурсивной структурой данных, и большинство проблем, основанных на деревьях, имеют простое рекурсивное решение.
Например, поддерево также является деревом, что означает, что вы можете применить те же шаги к поддереву, чтобы найти рекурсивное решение. В приведенном выше списке многие популярные алгоритмы дерева, например. предварительный заказ, пост-заказ, заказ реализуются как рекурсивно, так и итеративно.
Если вы не уверены в решении этих проблем и хотите освежить свои знания о двоичном дереве и других структурах данных, прежде чем пытаться ответить на эти вопросы, вам следует ознакомиться с Структуры данных и алгоритмы: глубокое погружение с использованием Java от Udemy.
5. Разные вопросы для интервью по программированию
Несмотря на то, что вопросы, основанные на структуре данных, составляют основную часть интервью по кодированию, всегда есть некоторые вопросы из таких тем, как алгоритмы сортировки, манипуляции с битами, проектирование программного обеспечения, динамическое программирование и другие логические и каверзные вопросы.
В приведенном ниже списке вы найдете большинство распространенных вопросов по поиску и сортировке, а также несколько вопросов по дизайну и работе с битами.
40. Как реализовать алгоритм пузырьковой сортировки? (решение)
41. Как реализовать итеративный алгоритм быстрой сортировки? (решение)
42. Как реализовать алгоритм сортировки вставками? (решение)
43. Как реализовать алгоритм сортировки слиянием? (решение)
44. Как реализовать алгоритм групповой сортировки? (решение)
45. Как реализовать алгоритм сортировки подсчетом? (решение)
46.
Как реализовать алгоритм сортировки по основанию? (решение)47. Как поменять местами два числа без использования третьей переменной? (решение)
48. Как проверить, пересекаются ли два прямоугольника друг с другом? (решение)
49. Как спроектировать торговый автомат? (решение)
50. Как реализовать кэш LRU на вашем любимом языке программирования? (раствор)
51. Как проверить, является ли данное число палиндромом? (решение)
52. Как проверить, является ли данное число числом Армстронга? (решение)
53. Как найти все простые делители заданного числа? (решение)
54. Как в Java проверить, является ли заданное число положительным или отрицательным? (решение)
55. Как найти наибольший простой делитель заданного целого числа? (решение)
56. Напишите программу для вывода всех простых чисел до заданного числа? (решение)
57. Написать программу для печати треугольника Флойда? (решение)
58.
Написать программу для вывода треугольника Паскаля? (решение)59. Как вычислить квадратный корень из заданного числа? (решение)
60. Как проверить, является ли заданное число простым? (решение)
61. Как реализовать алгоритм решета Эратосфена? (решение)
62. Как сложить два числа без использования оператора плюс в Java? (решение)
63. Напишите программу для вычитания двух двоичных чисел? (решение)
64. Написать программу для транспонирования матрицы? (решение)
65. Написать программу для сложения или вычитания двух матриц? (решение)
66. Написать программу для умножения двух матриц на Java? (решение)
67. Как вычислить среднее всех чисел в данном массиве? (решение)
68. Как проверить, является ли заданное число четным/нечетным без использования арифметического оператора? (решение)
69. Написать программу для нахождения НОД двух чисел с помощью алгоритма Евклида? (решение)
70.
Как найти количество единиц (установленный бит) в заданной битовой последовательности? (решение)71. Написать программу для заданной структуры пирамиды? (решение)
72. Как найти самый высокий повторяющийся мир из заданного файла в Java? (решение)
73. Как обратить данное целое число в Java? (решение)
74. Как преобразовать десятичное число в двоичное в Java? (решение)
75. Как проверить, является ли данный год високосным в Java? (решение)
Как и в предыдущих темах, я предоставил ссылки на решение, но вам следует просматривать их только после того, как вы попытаетесь решить вопросы самостоятельно. Это важно для обучения.
Это все о некоторых из основных вопросов для собеседования по программированию и кодированию, которые помогут пройти любое собеседование по программированию. Этот список охватывает наиболее важные темы, такие как массив, строка, связанный список, двоичное дерево и некоторые другие.

После того, как вы ответите на все эти вопросы по кодированию, вы сможете не только ответить на них, когда увидите их на собеседовании, но и развить чувство кодирования и способность решать проблемы, которые помогут вам решать новые и слегка измененные версии этих вопросов. на реальных собеседованиях по программированию.
Однако, если вы не торопитесь и хотите еще больше отточить свои навыки кодирования, вот еще несколько ресурсов для практических вопросов
Некоторые Полезные ресурсы для интервью по программированию
- Структуры данных в Java: повторение интервью
- 10 курсов по структуре данных, алгоритмам и программированию для прохождения собеседований
- 10 книг по алгоритмам, которые должен прочитать каждый программист
- 10 бесплатных курсов для углубленного изучения структуры данных и алгоритмов
- LeetCode — Платформа для собеседований по программированию
- 20+ задач на основе бинарного дерева для интервью
- 10 курсов для подготовки к собеседованию по программированию
- 50+ проблем со структурой данных и алгоритмов из интервью
- Как спроектировать торговый автомат на Java
- Более 100 вопросов для собеседования по кодированию для программистов
- 21 вопрос на собеседовании по строковому программированию
- 5 бесплатных курсов по изучению алгоритмов для интервью
- 10 книг для подготовки к собеседованию по техническому программированию/кодированию
Большое спасибо за чтение этой статьи до сих пор.
- Нет лучшего способа преуспеть на собеседованиях по программированию, чем отработать как можно больше задач по кодированию. Это не только научит ваш разум распознавать алгоритмические закономерности в задачах, но и придаст вам столь необходимую уверенность в решении проблем, с которыми вы раньше никогда не сталкивались.


Несколько лет назад, освежая в памяти ключевые структуры данных и просматривая…

и многое другое. Раньше я не знал о Triplebyte, но они предоставляют отличный сервис для соискателей. Большое им спасибо.
( решение )
Хорошая книга для быстрой подготовки к собеседованию по программированию.
Кстати, чем больше вопросов вы решите на практике, тем лучше будет ваша подготовка.
freecodecamp.org

.


Как подсчитать вхождение заданного символа в строку? (решение)




Как выполнить бинарный поиск в заданном массиве? (решение)
Как реализовать алгоритм сортировки по основанию? (решение)
Написать программу для вывода треугольника Паскаля? (решение)
Как найти количество единиц (установленный бит) в заданной битовой последовательности? (решение)