Топ 40 вопросов — ответов на собеседование по Python

1) Что такое Python? В чем преимущество использования Python?

Python — это язык программирования с объектами, модулями, потоками, исключениями и автоматическим управлением памятью. Преимущества Python скриптов в том, что это простая и легкая, переносимая, расширяемая, встроенная структура данных, а также открытый исходный код.

2) Что такое PEP 8?

PEP 8 — (coding convention) это набор рекомендаций, о том, как сделать код Python более читабельным.

3) Что такое pickling и unpickling?

Модуль Pickle принимает любой объект Python и преобразует его в строку и выгружает его в файл с помощью dump функции, этот процесс называется pickling. Обратный процесс извлечения Python объекта из строки, соотвественно называется unpickling.

4) Как выполняются Python скрипты?

Python — это интерпретируемый язык. Программа/скрипт на Python запускается прямо из исходного кода. Интерпретатор преобразует исходный код, написанный программистом, в промежуточный язык (IL), который переводится на машинный язык (низкоуровневый), и уже когда код переведен в машинный язык, Python скрипт/программа выпоняется.

5) Как Python работает с памятью?

— Любой Python скрипт выполняется в области выделенной памяти называемой private heap space. Программист не имеет доступа к этой области памяти, обо всем заботится интерпретатор Python

— Распределением памяти непосредственно в private heap space, занимается Python memory manager. Memory manager предоставляет некоторый доступ через API

— Python так же имеет garbage collector (GC). GC занимается переодическим освобождением памяти в private heap space, объектов/ф-ций/переменных которые перестали использоваться во время выполнения скрипта

6) Какие инструменты помогают найти ошибки или выполнить статический анализ?

PyChecker — инструмент статического анализа, который обнаруживает ошибки в исходном коде Python и предупреждает о стиле и сложности ошибки. Pylint — еще один инструмент, который проверяет, соответствует ли модуль стандарту кодирования.

7) Что такое декораторы Python?

Декоратор Python — это специфическое изменение, которое мы делаем в синтаксисе Python, чтобы легко изменять функции.

8) В чем разница между списком (list) и кортежом (tuple)?

Разница между списком и кортежом заключается в том, что список (lsit) является мутируемым, а кортеж (tuple) — нет. Кортеж можно хэшировать, например, в качестве ключа для словарей.

9) Как передаются аргументы по значению или по ссылке?

Все в Python является объектом, и все переменные содержат ссылки на объекты. Значения ссылок соответствуют функциям, в результате вы не можете изменить значение ссылок. Тем не менее, вы можете изменять объекты, если они являются мутируемыми.

10) Объяснить понимание Dict и List?

Это синтаксические конструкции, облегчающие создание словаря или списка на основе существующих итерабельных конструкций.

11) Какие есть встроенные типы данных в Python?

Существуют мутируемые и неизменяемые типы

Мутируемые (mutable):

  • List
  • Sets
  • Dict

Неизменный(Immutable):

  • Strings
  • Tuples
  • Numbers

12) Что такое пространство имён в Python?

В Питоне каждое введенное имя имеет место, где оно живет и может быть подключено к сети. Это известно как пространство имен. Оно похоже на окошко, где имя переменной отображается на размещаемом объекте. Всякий раз, когда переменная ищется, это окошко будет искаться, чтобы получить соответствующий объект.

13) Что такое лямбда функции в Python?

Это анонимная функция с одним выражением, часто используемая в качестве inline функции.

14) Почему лямбда-формы в питоне не имеют утверждений?

Лямбда-форма в питоне не имеет утверждений, так как она используется для создания нового объекта функции, а затем возвращает их во время выполнения.

15) Что такое pass в Python?

Пропуск означает, что в составном заявлении не должно быть пустого места, и там не должно быть ничего написано, то есть он является владельцем места в составном заявлении, где не должно быть пустого места.

16) В Питоне какие итераторы?

На Python итераторы используются для итераций группы элементов, контейнеров типа list.

17) Что такое Unittest в Python?

Униттестирование на Python известно как юниттест. Она поддерживает обмен настройками, автоматизированное тестирование, код завершения работы тестов, агрегирование тестов в коллекции и т.д.

18) В Питоне что режут (slicing)?

Механизм выбора ряда элементов из типов последовательности, таких как список, кортеж, строки и т.д., известен как нарезка (slicing).

19) Что такое генераторы на Питоне?

Способ реализации итераторов известен как генератор. Это нормальная функция, за исключением того, что она дает выражение в функции.

20) Что такое docstring в Питоне?

Строка документации Python известна как docstring, это способ документирования функций, модулей и классов Python.

