2449 просмотров
от 4 июня 2024
Python

Вопросы и ответы с собеседований по Python

Вопросы и ответы с собеседований Python-разработчиков. Типы данных, методы и особенности работы со строками, списками и словарями, предназначение декораторов, концепция наследования, суть генераторов и многое другое.

1

Что такое переменная?

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

Комментарии
0/3000
2

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

bool - логический тип данных. True или False bytearray - изменяемая последовательность байтов bytes - неизменяемая последовательность байтов complex - комплексные числа dict - словарь (похож на ассоциативный массив в PHP) ellipsis - используется для получения среза (определяется или ключевым словом Ellipsis или тремя точками) float - вещественные числа frozenset - неизменяемое множество function - функция int - целые числа (размер числа ограничен объемом доступной оперативной памяти) list - список (аналогичен массивам в других языках программирования) module - модуль NoneType - пустой объект, объект без значения (точнее со значением None, что в других языках соответствует null) set - множество (набор уникальных объектов) str - unicode-строка tuple - кортеж type - типы и классы данных Узнать тип данных можно с помощью функции type() Осваиваем Python. Унция 1. Типы данных. Типы данных наносят ответный удар

Комментарии
0/3000
3

Расскажите про изменяемые и неизменяемые типы данных

Все типы данных в Python можно разделить на изменяемые и неизменяемые. Неизменяемость означает, что состояние нельзя изменить после создания. К неизменяемым типам данных относятся числа, строки, кортежи и байты (bytes). К изменяемым относятся списки, словари и массив байтов (bytearray).

Комментарии
0/3000
4

Что вы знаете о строках?

a = "hello" id(a) # 2044344987401 a = "hello world" id(a) # 2044334957804 Cтрока – это упорядоченная последовательность символов, которая предназначена для хранения информации в виде простого текста. В Python3 строка по умолчнанию имеет кодировку Unicode, что избавляет от проблем работы и отображения символов кирилицы и прочих экзотических кодировок. Строка это неизменяемый тип данных, т.е. если нужно добавить символов в существующую строку, придется создать новую строку, с новым адресом в памяти. 41 вопрос о работе со строками в Python Основы Python — кратко. Строки.

Комментарии
0/3000
5

Какие есть числовые типы?

int - целые числа. float - вещественные или действительные числа(числа с плавающей точкой). complex - комплексные числа. Также есть модуль decimal, используемый для выполнения операций повышенной точности. Есть еще и модуль fractions, обеспечивающий поддержку рациональных чисел и использующийся для осуществления математических операций с дробями. 3 особенности чисел в Python, о которых вы, возможно, не знали

Комментарии
0/3000
6

Что в Python не является объектом?

В Python всё является объектом, кроме ключевых слов: in, is, if, while, и т. д. Заметки об объектной системе языка Python ч.1

Комментарии
0/3000
7

Разница между списком и кортежем?

1. Список можно изменить после создания. 2. Кортеж нельзя изменить после создания. 3. Список упорядочен. Он представляет собой упорядоченные последовательности объектов, как правило, одного и того же типа. Например, все имена пользователей упорядочены по дате создания: ["Seth", "Ema", "Eli"]. 4. У кортежа есть структура. В каждом индексе могут сосуществовать различные типы данных. Например, такая запись базы данных в памяти: (2, "Ema", "2020–04–16") # id, name, created_at. Основы Python — кратко. Часть 3. Списки, кортежи, файлы.

Комментарии
0/3000
8

Как удалить из списка дубликаты?

a = [1,1,1,2,3] a = list(set(a)) print(a) #=> [1, 2, 3] Это можно сделать путем преобразования списка в множество, а затем обратно в список. Обратите внимание, что множества не обязательно поддерживают порядок следования списка.

Комментарии
0/3000
9

Разница между append и extend?

a = [1,2,3] b = [1,2,3] a.append(6) print(a) #=> [1, 2, 3, 6] b.extend([4,5]) print(b) #=> [1, 2, 3, 4, 5] append добавляет значения в список, а extend добавляет в список значения из другого списка.

Комментарии
0/3000
10

Как проверить, существует ли значение в списке?

Используйте in: 'a' in ['a','b','c'] #=> True 'a' in [1,2,3] #=> False

Комментарии
0/3000
11

Что такое словари?

Словари в Python - коллекции произвольных объектов с доступом по ключу. Начиная с Python3.6 словарь dict() упорядочен, т.е. при переборе имеющегося словаря, элементы возвращаются в том порядке, в котором они были добавлены в словарь при его наполнении. До Python3.6 приходилось использовать объект OrderedDict(), чтобы иметь упорядоченную коллекцию, с доступам к элементам по ключам. Словарь это изменяемый тип данных. Количество пар "ключ-значение" ограничено объемом оперативной памяти.

