Разомнем мозг! В этой статье, опубликованной proglib.io, собраны логические и математические задачи, которые нередко встречаются на собеседованиях и могут попасться вам.
Основные проблемы, которые часто возникают в процессе интервью, не в отсутствии опыта или подготовки. Даже по-настоящему опытный разработчик может легко «споткнуться» о решение какой-нибудь хитро скроенной задачки. Поэтому мы поговорим не о том, как составлять резюме и выгодно презентовать себя. Фокусируемся на решении нетривиальных задач, которые включают в себя решение логического и/или математического характера.
«Крепкий орешек»
Помните загадку из третьего фильма? Если нет, то вспоминайте, так как этим вопросом любят потчевать в Microsoft.
Задача:
Есть 2 пустых ведра: первое объемом 5 л, второе — 3 л. Как с их помощью отмерить 4 литра воды?
Баночки с таблетками
Задача:
Есть двадцать баночек с таблетками. Почти во всех таблетки весят по 1 г, и только в одной — по 1,1 г. У нас есть точные весы, с помощью которых нужно определить баночку, каждая таблетка которой весит 1,1 г. Как это сделать, если можно взвесить только 1 раз?
Давайте абстрагируемся и представим, что у нас 2 баночки, в одной из которых таблетки более тяжелые. Даже если мы поставим их обе на весы, мы ничего не узнаем. Но если мы достанем из одной баночки 1 таблетку, из другой — 2 и положим их на весы — вот тогда-то и откроется истина 🙂 В данном случае вес будет 2,1 или 2,2 (в зависимости от того, сколько каких таблеток мы взяли). Так и определяем нашу баночку.Вернемся к задаче. Из каждой баночки нужно доставать разное количество таблеток. То есть из первой баночки 1 таблетку, из второй — 2, из третьей — 3 и так далее. Если бы каждая таблетка весила по 1 г, общий вес составил бы 210 г. Но поскольку в одной из баночек таблетки тяжелее, вес будет больше. Для определения нужной баночки просто воспользуемся формулой:
№ тяжелой баночки = (вес - 210) * 10
Но на этом интересные логические и математические задачи не заканчиваются. Идем дальше!
Свидание
Задача:
Парень и девушка договорились встретиться ровно в 21:00. Проблема в том, что у обоих часы идут неправильно. У девушки часы спешат на 2 мин., но она думает, что они на 3 мин. отстают. У парня же часы отстают на 3 мин., но он считает, что они на 2 мин. спешат. Кто из пары опоздает на свидание?
Ответ:
Ничего сложного: чистая математика. Если у девушки часы спешат, а она думает, что они отстают, то поторопится и придет на 5 мин. раньше. Парень, наоборот, посчитает, что у него еще 5 минут времени в запасе, отчего на эти самые 5 мин. опоздает.
Считаем вес курицы
Задача:
Длина курицы при измерении от головы до хвоста составит 45 см, а вот от хвоста до головы (если измерять вдоль брюха) — 53 см. По статистике плотность курицы на единицу боковой проекции составляет 8 г/см2. Усредненная высота курицы, если мерить ее вдоль боковой поверхности, — 21 см. Сколько весит килограмм курицы?
Ответ:
Килограмм курицы весит 1 килограмм.
Да, математические задачи с подвохом тоже встречаются:)
Книжные страницы
Задача:
Книга содержит N страниц, которые пронумерованы стандартно: от 1 до N. Если сложить количество цифр (не сами числа), что содержатся в каждом номере страницы, выйдет 1095. Так сколько в книге страниц?
Ответ:
Каждый номер страницы имеет цифру на месте единицы, так что есть N цифр, расположенных на месте единицы. А вот после 9 начинаются двухзначные числа, и нам нужно добавить N-9 цифр. То же самое с трехзначными, которые начинаются после 99: добавляем N-99 цифр. Продолжать нет смысла, так как сумма не предполагает более 999 страниц. Получаем следующую формулу:
N + (N-9) + (N-99) = 1095
Далее просто решаем:
3N - 108 = 1095
3N = 1203
N = 401
Итого 401 страница.
Посчитать в уме
Задача:
Математические задачи на собеседованиях бывают и довольно простыми, но зачастую только на первый взгляд. Попробуйте в уме разделить 30 на 1/2 и прибавить 10. Каким будет результат?
Первое решение, которое обычно приходит на ум, ошибочно:30/2 + 10 = 25
Если мы делим на дробь, ее нужно переворачивать и производить умножение:
30*2 + 10 = 70
Цифра 3
Задача:
Сколько целых чисел в диапазоне 1-1000 вмещают в себя цифру 3? При подсчете нельзя пользоваться компьютером.
Запомните, что нам нужно учесть просто факт содержания в числе тройки. Если, например, это 33 — мы не считаем цифру 2 раза. В числе должна быть по крайней мере одна тройка, чтобы его учесть. Например, числа в диапазоне 300-399 дают нам сразу 100 чисел. Еще 10 мы получаем от 30-39. То же касается 130-139, 230-239, etc. Десяток этих чисел уже был учтен при подсчете 330-339, так что убираем его и получаем:100 + 90 = 190
А еще есть группа чисел (их 100), которые заканчиваются на тройку: 2-993. Мы исключаем из нее такие 10 чисел, как 303, 313 … 393 (они учтены ранее). Получаем еще +90 чисел. У 1/10 из этих 90 на месте десяток также расположилась тройка: 33, 133 … 933. Убираем еще 9, оставляя 81 число. Дальше простая математика:
100 + 90 + 81 = 271
А вот более изящное решение данной задачи. Сперва мы считаем, сколько чисел не включает в себя тройку (на каждое из 3-х мест ставится 9 цифр, которые не тройки):
9 * 9 * 9 = 729
1000 - 729 = 271
Ну что, размялись? Надеемся, вам понравились собранные логические и математические задачи.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]