21) Как можно скопировать объект на Python?

Чтобы скопировать объект на Python, вы можете попробовать copy.copy() для единичного вложения или copy.deepcopy() для множественного вложения. Вы не можете скопировать все объекты, но большинство из них.

22) Что такое отрицательный индекс на Python?

Питоновые последовательности могут быть индексированы в положительных и отрицательных числах. Для положительного индекса 0 — первый индекс, 1 — второй и так далее. Для отрицательного показателя, (-1) последний показатель и (-2) второй последний показатель и так далее.

23) Как можно преобразовать число в строку?

Для преобразования числа в строку используйте встроенную функцию str(). Если вы хотите восьмеричное или шестнадцатеричное представление, используйте встроенную функцию oct() или hex().

24) В чем разница между Xrange и range?

Xrange возвращает объект xrange, в то время как range возвращает список (list), и использует ту же память и независимо от размера диапазона.

25) Что такое модуль и пакет в Python?

В Python модуль — это способ структурирования программы. Каждый файл программы на Python — это модуль, который импортирует другие модули, такие как объекты и атрибуты.

Папка программы Python — это пакет модулей. Пакет может иметь модули или подпапки.

26) Упомяните, каковы правила для локальных и глобальных переменных на Python?

Локальные переменные: Если переменной присваивается новое значение где-либо в теле функции, она считается локальной.

Глобальные переменные: Те переменные, на которые ссылаются только внутри функции, неявно являются глобальными.

27) Как вы можете обмениваться глобальными переменными между модулями?

Для обмена глобальными переменными между модулями в рамках одной программы создайте специальный модуль. Импортируйте модуль конфигурации во все модули вашего приложения. Модуль будет доступен как глобальная переменная для всех модулей.

28) Объясните, как сделать Python Script исполняемым на Unix?

Чтобы сделать Python Script исполняемым на Unix, нужно сделать две вещи:

Режим файла скрипта должен быть исполняемым и
первая строка должна начинаться с # (#!/usr/local/bin/python)

29) Объяснить, как удалить файл на Python?

С помощью команды os.remove(имя_файла) или os.unlink(имя_файла)

30) Объясните, как можно генерировать случайные числа на Python?

Для генерации случайных чисел на Python, вам нужно импортировать команду как

import random

random.random()

При этом возвращается случайное число с плавающей точкой в диапазоне [0,1].

31) Объясните, как получить доступ к модулю, написанному на Python, из C?

Вы можете получить доступ к модулю, написанному на Python из C следующим образом

Module = =PyImport_ImportModule(«<modulename>»);

32) Упоминать об использовании // оператора на Python?

Это оператор разделения этажей, который используется для разделения двух операндов с результатом в качестве коэффициента, показывающего только цифры до запятой. Например, 10//5 = 2 и 10.0//5.0 = 2.0

33) Упомяните пять преимуществ использования Python?

  • Python включает в себя огромную стандартную библиотеку для большинства интернет-платформ, таких как Email, HTML и др.
  • Python не требует явного управления памятью, так как сам интерпретатор выделяет память для новых переменных и освобождает их автоматически.
  • Обеспечивают легкую читаемость благодаря использованию квадратных скобок.
  • Легко освоенный для новичков
  • Наличие встроенных типов данных экономит время и усилия программирования при объявлении переменных.

34) Упомяните об использовании сплит-функции на Python?

Использование функции split на Python заключается в том, что она разбивает строку на более короткие строки с помощью заданного разделителя. Она дает список всех слов, присутствующих в строке.

35) Объяснить, что такое Flask и его преимущества?

Flask — это веб-микрофреймворк для Python, основанный на лицензии BSD «Werkzeug, Jinja 2 and good intentions». Werkzeug и jingja — две его зависимости.

Flask является частью микро-фреймворка. А это значит, что у неё практически не будет зависимостей от внешних библиотек. Она делает фреймворк легким, в то время как зависимость от обновлений мала, а ошибок в безопасности меньше.

36) В чем разница между Django, Pyramid и Flask?

Flask — это «microframework «, в первую очередь, созданный для небольшого приложения с более простыми требованиями. Во flask нет необходимости использовать внешние библиотеки. Flask готова к использованию.

Pyramid строятся для более крупных приложений. Она обеспечивает гибкость и позволяет разработчику использовать нужные инструменты для своего проекта. Разработчик может выбрать базу данных, структуру URL, стиль шаблонов и многое другое. Pyramid является тяжело конфигурируемой.

Как и Pyramid, Django также может использоваться для более крупных приложений. Он включает в себя ORM.

37) Что такое Flask-WTF и каковы их особенности?