Комментарии
0/3000
12

Как отсортировать словарь по ключам?

Нельзя «отсортировать» словарь, поскольку словари не поддерживают упорядочение, но можно вернуть отсортированный список кортежей с ключами и значениями из словаря: d = {'c':3, 'd':4, 'b':2, 'a':1} sorted(d.items()) #=> [('a', 1), ('b', 2), ('c', 3), ('d', 4)]

Комментарии
0/3000
13

Где быстрее поиск: в словарях или списках?

Поиск значения в списке занимает O(n) времени, потому что нужно пройти весь список. Поиск ключа в словаре занимает O(1) времени, потому что это хэш-таблица. Разница во времени может быть огромной, если значений много, поэтому для производительности обычно рекомендуют словари. Но у них есть другие ограничения, такие как необходимость уникальных ключей.

Комментарии
0/3000
14

Как выполняется интерполяция строк?

Без импорта класса Template есть три способа интерполяции строк: name = 'Chris' # 1. f strings print(f'Hello {name}') # 2. % operator print('Hey %s %s' % (name, name)) # 3. format print( "My name is {}".format(name) )

Комментарии
0/3000
15

Как проверить, что в строке только буквы и цифры?

Здесь можно использовать isalnum(): '123abc...'.isalnum() #=> False '123abc'.isalnum() #=> True

Комментарии
0/3000
16

В чем разница между is и ==?

== проверяет, одинаковые ли значения у переменных. is проверяет, указывают ли переменные на один и тот же объект. То есть, a is b по сути то же самое, что id(a) == id(b).

Комментарии
0/3000
17

Что означает self в классе?

class Shirt: def __init__(self, color): self.color = color s = Shirt('yellow') s.color # => 'yellow' self ссылается на экземпляр класса. Так метод может обновлять объект, к которому принадлежит. Выше передача self в __init__() дает возможность установить цвет экземпляра при инициализации:

Комментарии
0/3000
18

Разница между методами экземпляра, класса и статическими методами?

Методы экземпляра: принимают параметр self и относятся к определенному экземпляру класса. Статические методы: используют декоратор @staticmethod, не связаны с конкретным экземпляром и являются автономными (атрибуты класса или экземпляра не изменяются). Методы класса: принимают параметр cls, можно изменить сам класс.

Комментарии
0/3000
19

Что такое декоратор?

Декоратор — это функция, оборачивающая другую функцию для расширения её функциональности без непосредственного изменения её кода. В листинге кода приведен пример реализации декоратора для логирования: def logging(func): def log_function_called(): print(f'{func} called.') func() return log_function_called Вот так он может быть использован: @logging def my_name(): print('chris') Понимаем декораторы в Python'e, шаг за шагом. Шаг 1 Python декораторы на максималках. Универсальный рецепт по написанию и аннотированию от мала до велика

Комментарии
0/3000
20

Разница между func и func()?

func — это представляющий функцию объект, который можно назначить переменной или передать другой функции. Функция func() с круглыми скобками вызывает функцию и возвращает результат. def func(): print('Im a function') func # => function __main__.func > func() # => Im a function

Комментарии
0/3000
21

Для чего нужна функция range?

range генерирует список целых чисел. Ее можно использовать тремя способами. 1. range(stop) — генерирует целые числа от 0 до целого числа stop 2. range(start, stop) — генерирует целые числа от start до stop 3. range(start, stop, step) — генерирует целые числа от start до stop с интервалами step

Комментарии
0/3000
22

Для чего нужна функция map?

def add_three(x): return x + 3 li = [1, 2, 3] list(map(add_three, li)) # => [4, 5, 6] Она возвращает объект (итератор), который перебирает значения, применяя функцию к каждому элементу. В случае необходимости объект можно преобразовать в список.

Комментарии
0/3000
23

Для чего нужна функция filter?

def add_three(x): if x % 2 == 0: return True else: return False li = [1,2,3,4,5,6,7,8] [i for i in filter(add_three, li)] #=> [2, 4, 6, 8] Функция делает буквально то, о чем говорит ее название: она фильтрует элементы в последовательности. Каждый элемент передается функции, которая включает его в последовательность, если по условию получает True, и отбрасывает в случае False.

Комментарии
0/3000
24

Для чего нужна функция reduce?

from functools import reduce def add_three(x,y): return x + y li = [1,2,3,5] reduce(add_three, li) #=> 11 reduce принимает функцию и последовательность — и проходит по этой последовательности. На каждой итерации в функцию передаются как текущий элемент, так и выходные данные предыдущего элемента. В конце концов, возвращается одно значение.

