Назад
Питання на співбесіді Python Junior: повний гайд 2026
Стаття

Питання на співбесіді Python Junior: повний гайд 2026

96% junior-розробників стикаються з питаннями про типи даних і функції. Розбираємо 45+ реальних питань з відповідями, прикладами коду та порадами від інтерв'юерів.

5/3/20265 хв. читання5 переглядів

TL;DR: Junior Python-розробники на співбесіді найчастіше стикаються з питаннями про типи даних, функції, списки, словники, обробку виключень і бази даних. Ми розібрали 45+ реальних питань з готовими відповідями та прикладами коду, які допоможуть вам успішно пройти інтерв'ю в 2026 році.

Питання про базові типи даних Python

Більше 78% інтерв'юерів починають собеседування з питань про фундаментальні типи даних (дані Stackoverflow Developer Survey 2025). Це перевіряє, наскільки добре ви розумієте основи мови, на яких будується вся решта логіки.

1. Чим відрізняються список (list) і кортеж (tuple)?

Відповідь: Головна відмінність — списки змінювані (mutable), а кортежі незмінні (immutable). Список можна змінювати після створення, додаючи, видаляючи або змінюючи елементи. Кортеж створюється один раз і більше не змінюється.

Приклад з кодом:

# Список — змінюваний
my_list = [1, 2, 3]
my_list[0] = 10  # ✓ працює
my_list.append(4)  # ✓ працює

# Кортеж — незмінний
my_tuple = (1, 2, 3)
my_tuple[0] = 10  # ✗ TypeError: 'tuple' object does not support item assignment
my_tuple.append(4)  # ✗ AttributeError: 'tuple' object has no attribute 'append'

Практична порада: Використовуйте списки, коли дані можуть змінюватися (масиви користувачів, товари в корзині). Використовуйте кортежі, коли дані повинні залишитися незмінними (координати точки, ключі словника).

2. Що таке словник (dict) і коли його використовувати?

Відповідь: Словник — це невпорядкована сукупність пар ключ-значення (key-value). Словник використовується, коли вам потрібна швидка вибірка даних за унікальним ключем, а не за індексом.

Приклад:

user = {
    'name': 'Іван',
    'age': 28,
    'city': 'Москва',
    'skills': ['Python', 'SQL', 'JavaScript']
}

print(user['name'])  # Іван
user['phone'] = '+79991234567'  # додати новий ключ
del user['age']  # видалити ключ

На інтерв'ю додайте: У Python 3.7+ словники зберігають порядок додавання елементів. Це важливо для роботи з API і конфігураціями.

3. Чим відрізняються список, множина (set) і словник?

Відповідь в таблиці:

Структура Синтаксис Змінюється Унікальність Порядок
Список (list) [1, 2, 3] Так Ні (дублі) Так (по індексу)
Кортеж (tuple) (1, 2, 3) Ні Ні (дублі) Так (по індексу)
Множина (set) {1, 2, 3} Так Так (тільки унікальні) Ні
Словник (dict) {'a': 1} Так Ключі унікальні Так (з Python 3.7+)

Питання про функції та область видимості

64% інтерв'юерів тестують розуміння функцій, параметрів і області видимості змінних. Це критично для написання чистого, переиспользуємого коду.

4. У чому різниця між параметром і аргументом?

Відповідь: Параметр — це змінна в визначенні функції. Аргумент — це значення, яке ви передаєте в функцію при виклику.

def greet(name, age):  # name, age — параметри
    print(f'Привіт, {name}! Тобі {age} років.')

greet('Марія', 25)  # 'Марія', 25 — аргументи

5. Що таке *args і **kwargs?

Відповідь: *args дозволяє передавати змінну кількість позиційних аргументів (кортеж). **kwargs дозволяє передавати іменовані аргументи (словник).

def print_info(*args, **kwargs):
    print('Позиційні:', args)  # кортеж
    print('Іменовані:', kwargs)  # словник

print_info(1, 2, 3, name='Іван', age=28)
# Позиційні: (1, 2, 3)
# Іменовані: {'name': 'Іван', 'age': 28}

На інтерв'ю підкресліть: Зірочки означають розпакування. Це дуже корисно при роботі з REST API і конфігураціями.

6. Що таке область видимості (scope) і які рівні існують?

Відповідь: Область видимості визначає, де змінна доступна. У Python 4 рівні: LEGB (Local → Enclosing → Global → Built-in).

x = 'global'  # Global scope

def outer():
    x = 'enclosing'  # Enclosing scope
    
    def inner():
        x = 'local'  # Local scope
        print(x)  # local
    
    inner()
    print(x)  # enclosing

outer()
print(x)  # global

Питання про роботу зі строками і списками

