Back
Python Junior Interview Questions: Complete Guide 2026
Article

Python Junior Interview Questions: Complete Guide 2026

96% of junior developers face questions about data types and functions. We analyze 45+ real questions with answers, code examples, and interviewer tips.

5/3/20265 min read3 views

TL;DR: Junior Python developers most often face interview questions about data types, functions, lists, dictionaries, exception handling, and databases. We analyzed 45+ real questions with complete answers and code examples to help you successfully pass your Python interview in 2026.

Questions About Basic Data Types in Python

More than 78% of interviewers start interviews with questions about fundamental data types (Stackoverflow Developer Survey 2025). This tests how well you understand the basics that underpin all other logic.

1. What's the difference between a list and a tuple?

Answer: The main difference is that lists are mutable (changeable) while tuples are immutable (unchangeable). A list can be modified after creation, adding, removing, or changing elements. A tuple is created once and cannot be changed.

Code example:

# List — mutable
my_list = [1, 2, 3]
my_list[0] = 10  # ✓ works
my_list.append(4)  # ✓ works

# Tuple — immutable
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'

Practical tip: Use lists when data may change (user arrays, shopping cart items). Use tuples when data should remain unchanged (coordinate points, dictionary keys).

2. What is a dictionary (dict) and when should you use it?

Answer: A dictionary is an unordered collection of key-value pairs. Use a dictionary when you need fast data retrieval by a unique key rather than by index.

Example:

user = {
    'name': 'John',
    'age': 28,
    'city': 'Moscow',
    'skills': ['Python', 'SQL', 'JavaScript']
}

print(user['name'])  # John
user['phone'] = '+79991234567'  # add new key
del user['age']  # delete key

Interview tip: In Python 3.7+ dictionaries maintain insertion order. This is important for API work and configuration management.

3. What are the differences between list, set, and dict?

Answer in table:

Structure Syntax Mutable Uniqueness Order
List [1, 2, 3] Yes No (duplicates allowed) Yes (by index)
Tuple (1, 2, 3) No No (duplicates allowed) Yes (by index)
Set {1, 2, 3} Yes Yes (unique only) No
Dictionary {'a': 1} Yes Keys are unique Yes (since Python 3.7+)

Questions About Functions and Variable Scope

64% of interviewers test understanding of functions, parameters, and variable scope. This is critical for writing clean, reusable code.

4. What's the difference between a parameter and an argument?

Answer: A parameter is a variable in the function definition. An argument is the actual value you pass to the function when calling it.

def greet(name, age):  # name, age — parameters
    print(f'Hello, {name}! You are {age} years old.')

greet('Maria', 25)  # 'Maria', 25 — arguments

5. What are *args and **kwargs?

Answer: *args allows you to pass a variable number of positional arguments (tuple). **kwargs allows you to pass named arguments (dictionary).

def print_info(*args, **kwargs):
    print('Positional:', args)  # tuple
    print('Named:', kwargs)  # dictionary

print_info(1, 2, 3, name='John', age=28)
# Positional: (1, 2, 3)
# Named: {'name': 'John', 'age': 28}

Interview note: Asterisks mean unpacking. This is very useful when working with REST APIs and configurations.

6. What is scope (variable scope) and what levels exist?

Answer: Scope determines where a variable is accessible. Python has 4 levels: 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

Questions About Strings and Lists

72% of junior positions require working with strings and lists. This is the foundation for data processing, parsing, and text operations.

7. How do you reverse a list or string?

Answer: Use slicing with step -1 or the reversed() function.

# Method 1: slicing
my_list = [1, 2, 3, 4, 5]
print(my_list[::-1])  # [5, 4, 3, 2, 1]

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

# Method 2: reversed()
print(list(reversed(my_list)))  # [5, 4, 3, 2, 1]

8. What is list comprehension and when should you use it?

Answer: List comprehension is a compact way to create new lists based on existing ones. It's faster than regular loops and improves code readability.

# Regular loop
squares = []
for x in range(5):
    squares.append(x ** 2)

# List comprehension
squares = [x ** 2 for x in range(5)]
# Result: [0, 1, 4, 9, 16]

# With condition
even_squares = [x ** 2 for x in range(5) if x % 2 == 0]
# Result: [0, 4, 16]

Interview note: List comprehension runs 10-20% faster and uses less memory.

9. How do map() and filter() work?

Answer: map() applies a function to each element, filter() selects elements by condition. Both return an iterator, not a list.

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

# map() — apply function
squared = list(map(lambda x: x ** 2, numbers))
# [1, 4, 9, 16, 25]

# filter() — select by condition
evens = list(filter(lambda x: x % 2 == 0, numbers))
# [2, 4]

# Alternative with list comprehension (more readable)
squared = [x ** 2 for x in numbers]
evens = [x for x in numbers if x % 2 == 0]

Questions About Exception Handling and Debugging

The ability to handle errors is an 81% requirement for junior positions (Habr Career 2025). This shows you write reliable code.

10. What is an exception and how do you handle it?

Answer: An exception is a runtime error. It must be caught with a try-except block, otherwise the program will crash.

try:
    number = int('abc')  # ValueError
except ValueError:
    print('This is not a number!')
except Exception as e:
    print(f'Unexpected error: {e}')
finally:
    print('This block always executes')

11. What built-in exceptions do you know?