Комментарии
0/3000
25

Как работают функции any() и all()?

any возвращает True, если хоть один элемент в последовательности соответствует условию, то есть является True. all возвращает True только в том случае, если условию соответствуют все элементы в последовательности.

Комментарии
0/3000
26

Разница между модулем и пакетом?

Модуль — это файл или набор файлов, которые импортируются вместе: import sklearn Пакет — это каталог с модулями: from sklearn import cross_validation Таким образом, пакеты — это модули, но не все модули являются пакетами.

Комментарии
0/3000
27

Как реализуется наследование классов?

class Car(): def drive(self): print('vroom') class Audi(Car): pass audi = Audi() audi.drive() В приведенном выше примере класс Audi является наследником Car. И вместе с этим наследуются методы экземпляра родительского класса.

Комментарии
0/3000
28

Разница между remove, del и pop?

remove() удаляет первое совпадающее значение. del удаляет элемент по его индексу. pop() удаляет элемент по индексу и возвращает этот элемент.

Комментарии
0/3000
29

Как выполняется обработка исключений?

1

try: # попробовать сделать это except: # если блок try не сработал, попробовать это finally: # всегда делать это Для обработки исключений Python предоставляет конструкцию из трех слов: try, except и finally.

Комментарии
0/3000
30

Дайте несколько рекомендаций по PEP8

- Используйте 4 пробела на каждый уровень отступа. - Импорт должен быть сгруппирован в следующем порядке: - Импорт стандартной библиотеки. - Импорт сторонних элементов. - Импорт локального приложения/библиотеки. - Имена функций и переменных должны быть строчными и разделяться символами подчеркивания - Имена классов должны состоять из заглавных букв.

Комментарии
0/3000
31

Как прочитать файл объемом 8 ГБ на Python с помощью компьютера с 2 ГБ ОЗУ?

with open("./large_dataset.txt") as input_file: for line in input_file: process_line(line) Это решение работает для файлов любых размеров. Когда вы открываете файл, всё, что вам нужно сделать, это использовать объект файла в качестве итератора: при циклическом просмотре этого объекта, вы будете извлекать по одной строке за раз, а предыдущие строки будут удалены из памяти. Таким образом, файл никогда не будет полностью загружен в память, и обработка будет выполняться на ходу.

Комментарии
0/3000
32

Что такое генератор?

Это функция, которая будучи вызванной в функции next() возвращает следующий объект согласно алгоритму ее работы. Вместо ключевого слова return в генераторе используется yield. Главное отличие yield от return это то, что yield, после возврата объекта, сохраняет стек генератора, так что при следующем вызове функции next() от генератора, исполнение кода генератора продолжится с того момента, где yield вернул объект в прошлый раз. Генераторы для самых маленьких

Комментарии
0/3000
Смежные категории
Docker
7 вопросов
Коллекция полезных команд для Docker
1321 просмотр
Computer Science
15 вопросов
Вопросы и ответы с собеседований по DDD
1526 просмотров
Computer Science
12 вопросов
Вопросы с собеседований про операционные системы
1061 просмотр
Computer Science
11 вопросов
Вопросы и ответы про интернет-протоколы
1464 просмотра
Базы данных
11 вопросов
Вопросы с собеседований про шардинг баз данных
1282 просмотра
Базы данных
60 вопросов
Вопросы и ответы с собеседований по SQL
2377 просмотров
Рекомендуем
Базы данных
60 вопросов
Вопросы и ответы с собеседований по SQL
2377 просмотров
Computer Science
28 вопросов
Объяснение паттернов проектирования с примерами
1423 просмотра
Git
20 вопросов
Вопросы и ответы с собеседований по Git
1783 просмотра
Computer Science
12 вопросов
Вопросы с собеседований про операционные системы
1061 просмотр
Computer Science
13 вопросов
Вопросы и ответы с собеседований про ООП
1230 просмотров
Computer Science
11 вопросов
Вопросы и ответы про интернет-протоколы
1464 просмотра
Другие разделы

Лента

Активность пользователей Девстанции

Перейти к ленте

Лидеры

Рейтинг самых результативных пользователей сообщества

Перейти к лидерам

Треды

Общение по интересам и связь с разработчиками

Перейти к тредам

Задачи

Решение алгоритмических задач с собеседований

Перейти к задачам

Вопросы

Ответы на вопросы с технических собеседований

Вы находитесь здесь

Викторины

Интерактивные викторины по вопросам с собеседований

Перейти к викторинам
Мы в Telegram
Новости проекта, общение с разработчиками, общение по интересам - присоединяйтесь!