P
prepair.app
Пройти інтерв'ю →
EnglishУкраїнськаРусскийDeutsch
🐍

Junior Python BackendПитання на співбесіді Python розробника

Junior · без досвіду / до 1 року

Співбесіда Python-розробника охоплює внутрішню будову мови, асинхронність, Django або FastAPI і роботу з базою. Нижче — найчастіші питання з еталонними відповідями. Junior: базова теорія, визначення та прості практичні кейси.

Спробувати — без реєстрації
Готуємо питання…

Теми для підготовки

Типи даних і структури
Декоратори та генератори
GIL і конкурентність
asyncio та async/await
Django / FastAPI
ORM і оптимізація SQL

7 питань рівня Junior з відповідями

1

Яка різниця між list і tuple і коли це важливо?

Відповідь

Список змінюваний, кортеж ні, і наслідок, про який забувають: незмінність робить кортеж хешованим, тому він може бути ключем словника, а список не може. Кортеж беруть, коли розмір і зміст кожної позиції фіксовані — координата, рядок із бази. Список — коли збирають однорідні елементи. Кортеж ще й повідомляє намір: сюди ніхто не додаватиме.

2

Що станеться, якщо використати змінюваний обʼєкт як значення аргументу за замовчуванням?

Відповідь

Значення за замовчуванням обчислюється один раз під час визначення функції, а не на кожному виклику — тож список чи словник спільний для всіх викликів і накопичує стан між ними. Лікується значенням None і створенням обʼєкта всередині тіла. Це найчастіша помилка в Python, яка проходить ревʼю, бо функція сама по собі виглядає правильною.

3

Яка різниця між is і ==?

Відповідь

== питає, чи однакові значення; is — чи це той самий обʼєкт у памʼяті. Вони випадково збігаються на малих числах і коротких рядках, бо CPython їх кешує, і помилка не спливає, доки значення не вийде за межі кешу. Практичне правило: is лише для None, True і False, для решти ==.

4

Як словник знаходить ключ?

Відповідь

Хешує ключ, щоб обрати кошик, далі порівнює на рівність усередині нього, розвʼязуючи колізії. Звідси два наслідки: ключ має бути хешованим, тому списком він бути не може, і якщо ви перевизначили __eq__ у класі, зобовʼязані перевизначити __hash__ — інакше рівні обʼєкти потраплять у різні кошики й поводитимуться неправильно в множинах і словниках.

5

Чим списковий вираз відрізняється від генераторного?

Відповідь

Вираз у квадратних дужках одразу будує весь список у памʼяті; той самий вираз у круглих повертає генератор, який віддає елементи по одному. На мільйоні рядків перше створює мільйон обʼєктів, друге — по одному за раз. Генератор беруть, коли проходять один раз, списковий вираз — коли результат потрібен повторно або потрібна його довжина.

6

Що робить кожен із блоків try / except / else / finally?

Відповідь

try містить ризикований код, except обробляє конкретний виняток, else виконується лише якщо нічого не кинуто, finally виконується в будь-якому разі і слугує для прибирання. else існує заради того, щоб блок try лишався мінімальним: код, який не може впасти, там не потрібен, інакше широкий except проковтне помилки рядків, які ви захищати не збиралися.

7

Навіщо потрібні *args і **kwargs?

Відповідь

*args збирає зайві позиційні аргументи в кортеж, **kwargs — іменовані у словник. Саме вони дозволяють обгортці прийняти будь-яку сигнатуру й передати її далі без змін, тому їх використовує кожен декоратор. У звичайних функціях зловживання ними ховає справжню сигнатуру і від читача, і від перевірки типів.

🦎

Прочитати відповіді недостатньо

На співбесіді ти говориш вголос під тиском. Кем поставить ті самі питання, оцінить кожну відповідь і покаже, що саме підтягнути.

Пройти інтерв'ю Junior Python Backend →
Безкоштовно · 3 інтерв'ю на місяць

Інші рівні — Python Backend

Middle Python BackendSenior Python BackendУсі питання Python Backend

Інші спеціалізації

🔍Junior QA Manual🤖Junior QA AutomationJunior Java Backend🐘Junior PHP Backend🦫Junior Go Backend🟢Junior Node.js Backend💎Junior Ruby on Rails🟣Junior .NET Backend Developer🔷Junior C++🟨Junior JavaScript