Flask-WTF предлагает простую интеграцию с WTForms. Особенности включают в себя для Flask WTF

  • Интеграция с wtforms
  • Защищенная форма с токеном csrf
  • Глобальная защита от csrf
  • Интеграция интернационализации
  • Поддержка Рекаптча
  • Загрузка файлов, которая работает с загрузкой Flask.

38) Объяснить, как обычно работает сценарий Flask?

Общий способ работы скрипта flask-

Либо это должен быть путь импорта для вашего приложения.
Или путь к файлу на Python.

39) Объяснить, как получить доступ к сеансам во Flask?

Сессия, в основном, позволяет запоминать информацию из одного запроса в другой. В flask, он использует подписанный cookie, чтобы пользователь мог посмотреть на содержимое сессии и изменить. Пользователь может модифицировать сеанс, если только у него есть секретный ключ Flask.secret_key.

40) Является ли модель MVC Flask и если да, то приведите пример, показывающий шаблон MVC для вашего приложения?

По сути, Flask — это минималистичный каркас, который ведет себя так же, как и каркас MVC. Таким образом, MVC идеально подходит для Flask, а шаблон для MVC мы рассмотрим для следующего примера

from flask import Flask app = Flask(_name_) @app.route(«/») Def hello(): return «Hello World» app.run(debug = True)Часть Controller будет from flask import Flask app = Flask(_name_) Часть View будет @app.route(«/») Def hello(): return «Hello World» Модель app.run(debug = True)  

41) Объяснить подключение к базе данных в Python Flask?

Flask поддерживает приложение, работающее на базе данных (RDBS). Такая система требует создания схемы, для чего необходимо связать файл shema.sql в команду sqlite3. Поэтому для создания или инициализации БД во Flask необходимо установить команду sqlite3.

Flask позволяет запрашивать базу данных тремя способами

  • before_request() : Они вызываются перед запросом и не передают аргументы
  • after_request() : Они вызываются после запроса и передают ответ, который будет отправлен клиенту
  • teardown_request(): Они вызываются в ситуации, когда возникает исключение, и ответ не гарантируется. Они вызываются после построения ответа. Им не разрешается изменять запрос, и их значения игнорируются.

42) У вас есть несколько серверов Memcache под управлением Python, на которых один из серверов memcacher выходит из строя, и у него есть ваши данные, будет ли он когда-нибудь пытаться получить ключевые данные с этого одного из вышедших из строя серверов?

Данные на вышедшем из строя сервере не будут удалены, но есть положение об автозагрузке, которое можно настроить для нескольких узлов. Обход отказа может быть вызван при любом виде ошибок на уровне сокета или Memcached сервера, а не при обычных ошибках клиента, таких как добавление существующего ключа и т.д.

43) Объясните, как можно минимизировать отключения Memcached сервера в вашей разработке на Python?

  • Когда один экземпляр выходит из строя, несколько из них падают, это увеличивает нагрузку на сервер базы данных, когда потерянные данные перезагружаются по мере того, как клиент делает запрос. Чтобы избежать этого, если ваш код был написан для минимизации штампов в кэше, то это оставит минимальное влияние
  • Другой способ — вывести экземпляр Memcached на новую машину, используя IP-адрес потерянной машины.
  • Код — это еще одна опция для минимизации отключений сервера, так как он дает вам возможность изменять список Memcached серверов с минимальной работой
  • Установка значения таймаута является еще одним вариантом, который некоторые клиенты Memcached реализуют для отключения Memcached сервера. Когда ваш Memcached сервер выходит из строя, клиент будет продолжать пытаться отправить запрос до тех пор, пока не будет достигнут лимит таймаута

44) Объяснить, что такое эффект Догпил? Как предотвратить этот эффект?

Dogpile effect относится к событию, когда истекает срок действия кэша, и веб-сайты попадают под множественные запросы, сделанные клиентом в одно и то же время. Этот эффект может быть предотвращен с помощью семафорного замка. В этой системе, когда значение истекает, первый процесс приобретает блокировку и начинает генерировать новое значение.

45) Объясните, как Memcached не следует использовать в вашем проекте Python?

  • Распространенным злоупотреблением memcached является его использование в качестве хранилища данных, а не в качестве кэша.
  • Никогда не используйте Memcached в качестве единственного источника информации, необходимой для запуска вашего приложения. Данные всегда должны быть доступны и через другой источник.
  • Memcached является просто хранилищем ключей или значений и не может выполнять запросы к данным или итерацию по содержимому для извлечения информации.
  • Memcached не предлагает никаких форм безопасности ни при шифровании, ни при аутентификации.

источник