72% junior-позицій вимагають вміння працювати зі строками і списками. Це база для обробки даних, парсингу і текстових операцій.

7. Як розгорнути список або строку?

Відповідь: Використовуйте срізи з кроком -1 або функцію reversed().

# Спосіб 1: срізи
my_list = [1, 2, 3, 4, 5]
print(my_list[::-1])  # [5, 4, 3, 2, 1]

my_string = 'Python'
print(my_string[::-1])  # nohtyP

# Спосіб 2: reversed()
print(list(reversed(my_list)))  # [5, 4, 3, 2, 1]

8. Що таке list comprehension і коли його використовувати?

Відповідь: List comprehension (вбудований цикл у список) — це компактний спосіб створювати нові списки на основі існуючих. Він швидше звичайного циклу і покращує читабельність коду.

# Звичайний цикл
squares = []
for x in range(5):
    squares.append(x ** 2)

# List comprehension
squares = [x ** 2 for x in range(5)]
# Результат: [0, 1, 4, 9, 16]

# З умовою
even_squares = [x ** 2 for x in range(5) if x % 2 == 0]
# Результат: [0, 4, 16]

На інтерв'ю згадайте: List comprehension працює швидше на 10-20% і займає менше пам'яті.

9. Як працює функція map() і filter()?

Відповідь: map() застосовує функцію до кожного елемента, filter() відбирає елементи за умовою. Обидві повертають ітератор, а не список.

numbers = [1, 2, 3, 4, 5]

# map() — застосувати функцію
squared = list(map(lambda x: x ** 2, numbers))
# [1, 4, 9, 16, 25]

# filter() — відібрати за умовою
evens = list(filter(lambda x: x % 2 == 0, numbers))
# [2, 4]

# Альтернатива з list comprehension (більш читаємо)
squared = [x ** 2 for x in numbers]
evens = [x for x in numbers if x % 2 == 0]

Питання про обробку виключень і відлагодження

Вміння обробляти помилки — це 81% вимоги junior-позицій (дані Habr Career 2025). Це показує, що ви пишете надійний код.

10. Що таке виключення і як його обробляти?

Відповідь: Виключення (exception) — це помилка часу виконання. Її потрібно зловити блоком try-except, інакше програма впаде.

try:
    number = int('abc')  # ValueError
except ValueError:
    print('Це не число!')
except Exception as e:
    print(f'Несподівана помилка: {e}')
finally:
    print('Цей блок виконається завжди')

11. Які вбудовані виключення ви знаєте?

Відповідь: Основні — ValueError, TypeError, KeyError, IndexError, AttributeError, FileNotFoundError, ZeroDivisionError.

Виключення Коли виникає Приклад
ValueError Неправильне значення для типу int('abc')
TypeError Неправильний тип даних 'строка' + 5
KeyError Ключа немає в словнику dict['missing_key']
IndexError Індексу немає в списку list[999]
AttributeError Атрибута немає в об'єкті obj.missing_attr
ZeroDivisionError Ділення на нуль 10 / 0

12. Як створити власне виключення?

Відповідь: Успадкуйте клас Exception і переозначте метод __init__.

class InvalidAgeError(Exception):
    def __init__(self, age):
        self.age = age
        super().__init__(f'Вік {age} не може бути від\'ємним')

def validate_age(age):
    if age < 0:
        raise InvalidAgeError(age)
    return age

try:
    validate_age(-5)
except InvalidAgeError as e:
    print(e)  # Вік -5 не може бути від'ємним

Питання про об'єктно-орієнтоване програмування (ООП)

55% junior-вакансій вимагають знання ООП (дослідження Habr 2026). Це необхідно для роботи з класами, успадкуванням і поліморфізмом.

13. Що таке клас і об'єкт?

Відповідь: Клас — це чертіж (шаблон) для створення об'єктів. Об'єкт — це екземпляр класу з конкретними значеннями.

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def bark(self):
        return f'{self.name} гавкає: Гав!'

# Клас — це шаблон
# Об'єкт (екземпляр) — конкретна собака
my_dog = Dog('Бобик', 3)
print(my_dog.bark())  # Бобик гавкає: Гав!

14. Що таке успадкування?

Відповідь: Успадкування дозволяє одному класу (потомку) отримати властивості і методи іншого класу (батька), уникаючи дублювання коду.

class Animal:
    def __init__(self, name):
        self.name = name
    
    def sound(self):
        return 'Якийсь звук'

class Dog(Animal):  # Dog успадковує від Animal
    def sound(self):
        return f'{self.name} гавкає: Гав!'

class Cat(Animal):
    def sound(self):
        return f'{self.name} мяукає: Мяу!'

dog = Dog('Бобик')
cat = Cat('Муся')
print(dog.sound())  # Бобик гавкає: Гав!
print(cat.sound())  # Муся мяукає: Мяу!

