Перейти к содержимому
На этой странице

Задачи на логику

Все темы Python Developer

⌨️ Задачи


Задача №1

Есть 8 монет. Одна из монет легче остальных.
Как за минимальное количество действий определить легкую монету?

Минимальное количество взвешиваний - 2. Берём из 8 монет 6, и делим их на две группы по три монеты в каждой, и взвешиваем. Если они равны, то фальшивая монета находится в оставшихся двух монетах. Иначе, берём ту кучку монет где оказалось легче, и взвешиваем любые две монеты.


Задача №2

Ползет улитка по дереву, которое в высоту 10 метров.
В день улитка проползает 5 метров, а когда спит, сползает на 4 метра.
На какой день улитка попадет на верхушку дерева?

Улитка ежедневно преодолевает разницу между расстоянием, которое она проползает и расстоянием, на которое она сползает во время сна, то есть 5 - 4 = 1 метр вверх.

К началу шестого дня улитка находится на высоте 5 метров. За день она поднимется ещё на 5 метров и достигнет вершины; ночного спуска после этого уже нет. Ответ: 6 дней.


Задача №3

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

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

Поскольку мы бросаем монету 5 раз, общее количество возможных вариантов порядков выпадения орла и решки будет равно:

25=322^5=32

Задача №4

Вам необходимо подобрать оптимальный режим работы обжиговой печи c ограничением на максимальный расход газа.
Печь управляется 50 горелками. Горелки 5 типов, имеющие различный номинальный и фактический КПД.
Каждая горелка может быть только в двух состояниях – включена/выключена. Предложите наиболее оптимальные
методы решения данной задачи для достижения максимальной общей мощности печи.

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

  1. Динамическое программирование: Метод динамического программирования может использоваться, если у нас есть информация о зависимостях между мощностью каждой горелки, ее КПД и расходом газа. Мы можем создать таблицу, в которой будут отображены все возможные комбинации включенных горелок и их общая мощность. Затем мы можем найти оптимальную комбинацию, которая соответствует максимальной общей мощности при соблюдении ограничения на расход газа.

  2. Жадный выбор по КПД может дать допустимый вариант, но не гарантирует максимум: горелки неделимы. При независимых мощности и расходе газа задача сводится к рюкзаку 0/1; точное решение можно искать динамическим программированием или целочисленной оптимизацией.


Задача №5

Револьвер Дан шестизарядный револьвер.
В две соседние каморы помещаются патроны, остальные каморы пусты.
Далее начинается так называемая "русская рулетка". Первый участник спускает курок,
после чего обнаруживается, что ему повезло: патрона в каморе не было.
Второй участник должен решить для себя: будет ли он вращать барабан или нажмёт на спусковой крючок сразу.

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

После первого пустого положения остаются четыре равновероятных варианта текущей камеры. При двух соседних заряженных камерах в трёх из этих четырёх вариантов следующая камера пуста. Поэтому без повторного вращения условная вероятность пустой следующей камеры равна 34\frac{3}{4}. Это учитывает уже известный результат первого шага.

При новом равномерном вращении прежний результат не влияет на выбор: вероятность пустой камеры равна 46=23\frac{4}{6}=\frac{2}{3}, а заряженной — 13\frac{1}{3}. В заданной вероятностной модели повторное вращение уменьшает вероятность пустой камеры: 23<34\frac{2}{3}<\frac{3}{4}.

В математической модели задачи выгоднее не вращать барабан: после пустой каморы следующая пуста в трёх из четырёх возможных положений, то есть с вероятностью 3/4. При новом случайном вращении вероятность пустой каморы равна 2/3.


Задача №6

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

Необходимо узнать сколько курьеров получили премию за июнь 2021 года.

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

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

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

Собеседования: Python

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

Вопросы и ответы

Не нашли ответ? Напишите мне в чат. Я делаю Шпаргалку и сам отвечаю на сообщения. Расскажите, что не работает или чего вам не хватает. Может, смогу сразу взять это в работу.

Откуда взяты вопросы?

Из реальных собеседований. Основой подборки стал опыт Вадима Новосёлова: он проходил интервью и записывал вопросы. Подробнее о материалах.

Насколько эти вопросы актуальны?

Эти вопросы встречались нам на реальных собеседованиях в 2025 году. Мы регулярно проходим собеседования и пополняем подборку новыми вопросами. Основы профессии и ключевые технологии остаются востребованными годами, а детали конкретных инструментов и версий стоит сверять с текущей документацией.

На какой уровень рассчитана подборка?

Мы проходили собеседования на вакансии уровня Middle+, а иногда и на Senior-позиции. Вопросы из этих интервью вошли в подборку. Направления работы: Python-разработчик, Backend-разработчик на Python. Глубина обсуждения зависит от вакансии: будь готов объяснить основную идею, привести практический пример и разобрать ограничения и альтернативы решения.

Этот вопрос точно будет на моём собеседовании?

Гарантии нет: набор вопросов зависит от компании, задач команды, уровня вакансии и самого интервьюера. Эти вопросы уже встречались на реальных собеседованиях, но на твоём интервью ту же тему могут проверить другой формулировкой, практической задачей или обсуждением твоего опыта. Используй подборку, чтобы разобраться в теме: объясняй идею своими словами, приводи примеры и готовься обсудить ограничения и альтернативы решения. Так будет проще ответить и на знакомый вопрос, и на неожиданные уточнения.