5 логических задач, которые дают junior-разработчикам
Перед тобой 5 логических задач, которые часто дают junior-разработчикам на собеседованиях. Некоторые выглядят простыми, но могут легко запутать.
На собеседованиях программистов часто проверяют не только знание языка программирования, но и умение логически мыслить. Особенно это касается junior-разработчиков.
Многие компании специально задают простые на первый взгляд задачи, чтобы посмотреть, как человек рассуждает, умеет ли замечать детали и искать решение.
Задача №1 — Что выведет код?
numbers = [1, 2, 3]
copy = numbers
copy.append(4)
print(numbers)Вопрос: что появится в консоли?
Решение
В консоли появится:
[1, 2, 3, 4]Переменная copy не создала новый список. Она просто получила ссылку на тот же объект в памяти.
Поэтому изменение через copy изменило и numbers.
Задача №2 — Сколько раз выполнится цикл?
for(let i = 0; i < 5; i--) {
console.log(i);
}Вопрос: сколько раз выполнится цикл?
Решение
Цикл никогда не остановится.
Переменная i начинается с 0, а условие:
i < 5всегда остаётся истинным, потому что i уменьшается:
0, -1, -2, -3...Это классический пример невнимательности на собеседованиях.
Задача №3 — Почему функция возвращает false?
console.log([] == false);Вопрос: почему результатом будет true?
Решение
JavaScript пытается привести значения к одному типу.
Пустой массив преобразуется в пустую строку:
"" == falseПосле этого оба значения приводятся к числу:
0 == 0И результатом становится true.
Именно поэтому в JavaScript обычно рекомендуют использовать строгое сравнение:
=== Задача №4 — Найди ошибку в условии
age = 20
if age >= 18 or age <= 60:
print("Доступ разрешён")Вопрос: в чём проблема условия?
Решение
Условие написано неправильно, потому что оператор or делает его почти всегда истинным.
Например:
Если age = 10:
10 <= 60Уже true.
Если age = 100:
100 >= 18Тоже true.
Правильнее было бы использовать:
if age >= 18 and age <= 60:Задача №5 — Логическая задача
У тебя есть 8 одинаковых с виду шариков. Один из них тяжелее остальных.
У тебя есть весы без гирь.
Вопрос: как найти тяжёлый шарик всего за 2 взвешивания?
Решение
Разделим шарики на 3 группы:
3 + 3 + 2
Первое взвешивание:
- Сравниваем группы по 3 шарика.
- Если одна сторона тяжелее — тяжёлый шарик находится там.
- Если вес одинаковый — тяжёлый шарик в оставшейся группе из 2 шаров.
Второе взвешивание:
- Берём подозрительную группу и сравниваем два шарика между собой.
- Более тяжёлый и будет ответом.
Больше интересных новостей
Задача на Python: "Разделение строки"
Какое суммарное время перелета?
Нахождение средней зарплаты
Создание парсера новостей с веб-сайта на Python