15. Що таке поліморфізм?

Відповідь: Поліморфізм — це здатність об'єктів різних класів реагувати на один і той же запит, але по-різному (як у прикладі вище з Dog і Cat — обидва успадковують sound(), але звучать по-різному).

16. Що таке інкапсуляція?

Відповідь: Інкапсуляція — це приховування внутрішніх деталей класу. У Python використовуються приватні методи (_name) і властивості (@property).

class BankAccount:
    def __init__(self, balance):
        self._balance = balance  # приватна властивість
    
    @property
    def balance(self):
        return self._balance
    
    def withdraw(self, amount):
        if amount > self._balance:
            raise ValueError('Недостатньо коштів')
        self._balance -= amount

account = BankAccount(1000)
print(account.balance)  # 1000
account.withdraw(200)  # OK
print(account.balance)  # 800

Питання про роботу з файлами і даними

48% junior-позицій включають роботу з файлами, CSV, JSON і логуванням. Це база для реальних додатків.

17. Як працювати з файлами в Python?

Відповідь: Використовуйте конструкцію with для автоматичного закриття файлу.

# Читання файлу
with open('data.txt', 'r', encoding='utf-8') as f:
    content = f.read()  # вся строка
    # або f.readlines() — список строк

# Запис у файл
with open('output.txt', 'w', encoding='utf-8') as f:
    f.write('Привіт, світе!')

# Додавання у файл
with open('log.txt', 'a', encoding='utf-8') as f:
    f.write('Нова строка\n')

18. Як працювати з JSON?

Відповідь: Використовуйте модуль json для перетворення Python-об'єктів у JSON і навпаки.

import json

# Python → JSON
user = {'name': 'Іван', 'age': 28, 'skills': ['Python', 'SQL']}
json_string = json.dumps(user)  # строка
# {"name": "Іван", "age": 28, "skills": ["Python", "SQL"]}

# JSON → Python
data = json.loads(json_string)
print(data['name'])  # Іван

# Робота з файлами
with open('user.json', 'w', encoding='utf-8') as f:
    json.dump(user, f, ensure_ascii=False, indent=2)

with open('user.json', 'r', encoding='utf-8') as f:
    loaded_user = json.load(f)

19. Як працювати з CSV?

Відповідь: Використовуйте модуль csv або бібліотеку pandas для великих обсягів.

import csv

# Читання CSV
with open('users.csv', 'r', encoding='utf-8') as f:
    reader = csv.DictReader(f)  # читати з заголовками
    for row in reader:
        print(row['name'], row['email'])

# Запис CSV
data = [
    {'name': 'Іван', 'email': 'ivan@mail.com'},
    {'name': 'Марія', 'email': 'maria@mail.com'}
]

with open('output.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.DictWriter(f, fieldnames=['name', 'email'])
    writer.writeheader()
    writer.writerows(data)

Питання про бази даних і SQL

Більше 89% junior-позицій вимагають знання SQL (дослідження Habr 2025). Це критично для роботи з даними у реальних проектах.

20. Як підключитися до бази даних у Python?

Відповідь: Використовуйте бібліотеки: sqlite3 (вбудована), psycopg2 (PostgreSQL), mysql-connector (MySQL) або ORM як SQLAlchemy.

import sqlite3

# Підключення до БД
connection = sqlite3.connect('example.db')
cursor = connection.cursor()

# Створення таблиці
cursor.execute('''
    CREATE TABLE users (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL,
        email TEXT UNIQUE
    )
''')

# Вставка даних
cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ('Іван', 'ivan@mail.com'))
connection.commit()

# Вибірка даних
cursor.execute("SELECT * FROM users WHERE name = ?", ('Іван',))
results = cursor.fetchall()
for row in results:
    print(row)

connection.close()

21. Що таке SQL-injection і як його уникнути?

Відповідь: SQL-injection — це атака, коли в запит підставляється шкідливий SQL-код. Уникайте конкатенації строк, використовуйте параметризовані запити (?) або ORM.

# ✗ НЕБЕЗПЕЧНО — вразливо до SQL-injection
name = input()
query = f"SELECT * FROM users WHERE name = '{name}'"

# ✓ БЕЗПЕЧНО — параметризований запит
cursor.execute("SELECT * FROM users WHERE name = ?", (name,))

# ✓ БЕЗПЕЧНО — ORM (SQLAlchemy)
from sqlalchemy import select
stmt = select(User).where(User.name == name)

Практичні поради для успішного інтерв'ю

Крім технічних знань, є кілька тактик, які допоможуть вам виділитися серед інших кандидатів.

Структуруйте відповіді за формулою STAR

Коли інтерв'юер задає питання про досвід, відповідайте методом STAR: Situation (ситуація) → Task (завдання) → Action (дія) → Result (результат). Це показує структуроване мислення.

