Вопросы на собеседовании для Junior Python-разработчика

Вы ищете работу на 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».