ВОПРОС → ПЕРЕВОД → ОТВЕТ → РАЗБОР
Вопросы на собеседовании Python-разработчика на английском
Разберите вопрос на английском, его русский перевод, пример ответа и пояснение. Примеры показывают ход мысли: используйте свои формулировки и собственный опыт. Это редакционный банк по Python, а не список вопросов конкретного работодателя.
23 примеров · Чтение без регистрации
Разберите вопрос. Ответьте своими словами.
Раскройте ответ, сравните ход мысли и проговорите свою версию вслух.
Технические вопросы
01When would you choose a tuple over a list?Когда вы выберете кортеж вместо списка?
Пример ответа · EN
I use a list when the sequence needs to change, and a tuple when its positions describe a fixed record. For example, coordinates can be a tuple. Tuple immutability prevents replacing its elements, but a list stored inside a tuple can still change. I choose by meaning before making performance claims.Как построить ответ
Начните с критерия выбора, затем приведите пример и уточните границу неизменяемости. Полезная связка — I use … when …. Не обещайте, что кортеж всегда быстрее: это не объясняет, подходит ли он задаче.
02What does __init__ actually initialize?Что именно инициализирует __init__?
Пример ответа · EN
The __init__ method sets up an instance after it has been created. For example, it can store a validated name on self. Object creation is handled by __new__, so I distinguish creating an object from initializing its state. An initializer must return None, rather than return the newly created instance.Как построить ответ
Разделите создание объекта и настройку его состояния. Формула ответа: назначение → пример поля → отличие от __new__. Слова instance и state точнее, чем расплывчатое «метод создаёт всё». Не ограничивайтесь названием constructor.
03When does a comprehension improve readability?Когда comprehension делает код понятнее?
Пример ответа · EN
A comprehension works well for a short transformation or filter, such as [n * 2 for n in values if n > 0]. A list comprehension builds a list immediately. Parentheses around the expression create a generator expression instead. For several branches or side effects, I prefer an explicit loop.Как построить ответ
Назовите подходящую задачу, покажите короткое выражение и обозначьте предел читаемости. Не называйте выражение в круглых скобках tuple comprehension. Связка For …, I prefer … помогает объяснить компромисс без заявления «короче всегда лучше».
04How does the GIL affect thread selection?Как GIL влияет на выбор потоков?
Пример ответа · EN
In a GIL-enabled CPython build, only one thread executes Python bytecode at a time. Threads can still help with I/O waits. For CPU-heavy Python work, I would consider processes and measure the overhead. Free-threaded CPython builds also exist, so I would check the interpreter build and library compatibility before generalizing.Как построить ответ
Сначала укажите реализацию и режим сборки. Затем различите ожидание I/O и вычисления, назовите вариант и способ проверки. Не утверждайте, что Python вообще не умеет параллелизм, а GIL делает любые составные операции безопасными.
05How do you handle an absent dictionary key?Как обработать отсутствующий ключ словаря?
Пример ответа · EN
I first decide whether absence is expected. For an optional setting, settings.get('timeout', 10) provides a default. For required data, direct indexing and a narrow KeyError handler can make the failure explicit. If None is a valid stored value, I avoid using it alone to distinguish a missing key.Как построить ответ
Начните с контракта: ключ обязательный или необязательный. Сопоставьте ему способ доступа, затем уточните случай со значением None. Слова required и optional показывают, что выбор зависит от поведения программы, а не от привычки всегда вызывать get.
06What remains shared after a shallow copy?Что остаётся общим после поверхностного копирования?
Пример ответа · EN
A shallow copy creates a new outer container but keeps references to its contents. If I copy a list of lists and append to an inner list, both outer lists observe that change. A deep copy recursively copies contents, subject to the objects' copying behavior. I choose based on the isolation I actually need.Как построить ответ
Опишите внешнюю структуру и вложенный объект отдельно, затем проследите одно изменение. Слово recursively объясняет отличие deep copy, но не означает, что любой ресурс можно независимо скопировать. Завершите критерием выбора: какая часть данных должна быть независимой.
07How would you explain a function decorator?Как вы объясните декоратор функции?
Пример ответа · EN
A decorator takes a function and returns the object that replaces its name. A timing decorator can return a wrapper that calls the original function and reports its duration. I use functools.wraps to preserve useful metadata. I also make sure the wrapper forwards arguments and returns the original result.Как построить ответ
Дайте определение через вход и результат, затем объясните один сценарий — измерение времени. Упомяните передачу аргументов, результата и метаданных. Не сводите декоратор к «магии @»; предложение It takes … and returns … делает механизм понятным.
08How does with manage resource cleanup?Как with управляет освобождением ресурсов?
Пример ответа · EN
The with statement uses a context manager to enter a block and run its exit logic afterwards, including when the block raises an exception. For a file, this normally means closing it. A custom manager can implement __enter__ and __exit__, or use contextlib.contextmanager with cleanup in a finally block.Как построить ответ
Соедините механизм с ресурсом: вход → работа → выход при обычном завершении и исключении. Контекстный менеджер может подавить исключение, поэтому не обещайте, что with всегда пробрасывает его. Освобождение ресурса не равно автоматическому сохранению бизнес-данных.
09When does a try statement's else block run?Когда выполняется else у конструкции try?
Пример ответа · EN
The else block runs when the try block finishes normally, without an exception or an early return, break, or continue. I keep the operation that may fail inside try and put subsequent success-only work in else. Exceptions from else are not caught by the preceding except handlers. Cleanup belongs in finally when it is required.Как построить ответ
Назовите условие выполнения, затем объясните пользу узкого try и границу обработчика except. Не путайте else с finally. Useful phrase: success-only work — действия только после успешного выполнения. Для проверки понимания поясните, кто обработает ошибку внутри else.
10Which objects can serve as dictionary keys?Какие объекты могут быть ключами словаря?
Пример ответа · EN
Dictionary keys must be hashable: their hash must remain stable, and equal objects must have equal hashes. Strings work, while lists do not. A tuple is usable only if all its elements are hashable. I would use a tuple of identifiers as a composite key rather than a mutable list.Как построить ответ
Назовите hashability, покажите подходящий и неподходящий объект, затем уточните условие для кортежа. Не отождествляйте неизменяемость и хешируемость всех пользовательских классов. Пример составного ключа объясняет, зачем это правило нужно на практике.
11When is identity different from equality?Когда идентичность отличается от равенства?
Пример ответа · EN
Equality asks whether objects compare as equal; identity asks whether they are the same object. Two separately created empty lists compare equal but are not identical. I use == for value comparisons and is for a singleton such as None. I do not rely on integer or string caching to compare values.Как построить ответ
Сравните два вопроса: одинаковое значение или тот же объект. Приведите пример двух списков и закончите правилом использования. Не объясняйте is только через адрес памяти: это деталь реализации, а вопрос касается идентичности объекта.
12Why can a default list retain earlier values?Почему список по умолчанию сохраняет прежние значения?
Пример ответа · EN
A default argument expression is evaluated when the function is defined. Calls that omit the argument therefore reuse the same list. If each call needs fresh state, I use None as the default and create a list inside the function. I make that contract explicit when None could otherwise be meaningful input.Как построить ответ
Постройте причинную цепочку: время вычисления → общий объект → накопление значений → исправление. Фраза when the function is defined точнее, чем «один раз при запуске». Для независимого списка создание должно происходить внутри вызова.
13How do *args and **kwargs collect arguments?Как *args и **kwargs собирают аргументы?
Пример ответа · EN
In a function definition, *args collects extra positional arguments into a tuple, and **kwargs collects extra keyword arguments into a dictionary. At a call site, the same symbols unpack values. A wrapper can forward both to another function. For a stable public interface, I prefer explicit parameters where they make the contract clearer.Как построить ответ
Разделите определение функции и её вызов: collect и unpack описывают разные направления. Назовите типы контейнеров, затем сценарий обёртки и ограничение. args и kwargs — соглашение об именах, а специальное поведение задают звёздочки.
14Where does a nested function look up names?Где вложенная функция ищет имена?
Пример ответа · EN
For ordinary function scopes, I describe lookup as local, enclosing function scopes, module globals, then built-ins. A nested function can read an enclosing variable. To rebind that variable, it needs nonlocal; global targets the module scope. I avoid calling this a complete rule for every Python construct, since class and annotation scopes have additional details.Как построить ответ
Раскройте LEGB словами, затем отличите чтение имени от его перепривязки. Уточнение ordinary function scopes удерживает ответ в корректных границах. Не говорите, что global делает имя общим для всех модулей программы.
15Why use a generator for streamed data?Зачем использовать генератор для потока данных?
Пример ответа · EN
A generator produces values on demand and preserves its execution state between yields. That lets a consumer process records without building a complete result list first. I would use it for a large input stream. It can be exhausted, so repeated traversal needs a fresh generator or deliberately stored results.Как построить ответ
Объясните механизм yield, пользу отложенного получения данных и ограничение повторного обхода. Формулировка without building a complete result list точнее, чем «генератор вообще не расходует память». Если следующий шаг превращает всё в list, преимущество может исчезнуть.
16Does async def make blocking work concurrent?Делает ли async def блокирующую работу конкурентной?
Пример ответа · EN
No. Declaring async def creates a coroutine function, but blocking work inside it can still block the event-loop thread. I use await with asynchronous I/O and schedule tasks when operations should overlap. For a blocking I/O library, asyncio.to_thread may help. CPU-heavy work requires a separate execution strategy, rather than merely adding async.Как построить ответ
Начните с прямого ответа, затем объясните event loop и приведите способ работы с блокирующим I/O. Различайте конкурентность и параллельные вычисления. Последовательные await сами по себе не запускают независимые операции одновременно.
17What guarantees do type annotations provide?Какие гарантии дают аннотации типов?
Пример ответа · EN
Type annotations describe intended types for tools and readers, but Python does not generally enforce them at runtime. A checker can flag an incompatible call before execution. External input still needs runtime validation. I use annotations to make interfaces clearer and checks more useful, without treating them as proof that incoming data is valid.Как построить ответ
Разделите статическую проверку и проверку входных данных во время работы. Затем объясните практическую пользу для интерфейса. Предложение Python does not generally enforce … не означает, что сторонние библиотеки не могут использовать аннотации для валидации.
18What does a virtual environment isolate?Что изолирует виртуальное окружение?
Пример ответа · EN
A virtual environment gives a project its own installed Python packages, normally isolated from the base environment's packages. It helps avoid dependency conflicts. I can create one with python -m venv .venv. It is not an operating-system sandbox, and recreating it reproducibly also requires a record of the project's dependencies.Как построить ответ
Назовите объект изоляции — Python-пакеты — и проблему конфликтов. Команда показывает практический шаг, а ограничение отделяет venv от контейнера и средства безопасности. Не обещайте, что одно создание окружения фиксирует версии зависимостей.
19How do instance, class and static methods differ?Чем отличаются обычный, классовый и статический методы?
Пример ответа · EN
An instance method receives the instance as self. A class method receives the class as cls, so it can implement an alternative constructor that respects subclasses. A static method receives neither automatically. I use the method type that matches the information required, and consider a module-level function when class grouping adds little value.Как построить ответ
Сравните автоматически передаваемый аргумент у трёх вариантов, затем дайте назначение classmethod. Фраза receives neither automatically не запрещает явно передать объект статическому методу. Закончите критерием выбора, а не перечислением декораторов.
20How would you find a minimum from CSV records?Как найти минимум среди записей CSV?
Пример ответа · EN
I would clarify which numeric field to compare and how to handle invalid or empty input. Then I would read records with csv.DictReader, convert that field explicitly, and track the best record during iteration. I would test a single record, ties, malformed values and empty input before deciding whether extra abstractions are useful.Как построить ответ
Это адаптация практической задачи: сначала уточните контракт, затем назовите парсер, преобразование и проход по данным. Добавьте пограничные тесты и договоритесь, что делать при равных значениях. Не разбивайте CSV простым split: поля могут содержать разделитель внутри кавычек.
HR-вопросы
21Tell me about a Python service you made faster.Расскажите о Python-сервисе, который вы ускорили.
Пример ответа · EN
Our report endpoint took about eight seconds. I profiled it with cProfile and found that most of the time went to database queries inside a loop. I replaced them with one query and added a small cache for reference data. The response time dropped below one second, and I added a test that checks the number of queries.Как построить ответ
STAR: ситуация, замер, действие, результат и защита от повтора. Назовите инструмент профилирования, которым пользовались сами. Пример условный: подставьте свои цифры.
22How do you keep a Python codebase maintainable in a team?Как вы держите Python-код в команде в порядке?
Пример ответа · EN
We agree on formatting and linting rules and run them automatically, for example with Ruff in CI. I add type hints to public functions and check them with mypy. In code review I focus on clear names, small functions and tests, not on personal style. Shared rules save time in every discussion.Как построить ответ
Покажите и инструменты, и договорённости. Связка We agree on … показывает командный подход. Называйте только те инструменты, с которыми работали.
23Why did you choose Python, and when would you pick another language?Почему вы выбрали Python и когда предпочли бы другой язык?
Пример ответа · EN
I chose Python because it lets me move from an idea to working code quickly, and its ecosystem covers web, automation and data. For CPU-heavy work with strict latency, I would consider Go or Rust, or move the hot path to a compiled extension. I pick the language that fits the task and the team.Как построить ответ
Интервьюер проверяет зрелость: сильные стороны языка и честные ограничения. Не ругайте другие языки. Последняя фраза показывает прагматизм.
Теперь — под вашу вакансию
Банк помогает повторить основы. Для конкретной позиции начните подготовку по требованиям вакансии.
Подготовиться под свою вакансиюРегистрация нужна для работы со своей вакансией. Вопросы банка не копируются автоматически.
Перед подготовкой
Подойдут ли примеры начинающему?
Начните с контейнеров, функций и исключений. Конкурентность и детали модели объектов требуют дополнительной практики. Соотнесите пример ответа со своим уровнем и опытом.
Нужно ли учить ответы наизусть?
Нет. Разберите тезис, объяснение и пример, затем ответьте своими словами и будьте готовы к уточняющим вопросам.
Это вопросы конкретных компаний?
Нет. Темы отобраны из открытых учебных подборок, а формулировки, переводы, примеры ответов и разборы подготовлены для редакционного банка. Состав конкретного интервью может отличаться.
Можно ли читать без регистрации?
Опубликованный банк доступен гостю целиком: вопросы, переводы, примеры и разборы. Для подготовки под собственную вакансию нужен аккаунт.
Как перейти к своей вакансии?
Нажмите «Подготовиться под свою вакансию», зарегистрируйтесь и добавьте вакансию в разделе подготовки.
← Все ролиОбщий гайд подготовкиТренажёр слов
Проверено: Владелец BroLango ·
