Подготовка к интервью

Вопросы на собеседовании в Action tech

20 вопросов с собеседований в Action tech

20 вопросов 1632 компании 353 технологии

Что проверяют на интервью

Как устроена подборка

Подборка объединяет вопросы, отмеченные на этапах интервью в Action tech. Здесь можно понять структуру технической проверки и заранее повторить связанные темы. В подборке чаще встречаются темы: linux, python.

Каталог

Результаты поиска

Найдено: 20
Лайвкодинг

Как с помощью дескрипторов реализовать кастомный ленивый аналог декоратора @property?

Ленивое свойство можно реализовать non-data descriptor: при первом чтении вычислить значение и записать его в instance.__dict__. Дальнейшее чтение найдёт сохранённый атрибут без повторного вычисления.

Читать ответ
Теория

Почему в Python 3.11+ появился адаптивный интерпретатор (PEP 659) и как он меняет байт-код на лету?

Адаптивный интерпретатор ускоряет часто повторяющиеся динамические операции через специализацию инструкций по наблюдаемым данным. Семантика языка сохраняется: при изменении условий используется общий путь.

Читать ответ
Теория

Что такое __slots__ на уровне C-структур и почему при его использовании нельзя динамически добавлять атрибуты?

__slots__ обычно задаёт фиксированные места для ссылок на атрибуты в экземпляре и дескрипторы доступа к ним. Без __dict__ неизвестное имя некуда сохранить, поэтому добавление такого атрибута запрещено.

Читать ответ
Теория

Как устроен механизм Context Variables (contextvars) на уровне внутренней хэш-таблицы CPython?

Context в CPython основан не на обычной изменяемой хеш-таблице dict, а на персистентной структуре HAMT. Она позволяет дёшево копировать контекст и разделять неизменённые узлы между версиями.

Читать ответ
Теория

Почему операция s += "string" в цикле иногда работает за O(1), а иногда за O(N)?

Это оптимизация реализации CPython, а не гарантия языка: при подходящих условиях буфер строки расширяется без копирования старого содержимого. Иначе создаётся новая строка с копированием O(N).

Читать ответ
Теория

Как устроен модуль selectors и как он абстрагирует системные вызовы epoll, kqueue и select?

selectors предоставляет единый интерфейс ожидания готовности файловых дескрипторов к чтению и записи. DefaultSelector выбирает доступную эффективную реализацию, например epoll или kqueue.

Читать ответ
Теория

Как работает C3-линеаризация при множественном наследовании и когда возникает коллизия MRO?

C3 строит единый MRO, сохраняя порядок родителей и согласованность их собственных порядков. Конфликт возникает, когда требования несовместимы, например один путь требует A раньше B, а другой — B раньше A.

Читать ответ
Теория

Каков алгоритм оптимизации Compact Dict (PEP 468) и как он гарантирует порядок вставки?

Compact dict разделяет разреженную таблицу индексов и плотное хранение записей, что экономит место и упрощает обход в порядке вставки. PEP 468 посвящён порядку **kwargs, а не полному алгоритму dict.

Читать ответ
Теория

Что такое Immortal Objects (PEP 683) и как они оптимизируют Copy-on-Write в Linux?

Immortal objects в CPython имеют специальный режим счётчика ссылок, который не меняется при обычных INCREF/DECREF. Это уменьшает записи в память и помогает сохранять общие страницы после fork.

Читать ответ
Лайвкодинг

Как написать декоратор, который ведет себя одинаково и с аргументами, и без них, не ломая сигнатуру?

Сделайте первый аргумент функцией по умолчанию None, а настройки — keyword-only. Внутренняя функция создаёт обёртку с functools.wraps, чтобы introspection видел исходные метаданные и сигнатуру.

Читать ответ
Теория

Как устроен сборщик мусора для циклических ссылок (генерационный GC) и что такое gc.garbage?

Циклический GC дополняет подсчёт ссылок и находит недостижимые циклы объектов. gc.garbage содержит не все удалённые объекты, а прежде всего найденные, но не освобождённые, либо сохранённые debug-режимом.

Читать ответ
Теория

Как под капотом устроены расширения на C (C Extensions) и почему они мешают внедрению No-GIL?

C-расширение работает через Python C API и может обращаться к памяти объектов и собственному глобальному состоянию. Историческая опора на GIL делает переход к свободным потокам нетривиальным.

Читать ответ