Answer: Main ones: ValueError, TypeError, KeyError, IndexError, AttributeError, FileNotFoundError, ZeroDivisionError.

Exception When it occurs Example
ValueError Wrong value for the type int('abc')
TypeError Wrong data type 'string' + 5
KeyError Key not in dictionary dict['missing_key']
IndexError Index not in list list[999]
AttributeError Attribute not in object obj.missing_attr
ZeroDivisionError Division by zero 10 / 0

12. How do you create a custom exception?

Answer: Inherit from the Exception class and override the __init__ method.

class InvalidAgeError(Exception):
    def __init__(self, age):
        self.age = age
        super().__init__(f'Age {age} cannot be negative')

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

try:
    validate_age(-5)
except InvalidAgeError as e:
    print(e)  # Age -5 cannot be negative

Questions About Object-Oriented Programming (OOP)

55% of junior vacancies require OOP knowledge (Habr 2026). This is necessary for working with classes, inheritance, and polymorphism.

13. What is a class and what is an object?

Answer: A class is a blueprint (template) for creating objects. An object is an instance of a class with specific values.

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def bark(self):
        return f'{self.name} barks: Woof!'

# Class is the template
# Object (instance) is a specific dog
my_dog = Dog('Buddy', 3)
print(my_dog.bark())  # Buddy barks: Woof!

14. What is inheritance?

Answer: Inheritance allows one class (child) to acquire properties and methods from another class (parent), avoiding code duplication.

class Animal:
    def __init__(self, name):
        self.name = name
    
    def sound(self):
        return 'Some sound'

class Dog(Animal):  # Dog inherits from Animal
    def sound(self):
        return f'{self.name} barks: Woof!'

class Cat(Animal):
    def sound(self):
        return f'{self.name} meows: Meow!'

dog = Dog('Buddy')
cat = Cat('Whiskers')
print(dog.sound())  # Buddy barks: Woof!
print(cat.sound())  # Whiskers meows: Meow!

15. What is polymorphism?

Answer: Polymorphism is the ability of objects from different classes to respond to the same request differently (like in the example above with Dog and Cat — both inherit sound() but respond differently).

16. What is encapsulation?

Answer: Encapsulation is hiding the internal details of a class. In Python, use private methods (_name) and properties (@property).

class BankAccount:
    def __init__(self, balance):
        self._balance = balance  # private property
    
    @property
    def balance(self):
        return self._balance
    
    def withdraw(self, amount):
        if amount > self._balance:
            raise ValueError('Insufficient funds')
        self._balance -= amount

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

Questions About File and Data Operations

48% of junior positions involve working with files, CSV, JSON, and logging. This is the foundation for real applications.

17. How do you work with files in Python?

Answer: Use the with statement for automatic file closing.

# Reading a file
with open('data.txt', 'r', encoding='utf-8') as f:
    content = f.read()  # entire content
    # or f.readlines() — list of lines

# Writing to a file
with open('output.txt', 'w', encoding='utf-8') as f:
    f.write('Hello, world!')

# Appending to a file
with open('log.txt', 'a', encoding='utf-8') as f:
    f.write('New line\n')

18. How do you work with JSON?

Answer: Use the json module to convert Python objects to JSON and back.

import json

# Python → JSON
user = {'name': 'John', 'age': 28, 'skills': ['Python', 'SQL']}
json_string = json.dumps(user)  # string
# {"name": "John", "age": 28, "skills": ["Python", "SQL"]}

# JSON → Python
data = json.loads(json_string)
print(data['name'])  # John

# Working with files
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. How do you work with CSV?

Answer: Use the csv module or pandas library for large volumes.

import csv

# Reading CSV
with open('users.csv', 'r', encoding='utf-8') as f:
    reader = csv.DictReader(f)  # read with headers
    for row in reader:
        print(row['name'], row['email'])

# Writing CSV
data = [
    {'name': 'John', 'email': 'john@mail.com'},
    {'name': 'Maria', '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)

Questions About Databases and SQL

More than 89% of junior positions require SQL knowledge (Habr 2025). This is critical for working with data in real projects.

20. How do you connect to a database in Python?

Answer: Use libraries like sqlite3 (built-in), psycopg2 (PostgreSQL), mysql-connector (MySQL), or ORM like SQLAlchemy.

import sqlite3

# Database connection
connection = sqlite3.connect('example.db')
cursor = connection.cursor()

# Create table
cursor.execute('''
    CREATE TABLE users (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL,
        email TEXT UNIQUE
    )
''')

# Insert data
cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ('John', 'john@mail.com'))
connection.commit()

# Select data
cursor.execute("SELECT * FROM users WHERE name = ?", ('John',))
results = cursor.fetchall()
for row in results:
    print(row)

connection.close()

21. What is SQL injection and how do you prevent it?

Answer: SQL injection is an attack where malicious SQL code is injected into queries. Avoid string concatenation; use parameterized queries (?) or ORM.

# ✗ DANGEROUS — vulnerable to SQL injection
name = input()
query = f"SELECT * FROM users WHERE name = '{name}

Share this article

Get the best affiliate marketing jobs first

Subscribe to our Telegram channel

Post a vacancy in 2 minutes

Write to the bot and our manager will respond

15,000+ employersQuick response
Write to Bot @HR_Boost_official

Looking for talent? Post a job

18,000+ Telegram subscribers, 24,000+ jobs on the platform. Posting from $39.