Что такое высокоуровневый и низкоуровневый код?
Что проверяют
Владеете ли вы понятием уровня абстракции и не сводите ли его к списку языков. У разработчика на Python вопрос обычно про две вещи сразу: про уровни в собственном коде и про то, что происходит ниже интерпретатора.
Как отвечать
Начать стоит с того, что у термина два смысла.
Первый это уровень языка относительно машины. Высокоуровневый код оперирует понятиями задачи и прячет память, регистры и системные вызовы; низкоуровневый работает с адресами, байтами и инструкциями. Python здесь высокоуровневый, но под ним лежат байт-код, виртуальная машина и слой на C, куда уходят тяжёлые операции.
Второй смысл ближе к повседневной работе: уровень абстракции внутри вашего же кода. Функция, которая читает файл, разбирает строки и тут же пишет в базу, смешивает уровни, и читать её тяжело. Полезное правило: в одной функции операции одного уровня, детали спрятаны за именами шагов.
def import_orders(path):
rows = read_rows(path)
orders = [parse_order(r) for r in rows]
save_orders(orders)Для Python стоит добавить, как спускаются вниз осознанно: векторизация вместо циклов, расширения на C, Cython, memoryview вместо копирования байтов. Это всегда размен читаемости на скорость, и делается он по результатам профиля, а не заранее.
Где спотыкаются
Приравнивают низкий уровень к скорости, а высокий к медлительности. Скорость даёт алгоритм и число обращений к памяти, а не синтаксис: наивный цикл на C проиграет векторизованной операции, за которой стоит тот же C, но с продуманной раскладкой данных.
Считают абстракцию бесплатной. У каждого слоя есть цена вызова и цена понимания: три класса вокруг одной функции это не высокий уровень, а лишняя работа. Абстракция вводится под реальную вариативность, а не на случай, если она когда-нибудь появится.
Не могут показать границу в своей задаче. Ответ становится убедительным, когда назван конкретный участок: горячий кусок вынесен в библиотеку или расширение, остальное осталось обычным читаемым кодом, и решение принято по замеру, а не по вкусу.