Список вопросов:
1. Какие типы данных вы знаете?
2. Изменяемые - неизменяемые типы данных?
3. Что может быть ключом в словаре?
4. В чем разница между списком и словарем?
5. Что такое хэш-таблица?
6. Как передаются значения в функцию, по ссылке или по значению, и что это значит?
7. Что такое генераторы и итераторы, в чем разница? (дописать)
8. Что такое декоратор? (дописать)
9. Что такое замыкания? (дописать)
10. Какие принципы ООП вы знаете? И как они работают на примере python. (дописать)
11. Что такое MRO? (дописать)
12. Что такое статические методы и для чего они нужны? (дописать)
13. Что такие магические методы, для чего используются, приведите примеры? (дописать)
14. Что такое сборщик мусора и как он работает в python? (дописать)
15. Чем отличается протокол UDP от протокола TCP?
16. Что такое yield и для чего используется? (дописать)
17. Что такое GIL? (дописать)
18. Что такое *args, **kwargs, как используется, в каком порядке и почему? (дописать)
19. Надо перевести деньги с одного счета на другой, напишите псевдокод, как бы вы это сделали? (дописать)
20. Чем отличается оператор is от оператора == ? (дописать)
21. В чем разница между res_1 и res_2, когда мы будем по ним итерироваться в цикле for? (дописать)
22. Задача про карточки пользователей в админке.
#ps_question
1. Какие типы данных вы знаете?
2. Изменяемые - неизменяемые типы данных?
3. Что может быть ключом в словаре?
4. В чем разница между списком и словарем?
5. Что такое хэш-таблица?
6. Как передаются значения в функцию, по ссылке или по значению, и что это значит?
7. Что такое генераторы и итераторы, в чем разница? (дописать)
8. Что такое декоратор? (дописать)
9. Что такое замыкания? (дописать)
10. Какие принципы ООП вы знаете? И как они работают на примере python. (дописать)
11. Что такое MRO? (дописать)
12. Что такое статические методы и для чего они нужны? (дописать)
13. Что такие магические методы, для чего используются, приведите примеры? (дописать)
14. Что такое сборщик мусора и как он работает в python? (дописать)
15. Чем отличается протокол UDP от протокола TCP?
16. Что такое yield и для чего используется? (дописать)
17. Что такое GIL? (дописать)
18. Что такое *args, **kwargs, как используется, в каком порядке и почему? (дописать)
19. Надо перевести деньги с одного счета на другой, напишите псевдокод, как бы вы это сделали? (дописать)
20. Чем отличается оператор is от оператора == ? (дописать)
21. В чем разница между res_1 и res_2, когда мы будем по ним итерироваться в цикле for? (дописать)
22. Задача про карточки пользователей в админке.
#ps_question
👍2
Второй типичный вопрос.
Какие вы знаете изменяемые и неизменяемые типы данных?
Можно ответить просто:
Изменяемые - list, dict, set
Неизменяемые - int, str, float, frozenset, bool, tuple
все вопросы
#ps_question
Какие вы знаете изменяемые и неизменяемые типы данных?
Можно ответить просто:
Изменяемые - 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
Что может быть ключом в словаре?
Ответить можно, что ключом может быть неизменяемый тип.
Почему?
Дело в том, что если у нас будет 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
В чем разница между списком и словарем?
Список в 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
5-ый вопрос:
Что такое Хэш-таблица?
Хэш-таблица - структура данных, напоминающая ассоциативный массив, позволяющая хранить пары ключ-значение. Ключ при этом должен быть уникальным.
Какая сложность операций с хэш-таблицами?
Добавление/удаление/поиск/получение значения по ключу происходит за О(1).
Какие данные могут быть ключом в хэш таблице?
Как и в словаре, https://t.me/python_simple/89
Что будет если 2 разных ключа получат один и тот же хэш?
Это называется коллизией, при этом в бакете (ячейка таблицы) создается связный список из объектов, в которых хранится ключ и значение. И потом когда нам надо получить конкретный объект, то мы ищем, какому ключу соответствует текущий ключ, когда находим, возвращаем значение.
Что будет, если в этих бакетах будет много значений?
Есть коэффициент load factor, он получается, если разделить кол-во элементов на размер хэш таблицы, когда этот коэффициент становится больше 0.7, то хэш таблица расширяется и все данные перераспределяются уже в новой таблице.
все вопросы
#ps_question
👍4🔥1
Немного поменяем формат разбора вопросов. Будем как с задачами. Задаю вопрос, затем обсуждаем в комментариях, затем формируем ответ. И запишу по результатам темы, которые стоит осветить отдельно.
6-ой вопрос:
Как передаются значения в функцию, по ссылке или по значению, и что это значит?
Все переменные в функции передаются по ссылке. То есть, если мы внутри функции будем менять переданный туда список, то он будет меняться и вне функции. Поэтому, если мы не хотим менять изначальный объект, то надо передавать копию объекта в функцию или мы должны знать, что условно список не будет изменяться внутри функции. Это относится к изменяемым типам.
С изменяемыми типами все проще. Если мы передадим инт или строку, то внутри функции мы не сможем их изменить.
все вопросы
#ps_question
6-ой вопрос:
Как передаются значения в функцию, по ссылке или по значению, и что это значит?
Все переменные в функции передаются по ссылке. То есть, если мы внутри функции будем менять переданный туда список, то он будет меняться и вне функции. Поэтому, если мы не хотим менять изначальный объект, то надо передавать копию объекта в функцию или мы должны знать, что условно список не будет изменяться внутри функции. Это относится к изменяемым типам.
С изменяемыми типами все проще. Если мы передадим инт или строку, то внутри функции мы не сможем их изменить.
все вопросы
#ps_question
❤3
7-ой вопрос:
Что такое генераторы и итераторы, в чем разница?
Ответ:
…пишите в комментариях, потом появится тут)
все вопросы
#ps_question
Что такое генераторы и итераторы, в чем разница?
Ответ:
…пишите в комментариях, потом появится тут)
все вопросы
#ps_question
Прошлый вопрос ещё не достаточно настоялся, но надо двигаться дальше.
Этот вопрос будет предтечей для ещё парочки вопросов в будущем. Также он кажется слишком простым, но надо уметь вслепую набрать декоратор и знать, что это такое. Всегда спрашивают.
8-ой вопрос:
Что такое декоратор?
…
Напишите простой декоратор.
…
Напишите декоратор, который принимает параметры
…
все вопросы
#ps_question
Этот вопрос будет предтечей для ещё парочки вопросов в будущем. Также он кажется слишком простым, но надо уметь вслепую набрать декоратор и знать, что это такое. Всегда спрашивают.
8-ой вопрос:
Что такое декоратор?
…
Напишите простой декоратор.
…
Напишите декоратор, который принимает параметры
…
все вопросы
#ps_question
❤4
Это не совсем вопрос с собеседования, я бы его приплюсовал к предыдущему про декораторы, но он тогда станет слишком большим. Но помнимание замыканий - важная тема в программировании вообще, не привязываясь к python-у.
9-ой вопрос:
Что такое замыкания?
Приведите пример замыкания в python.
все вопросы
#ps_question
9-ой вопрос:
Что такое замыкания?
Приведите пример замыкания в python.
все вопросы
#ps_question
Четверг - день вопросов. Сегодня будет вопрос для тех, кто начал учить наследование
10-ой вопрос:
Какие принципы ООП вы знаете? И как они работают на примере python.
все вопросы
#ps_question
10-ой вопрос:
Какие принципы ООП вы знаете? И как они работают на примере python.
все вопросы
#ps_question
Четверговый вопрос:
11. Что такое MRO?
Что такое ромбовидное наследование и как оно разрешается в python?
все вопросы
#ps_question
11. Что такое MRO?
Что такое ромбовидное наследование и как оно разрешается в python?
все вопросы
#ps_question
🔥4
Четвернг вопросов:
12. Что такое статические методы и для чего они нужны?
Что такое classmethod и для чего он может быть нужен?
все вопросы
#ps_question
12. Что такое статические методы и для чего они нужны?
Что такое classmethod и для чего он может быть нужен?
все вопросы
#ps_question
🔥3👍1
Четверговый вопрос)
13. Что такие магические методы, для чего используются, приведите примеры?
все вопросы
#ps_question
13. Что такие магические методы, для чего используются, приведите примеры?
все вопросы
#ps_question
❤4