Вы ищете работу на Python? В этой статье мы разберем основные вопросы на собеседовании на позицию Junior Python-разработчика. А чтобы вы могли быстрее подготовиться к собеседованию, ко всем вопросам мы добавили ответы.
Мы составили этот список, основываясь на десятках технических собеседований в ведущие технологические компании. Прочитав вопросы, отметьте те, на которые вы не смогли сразу дать ответ. Затем, при повторном прочтении, пройдите только те вопросы, которые вызвали у вас затруднения. Пройдя по этому списку два-три раза, вы будете хорошо подготовлены к техническому собеседованию по Python.
Заметим, что в этом посте мы разберем вопросы именно для младших разработчиков (джунов). Вопросы на более высокие позиции будут разобраны в отдельной статье.
Итак, давайте преступим! Какие же вопросы задают на собеседовании на позицию Python-разработчика уровня Junior?
1. Каковы преимущества использования Python?
Эффективность. Python очень хорошо справляется с управлением памятью. Если вы работаете с большими объемами данных, разработку лучше вести на Python.
Скорость. Хотя Python — интерпретируемый язык, все же он имеет очень высокую производительность.
Широта использования. Python используется самыми разными организациями и для разных типов проектов. Из-за такого широкого спектра применения нам доступны тысячи надстроек.
Простота изучения. Python довольно легок в изучении. Возможно, это самое большое его преимущество. При этом на Python можно легко реализовать решение сложных задач.
[python_ad_block]2. Что такое PEP 8 и зачем он нужен?
PEP 8 – это руководство по стилю кода Python.
В этом документе представлены общепринятые соглашения о написании кода на Python. Эти соглашения касаются отступов, форматирования, табуляции, максимальной длины строки, организации импорта, межстрочного интервала и т.д.
Согласованность кода упрощает его чтение другими разработчиками. А чтобы обеспечить согласованность, мы придерживаемся PEP 8.
3. В чем разница между кортежем и списком в Python?
В Python кортежи и списки – это встроенные структуры данных. Вот несколько различий между списком (list) и кортежем (tuple):
- Синтаксис. Кортеж заключается в круглые скобки, а список – в квадратные.
- Изменяемость. Кортеж – это неизменяемая структура данных, а список – изменяемая.
- Размер. Кортеж занимает гораздо меньше места, чем список в Python.
- Производительность. Кортеж быстрее, чем список. Как следствие, это дает нам хорошую производительность.
4. В чем разница между списком и словарем в Python?
Это также встроенные структуры данных. Основные же различия между списком (list) и словарем (dictionary) в Python заключаются в следующем:
- Синтаксис. В списке мы храним объекты в виде последовательности. В словаре объекты хранятся в виде пар «ключ-значение».
- Обращение к элементу. К элементам списка мы обращаемся по индексу (помним, что индексация начинается с 0). К объектам, хранящимся в словаре, мы обращаемся по ключам, указанным при создании словаря.
- Упорядоченность. Элементы списка хранятся в упорядоченной последовательности. В словаре объекты не упорядочены.
- Хеширование. Ключи в словаре должны быть хешируемыми. В списке же нет необходимости в хешировании.
5. Какие встроенные типы доступны в Python?
В Python доступные следующие типы данных:
- Числовые типы – это типы, используемые для представления чисел в Python.
int
: используется для целых чисел.
long
: предназначался для очень больших целых чисел неограниченной длины. В Python 3 не используется, поскольку в этой версии все int по умолчанию являются long.
float
: используется для десятичных чисел.
complex
: используется для представления комплексных чисел.
- Типы последовательностей – эти типы используются для представления последовательностей символов или объектов.
str
: представляет собой последовательность символов, строку.
bytes
: это последовательность целых чисел в диапазоне 0–255.
- байтовый массив: работает как байты, но является изменяемым, доступен только в Python.
- list (список): это последовательность объектов.
- tuple (кортеж): неизменяемая последовательность объектов.
- Множества – это неупорядоченные коллекции уникальных и неизменяемых элементов.
set
: изменяемый набор уникальных объектов.
frozenset
: неизменяемый набор уникальных объектов.
- Словари (dict). Также называются хэш-картой. Содержат пары «ключ-значение» для хранения информации с помощью хеширования.
6. Как объединить несколько строк в Python?
Для объединения нескольких строк в Python можно использовать следующие способы:
1. При помощи оператора +
. Например:
firstname = "John" lastname = "Ray" print(firstname+lastname) # Output: JohnRay
2. При помощи функции join()
. Например:
".join{['John','Ray']) # Output: 'JohnRay'
7. Зачем использовать оператор pass в Python?
Оператор pass
используется в качестве заполнителя для будущего кода. При выполнении ничего не происходит, но вы избегаете ошибки, если пустой код не разрешен. Пустой код не допускается в циклах, определениях функций, определениях классов или в операторах if
.
8. Зачем нужны срезы в Python?
Срезы – это строковая операция для получения подстроки или некоторой части списка.
В Python строка (скажем, текст) начинается с индекса 0, а n-й символ сохраняется в позиции text[n-1]
. Кроме того, Python также может выполнять обратную индексацию (в обратном направлении), с помощью отрицательных чисел.
В Python есть специальная функция-конструктор, которая генерирует объект среза, — slice()
. Результатом ее работы является набор индексов, заданных диапазоном (start
, stop
, step
).
Метод slice()
принимает три параметра: start
– номер для начала среза, stop
— число, обозначающее конец среза, и step
– шаг, с которым мы будем передвигаться по объекту. Шаг по умолчанию равен 1, то есть мы перебираем элементы по очереди, ничего не пропуская.
От редакции Pythonist. Больше о срезах можно почитать в статье «Применение срезов списков без указания индексов в Python».
9. В чем разница между итератором и итерируемым объектом в Python?
Итераторы в Python – это объекты, похожие на массивы, которые позволяют переходить от одного элемента к другому. Мы используем их при обходе цикла, например, в цикле for
.
В библиотеке Python есть несколько итераторов. Например, список также является итератором, и мы можем запустить цикл for
по нему.
Коллекции, т.е. такие типы, как список, кортеж, словарь и множество, – являются итерируемыми объектами. Кроме того, они также являются итеративными контейнерами, которые возвращают итератор во время обхода цикла.
10. Что такое лямбда-выражение в Python?
Лямбда-выражение в Python используется для создания анонимной функции, которая может принимать любое количество аргументов, но может иметь только одно выражение.
Лямбда-функция не содержит блока инструкций. Она также не содержит операторов возврата. Обычно используется в ситуациях, когда требуется анонимная функция в течение короткого периода времени.
11. Что такое None в Python?
Ключевое слово None в Python представляет нулевые значения. Объект None имеет тип NoneType. С использованием таких объектов может быть выполнена операция логического равенства.
12. Как используется оператор // в Python?
Python предоставляет оператор //
для выполнения целочисленного деления одного числа на другое. Результатом работы этого оператора является целое число, полученное в результате деления левого числа на правое.
С той же целью можно использовать функцию floordiv(a, b)
.
13. Что такое модуль в Python?
Модуль – это файл, написанный на Python и содержащий код с инструкциями импорта, классами, функциями и т.д.
Модули можно импортировать в другой файл Python.
С помощью модулей функциональность приложений может быть разделена на более мелкие части для структурирования программы.
Папка программы Python – это пакет модулей. Такой пакет может содержать модули или подпапки.
14. Можно ли создать словарь с упорядоченным набором ключей в Python?
В обычном словаре ключи не упорядочиваются. Чтобы решить эту проблему, можно использовать класс OrderDict
. Класс доступен начиная с версии 2.7.
15. Python – это объектно-ориентированный язык программирования или язык функционального программирования?
Python – это объектно-ориентированный язык программирования. Однако его можно рассматривать как процедурный, а также как структурный язык.
16. В чем разница между списковыми методами append() и extend() в Python?
В Python методы append()
и extend()
используются для добавления элементов в конец списка. Однако между ними есть определенная разница.
append(элемент)
: добавляет элемент, переданный в качестве аргумента, в конец списка.extend(другой_список)
: добавляет в конец списка элементы другого списка.
17. Что такое ошибки и исключения в программах на Python?
Ошибки – это проблемы с кодом в программе, которые могут привести к ее ненормальному завершению (получению не того результата, который мы хотели). Исключения возникают из-за возникновения внешнего события, которое прерывает нормальный ход программы.
Пожалуй, это все основные вопросы, которые точно встретятся у вас на собеседовании, если вы претендуете на джуниорскую позицию разработчика на Python.
Заключение
Мы рассмотрели основные вопросы, которые могут задать на собеседовании начинающему разработчику.
Надеемся, вы с легкостью смогли ответить на все. Если нет – ничего страшного, изучите тему, в которой вы не уверены и обязательно пройдитесь по этому списку несколько раз. Тогда вы точно будете уверены в своих знаниях перед собеседованием! Успехов!
Перевод статьи «Python interview questions and answers to know before interviewing».