Python Simple
226 subscribers
55 photos
6 videos
175 links
by mr.Gold
Download Telegram
Второй типичный вопрос.
Какие вы знаете изменяемые и неизменяемые типы данных?
Можно ответить просто:
Изменяемые - list, dict, set
Неизменяемые - int, str, float, frozenset, bool, tuple

все вопросы
#ps_question
🔥2
3-ий вопрос:
Что может быть ключом в словаре?
Ответить можно, что ключом может быть неизменяемый тип.

Почему?
Дело в том, что если у нас будет 2 ключа - списки, тогда теоретически мы сможем их изменить до одинакового состояния и у нас в словаре получится 2 одинаковых ключа, таким образом когда мы попытаемся по ключу достать значение, словарь не будет знать, что нам вернуть.

Может ли кортеж или другой контейнерный тип быть ключом в словаре?
Ответ тут будет и да и нет.

Если у нас будет кортеж, в котором будут только неизменяемые переменные, например:
(1, "my_str", (1, 2)) - то, все ок, он может быть ключом.
Но если у нас будет кортеж, в котором будет хоть один изменяемый тип, то он уже не сможет быть ключом в словаре, например:
(1, "my_str", [1, 2]) - содержит список, и не может быть ключом.

Чтобы очевидно проверить, может ли какая-то переменная быть ключом в словаре, надо попробовать взять у неё hash, если можно будет, то ок, если нельзя, то значит нельзя.
Поэтому можно ответить, что ключом в словаре может быть все, у чего можно взять хэш.

все вопросы
#ps_question
🔥5👍1
4-ий вопрос:
В чем разница между списком и словарем?

Список в python это массив данных, словарь, это ключ-значение. Можно провести аналогию, что в словаре это ключ-значение, а список - это индекс-значение. Разница в сложности вставки элемента в список/словарь, удаления и поиска.

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

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

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

Как правило так подробно рассказывать не нужно, но знать надо, обычно достаточно сказать, что у списка сложность О(n), а словаря О(1)

все вопросы
#ps_question
🔥4👍2
Мы ознакомились с тем, что такое хэш-таблицы, и после вопросов про словарь, обычно спрашивают про них.
5-ый вопрос:
Что такое Хэш-таблица?

Хэш-таблица - структура данных, напоминающая ассоциативный массив, позволяющая хранить пары ключ-значение. Ключ при этом должен быть уникальным.

Какая сложность операций с хэш-таблицами?
Добавление/удаление/поиск/получение значения по ключу происходит за О(1).

Какие данные могут быть ключом в хэш таблице?
Как и в словаре, https://t.me/python_simple/89

Что будет если 2 разных ключа получат один и тот же хэш?
Это называется коллизией, при этом в бакете (ячейка таблицы) создается связный список из объектов, в которых хранится ключ и значение. И потом когда нам надо получить конкретный объект, то мы ищем, какому ключу соответствует текущий ключ, когда находим, возвращаем значение.

Что будет, если в этих бакетах будет много значений?
Есть коэффициент load factor, он получается, если разделить кол-во элементов на размер хэш таблицы, когда этот коэффициент становится больше 0.7, то хэш таблица расширяется и все данные перераспределяются уже в новой таблице.

все вопросы
#ps_question
👍4🔥1
Немного поменяем формат разбора вопросов. Будем как с задачами. Задаю вопрос, затем обсуждаем в комментариях, затем формируем ответ. И запишу по результатам темы, которые стоит осветить отдельно.
6-ой вопрос:
Как передаются значения в функцию, по ссылке или по значению, и что это значит?

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

все вопросы
#ps_question
3
7-ой вопрос:
Что такое генераторы и итераторы, в чем разница?

Ответ:
…пишите в комментариях, потом появится тут)

все вопросы
#ps_question
Прошлый вопрос ещё не достаточно настоялся, но надо двигаться дальше.
Этот вопрос будет предтечей для ещё парочки вопросов в будущем. Также он кажется слишком простым, но надо уметь вслепую набрать декоратор и знать, что это такое. Всегда спрашивают.
8-ой вопрос:
Что такое декоратор?


Напишите простой декоратор.

Напишите декоратор, который принимает параметры


все вопросы
#ps_question
4
Это не совсем вопрос с собеседования, я бы его приплюсовал к предыдущему про декораторы, но он тогда станет слишком большим. Но помнимание замыканий - важная тема в программировании вообще, не привязываясь к python-у.
9-ой вопрос:
Что такое замыкания?


Приведите пример замыкания в python.

все вопросы
#ps_question
Четверг - день вопросов. Сегодня будет вопрос для тех, кто начал учить наследование
10-ой вопрос:
Какие принципы ООП вы знаете? И как они работают на примере python.


все вопросы
#ps_question
Четверговый вопрос:
11. Что такое MRO?

Что такое ромбовидное наследование и как оно разрешается в python?

все вопросы
#ps_question
🔥4
Четвернг вопросов:
12. Что такое статические методы и для чего они нужны?

Что такое classmethod и для чего он может быть нужен?

все вопросы
#ps_question
🔥3👍1
Четверговый вопрос)
13. Что такие магические методы, для чего используются, приведите примеры?

все вопросы
#ps_question
4
Четверговый вопрос)
14. Что такое сборщик мусора и как он работает в python?

все вопросы
#ps_question
4
Сегодня будет вопрос не про python, а про сети. Это первый и часто единственный вопрос, который почему-то любят задавать. Недавно даже разошелся мем, на тему этого вопросы. Как следствие Влад Тен снял видео, в котором подробно объяснил, в чем разница.
15. Чем отличается протокол UDP от протокола TCP?
Короткий ответ, которого достаточно: TCP гарантирует доставку пакетов, а UDP - нет.
Но если вы хотите ответить развернуто, какой протокол где используется и тд, то можно посмотреть это видео, очень информативно.
https://www.youtube.com/watch?v=ZyIGagqf44E

В комментах можно сделать миниконспект или более развернутый ответ)

все вопросы
#ps_question
🔥4👍2
Четверговый вопрос:
16. Что такое yield и для чего используется?


все вопросы
#ps_question
🔥3🎅1
Пришло время самого популярного вопроса, отвечая на него, можно зайти достаточно далеко в своих рассуждениях и испортить собес, если дойти до тем, в которых плаваете.
17. Что такое GIL?


все вопросы
#ps_question
🔥51
Всем привет, пока не будем углубляться в асинхронности и параллелизм, и будет относительно простой и понятный вопрос, но подумать вре равно надо будет)
18. Что такое *args, **kwargs, как используется, в каком порядке и почему?


все вопросы
#ps_question
👍3
Есть впечатление, что мы пробежались по основным вопросам именно по python, поэтому пойдут вопросы, которые плавно будут перетекать в другие темы.
19. Надо перевести деньги с одного счета на другой, напишите псевдокод, как бы вы это сделали?
Есть табличка, в которой колонки user_id, balance. Первый user переводит второму 200р.
Вам необходимо по максимуму учесть все кейсы и написать работающий псевдокод)



все вопросы
#ps_question
👍4
Всем привет!
Вопрос простой, ответ ещё проще, но это тоже спрашивают:
20. Чем отличается оператор is от оператора == ?


все вопросы
#ps_question
🔥5🤔2