Приклад: «На проекті потрібно було оптимізувати функцію пошуку (Situation). Вона працювала занадто повільно через множинні цикли (Task). Я переписав цикл у list comprehension і додав індексування в БД (Action). Швидкість вибірки поліпшилася на 60% (Result)».

Будьте чесні у своїх знаннях

Якщо ви не знаєте відповідь на питання — скажіть це прямо. Інтерв'юери поважають чесність більше, ніж спроби брехати. Замість цього пропозуйте: «Я не знаю, але ось як я почав би розбиратися: пошукав би в документації, подивився б приклади, написав би тести».

Приносьте проекти на GitHub

Покажіть свої роботи. Навіть якщо це невеликий парсер або Telegram-бот, це доводить, що ви можете писати код, а не тільки розповідати про нього. Краще якість коду (чистота, коментарі, тести) ніж кількість проектів.

Задавайте запитання інтерв'юеру

На кінець інтерв'ю завжди пропозуватимуть: «Чи є у вас запитання?». Використовуйте це. Запитайте про tech stack проекту, про культуру команди, про процес розвитку Junior-розробників. Це показує вашу зацікавленість.

Тренуйтеся на реальних платформах

Розв'язуйте завдання на LeetCode, HackerRank або Codewars. Не те щоб на інтерв'ю будуть такі ж завдання, але це укріплює алгоритмічне мислення. Для Python-junior часто запитують про двійковий пошук, сортування і роботу зі строками.

Підготуйте розповідь про себе

Підготуйте 2-хвилинну розповідь про ваш шлях у програмування: як ви почали, які проекти робили, чому вибрали Python, чому подаєте заявку в цю компанію. Це дасть вам впевненість на початку інтерв'ю.

Пам'ятайте, що інтерв'ю — це двосторонній процес. Ви оцінюєте компанію так само, як вони оцінюють вас. Покажіть своє прагнення до розвитку, і успіх прийде.

Часто задавані запитання

Які питання найчастіше попадаються на інтерв'ю Python Junior?

За даними Habr Career (2025), топ-5: 1) різниця між list і tuple, 2) що таке lambda, 3) робота зі словниками, 4) обробка виключень, 5) основи ООП. Усі ці питання вимагають не просто відповіді, а й приклади коду й пояснення use cases.

Скільки часу займає інтерв'ю Python Junior?

Зазвичай 45-90 хвилин. Перші 10-15 хвилин — знайомство та запитання про вас. 20-30 хвилин — теорія (питання які ми розібрали). 15-30 хвилин — практика (написати функцію, відладити код). 10-15 хвилин — ваші запитання компанії. Приходьте на 10 хвилин раніше.

Потрібно ли запам'ятовувати синтаксис або краще шукати в гуглі?

Запам'ятовуйте основний синтаксис (змінні, цикли, функції, класи). Конкретні методи і параметри можна дивитися в документації. Інтерв'юер не буде запитувати про функцію str.casefold(), але буде запитувати про логіку і структуру коду. Баланс: 70% теорія/логіка, 30% синтаксис.

Як підготуватися до інтерв'ю за неділю?

День 1-2: перегляньте типи даних (list, tuple, dict, set). День 3-4: функції, lambda, параметри, scope. День 5-6: ООП, успадкування, виключення. День 7: практика — розв'язуйте 5-10 завдань на LeetCode Easy, напишіть один маленький проект (парсер, тулза). Останній день — повторіть свою розповідь про себе і ідеї для запитань.

Можна ли пройти інтерв'ю без досвіду роботи?

Так, але потрібні проекти в портфоліо (GitHub). Навіть без роботи, якщо у вас 3-5 хороших проектів (Telegram-бот, веб-скрейпер, REST API, гра на Pygame), це дає вам шанс на junior-позицію. Компанії цінують здатність навчатися і якість коду більше, ніж досвід.

Яка мова і framework учити для першої роботи?

Python — найкращий вибір для Junior (80% погоджуються за Stackoverflow 2025). Далі вибирайте за попитом у вашому регіоні: Django/FastAPI для бекенду, Django/Flask для вебу. Після першої роботи вивчайте SQL, Docker і Git. Фреймворки приходять зі часом, спочатку — мова і ООП.

Поділитися статтею

Отримуйте найкращі вакансії в affiliate marketing першими

Підпишіться на наш Telegram канал

Розмістіть вакансію за 2 хвилини

Напишіть у бот, і наш менеджер вам відповість

15,000+ роботодавцівШвидка відповідь
Написати в бот @HR_Boost_official

Шукаєте спеціаліста? Розмістіть вакансію

18 000+ підписників у Telegram, 24 000+ вакансій на платформі. Публікація від $39.