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 кульок, що залишилася.
Друге зважування:
- Беремо підозрілу групу та порівнюємо дві кульки між собою.
- Більш важка і буде відповіддю.
Більше цікавих новин
Как вычислить площадь прямоугольника?
Задачка «Пять с половиной программистов»
Задача о производственной линии
Задача на логику про туриста на озере