💬 Вопрос на собесе:
Как устроен протокол HTTP?
👶 Junior:
— Это вроде способ, как сайты общаются с сервером? Что-то про запросы и ответы 🫣
🧑💻 Middle:
— HTTP (HyperText Transfer Protocol) — это протокол, по которому клиент (браузер) и сервер обмениваются данными.
Он работает по принципу запрос–ответ: клиент отправляет запрос, сервер возвращает ответ с кодом состояния и данными.
🧙♂️ Senior:
— HTTP — текстовый протокол прикладного уровня, основанный на модели клиент–сервер.
🔹 Каждый запрос содержит метод (GET, POST, PUT, DELETE), URL, заголовки и тело.
🔹 Ответ — код состояния (200, 404, 500 и т.д.), заголовки и данные (HTML, JSON, файл и т.п.).
🔹 Современные версии (HTTP/2, HTTP/3) добавляют мультиплексирование, сжатие заголовков и работу поверх QUIC для ускорения передачи.
🔹 HTTPS — это тот же HTTP, но с шифрованием через TLS, чтобы защитить данные при передаче.
🐍Вопросы с собесов -> ProstoPython
Как устроен протокол HTTP?
👶 Junior:
— Это вроде способ, как сайты общаются с сервером? Что-то про запросы и ответы 🫣
🧑💻 Middle:
— HTTP (HyperText Transfer Protocol) — это протокол, по которому клиент (браузер) и сервер обмениваются данными.
Он работает по принципу запрос–ответ: клиент отправляет запрос, сервер возвращает ответ с кодом состояния и данными.
🧙♂️ Senior:
— HTTP — текстовый протокол прикладного уровня, основанный на модели клиент–сервер.
🔹 Каждый запрос содержит метод (GET, POST, PUT, DELETE), URL, заголовки и тело.
🔹 Ответ — код состояния (200, 404, 500 и т.д.), заголовки и данные (HTML, JSON, файл и т.п.).
🔹 Современные версии (HTTP/2, HTTP/3) добавляют мультиплексирование, сжатие заголовков и работу поверх QUIC для ускорения передачи.
🔹 HTTPS — это тот же HTTP, но с шифрованием через TLS, чтобы защитить данные при передаче.
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍4❤1🔥1
⏱️ 1 минута о Python:
Разница между is и ==
Многие путают эти два оператора, но между ними огромная разница 👇
🔹 == сравнивает значения объектов
То есть проверяет, одинаковы ли данные внутри переменных.
🔹 is сравнивает идентичность объектов
Проверяет, ссылаются ли переменные на один и тот же объект в памяти.
📘 Пример:
🧠 Помни:
Используй is, когда сравниваешь с None , то if x is None:
Во всех остальных случаях ==
🐍Вопросы с собесов -> ProstoPython
Разница между is и ==
Многие путают эти два оператора, но между ними огромная разница 👇
🔹 == сравнивает значения объектов
То есть проверяет, одинаковы ли данные внутри переменных.
🔹 is сравнивает идентичность объектов
Проверяет, ссылаются ли переменные на один и тот же объект в памяти.
📘 Пример:
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b) # True (значения одинаковые)
print(a is b) # False (разные объекты в памяти)
🧠 Помни:
Используй is, когда сравниваешь с None , то if x is None:
Во всех остальных случаях ==
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥3
🔷 Диапазон (range) — это последовательность чисел, создаваемая функцией
👉 Пример:
🐍Вопросы с собесов -> ProstoPython
range(), обычно используемая в циклах.👉 Пример:
range(1, 5) создаёт числа 1, 2, 3, 4 — удобно для перебора фиксированного количества шагов.🐍Вопросы с собесов -> ProstoPython
👍3❤🔥1
💬 Вопрос на собесе:
Что такое GET?
👶 Junior:
— Ну… это вроде способ что-то запросить у сервера? Типа когда страницу открываешь 😅
🧑💻 Middle:
— GET — это HTTP-метод, который используется для запроса данных с сервера.
Он не изменяет данные — только запрашивает их.
🧙♂️ Senior:
— GET — это один из самых популярных методов HTTP.
🔹 Используется для чтения данных (идемпотентный метод — не меняет состояние сервера).
🔹 Все параметры передаются в URL: /users?id=10.
🔹 Тело запроса обычно не используется.
🔹 Ответ может содержать HTML, JSON или другой контент.
🔹 Веб-браузеры кэшируют GET-запросы, что делает их быстрыми и удобными для статических данных.
🐍Вопросы с собесов -> ProstoPython
Что такое GET?
👶 Junior:
— Ну… это вроде способ что-то запросить у сервера? Типа когда страницу открываешь 😅
🧑💻 Middle:
— GET — это HTTP-метод, который используется для запроса данных с сервера.
Он не изменяет данные — только запрашивает их.
🧙♂️ Senior:
— GET — это один из самых популярных методов HTTP.
🔹 Используется для чтения данных (идемпотентный метод — не меняет состояние сервера).
🔹 Все параметры передаются в URL: /users?id=10.
🔹 Тело запроса обычно не используется.
🔹 Ответ может содержать HTML, JSON или другой контент.
🔹 Веб-браузеры кэшируют GET-запросы, что делает их быстрыми и удобными для статических данных.
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍2🏆1
⏱️ 1 минута о Python:
Что делает оператор “:=” (моржовый оператор)? 🦭
Раньше, чтобы использовать значение в условии, нужно было писать в две строки:
Теперь можно сократить с помощью моржового оператора := 👇
🔹 Он присваивает значение и возвращает его в одной строке.
🔹 Удобен в циклах, условиях и списковых включениях.
🔹 Появился в Python 3.8.
💡 Экономит строки и делает код лаконичнее - но не злоупотребляй, если читаемость страдает.
🐍Вопросы с собесов -> ProstoPython
Что делает оператор “:=” (моржовый оператор)? 🦭
Раньше, чтобы использовать значение в условии, нужно было писать в две строки:
value = input("Введите число: ")
if value.isdigit():
print("Это число!")Теперь можно сократить с помощью моржового оператора := 👇
if (value := input("Введите число: ")).isdigit():
print("Это число!")🔹 Он присваивает значение и возвращает его в одной строке.
🔹 Удобен в циклах, условиях и списковых включениях.
🔹 Появился в Python 3.8.
💡 Экономит строки и делает код лаконичнее - но не злоупотребляй, если читаемость страдает.
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍3
🔷 Docker Registry — это хранилище, где сохраняются образы Docker.
👉 Оно позволяет загружать (push) и скачивать (pull) образы контейнеров, чтобы делиться ими между разработчиками или серверами.
🐍Вопросы с собесов -> ProstoPython
👉 Оно позволяет загружать (push) и скачивать (pull) образы контейнеров, чтобы делиться ими между разработчиками или серверами.
🐍Вопросы с собесов -> ProstoPython
👍2🔥1
🧠 Алгоритм дня:
Сортировка выбором (Selection Sort)
🔹 Идея проста:
На каждом шаге ищем минимальный элемент и ставим его в начало неотсортированной части списка.
Повторяем, пока весь массив не станет отсортированным.
📘 Пример:
📤 Вывод:
[1, 2, 5, 5, 6, 9]
🧩 Сложность:
Средняя и худшая: O(n²)
Лучшая: O(n²) (всё равно перебирает)
Память: O(1)
⚡️ Используется там, где важна простота, а не скорость - например, в обучении или небольших наборах данных.
🐍Вопросы с собесов -> ProstoPython
Сортировка выбором (Selection Sort)
🔹 Идея проста:
На каждом шаге ищем минимальный элемент и ставим его в начало неотсортированной части списка.
Повторяем, пока весь массив не станет отсортированным.
📘 Пример:
def selection_sort(arr):
n = len(arr)
for i in range(n):
min_index = i
for j in range(i + 1, n):
if arr[j] < arr[min_index]:
min_index = j
arr[i], arr[min_index] = arr[min_index], arr[i]
return arr
print(selection_sort([5, 2, 9, 1, 5, 6]))
📤 Вывод:
[1, 2, 5, 5, 6, 9]
🧩 Сложность:
Средняя и худшая: O(n²)
Лучшая: O(n²) (всё равно перебирает)
Память: O(1)
⚡️ Используется там, где важна простота, а не скорость - например, в обучении или небольших наборах данных.
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
❤🔥4
💬 Вопрос на собесе:
Как разбить строку на список строк?
👶 Junior:
— Эээ… через запятую, наверное? Или как-то с циклом? 😅
🧑💻 Middle:
— Для этого есть метод split(). Он делит строку по указанному разделителю и возвращает список.
Например:
🧙♂️ Senior:
— split() — это встроенный метод строк, который разбивает строку на части по заданному разделителю.
🔹 Если разделитель не указан, Python использует пробелы, табы и переносы строк как разделители.
🔹 Можно ограничить количество разбиений вторым аргументом (maxsplit).
🔹 Есть и обратный метод — join(), который объединяет список строк в одну строку:
🧩 split() — основа работы с текстом в Python.
🐍Вопросы с собесов -> ProstoPython
Как разбить строку на список строк?
👶 Junior:
— Эээ… через запятую, наверное? Или как-то с циклом? 😅
🧑💻 Middle:
— Для этого есть метод split(). Он делит строку по указанному разделителю и возвращает список.
Например:
"яблоко,банан,вишня".split(',')
# ['яблоко', 'банан', 'вишня']🧙♂️ Senior:
— split() — это встроенный метод строк, который разбивает строку на части по заданному разделителю.
🔹 Если разделитель не указан, Python использует пробелы, табы и переносы строк как разделители.
🔹 Можно ограничить количество разбиений вторым аргументом (maxsplit).
🔹 Есть и обратный метод — join(), который объединяет список строк в одну строку:
','.join(['яблоко', 'банан', 'вишня'])
# 'яблоко,банан,вишня'
🧩 split() — основа работы с текстом в Python.
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🏆4🔥1
🔷 Потому что словарь в Python основан на хэш-таблице — каждый ключ при добавлении преобразуется в хэш, и по этому хэшу сразу вычисляется позиция в памяти, где хранится значение.
👉 Благодаря этому поиск не требует обхода всех элементов (как в списке), а выполняется почти мгновенно — за O(1) в среднем случае.
🐍Вопросы с собесов -> ProstoPython
👉 Благодаря этому поиск не требует обхода всех элементов (как в списке), а выполняется почти мгновенно — за O(1) в среднем случае.
🐍Вопросы с собесов -> ProstoPython
🔥4
⏱️ 1 минута о Python:
Что делает функция enumerate()?
Когда тебе нужно перебирать элементы списка вместе с их индексами, не используй for i in range(len(...)) — это не по-питоновски 🐍
👉 Вместо этого:
enumerate() превращает любую последовательность в пары (индекс, значение).
Можно даже задать, с какого индекса начать:
🐍Вопросы с собесов -> ProstoPython
Что делает функция enumerate()?
Когда тебе нужно перебирать элементы списка вместе с их индексами, не используй for i in range(len(...)) — это не по-питоновски 🐍
👉 Вместо этого:
fruits = ["яблоко", "банан", "вишня"]
for index, fruit in enumerate(fruits):
print(index, fruit)
🔹 Вывод:
0 яблоко
1 банан
2 вишня
enumerate() превращает любую последовательность в пары (индекс, значение).
Можно даже задать, с какого индекса начать:
enumerate(fruits, start=1)
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🏆4
💬 Вопрос на собесе:
Что представляют собой IP-адрес и доменное имя?
👶 Junior:
— IP — это вроде как адрес сайта, а домен — его имя? Что-то типа google.com 🫣
🧑💻 Middle:
— IP-адрес — это числовой идентификатор устройства в сети.
А доменное имя (например, google.com) — это удобное текстовое имя, которое ссылается на IP через DNS.
🧙♂️ Senior:
🔹 IP-адрес — уникальный идентификатор узла в сети.
IPv4: 4 числа от 0 до 255
IPv6: новый формат для замены IPv4, поддерживает больше устройств (2001:0db8::1)
🔹 Доменное имя — это «человеческое» имя, которое DNS (Domain Name System) переводит в IP.
🔹 DNS работает как телефонная книга интернета: ты вводишь имя, а система ищет соответствующий IP-адрес.
🐍Вопросы с собесов -> ProstoPython
Что представляют собой IP-адрес и доменное имя?
👶 Junior:
— IP — это вроде как адрес сайта, а домен — его имя? Что-то типа google.com 🫣
🧑💻 Middle:
— IP-адрес — это числовой идентификатор устройства в сети.
А доменное имя (например, google.com) — это удобное текстовое имя, которое ссылается на IP через DNS.
🧙♂️ Senior:
🔹 IP-адрес — уникальный идентификатор узла в сети.
IPv4: 4 числа от 0 до 255
IPv6: новый формат для замены IPv4, поддерживает больше устройств (2001:0db8::1)
🔹 Доменное имя — это «человеческое» имя, которое DNS (Domain Name System) переводит в IP.
🔹 DNS работает как телефонная книга интернета: ты вводишь имя, а система ищет соответствующий IP-адрес.
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥4
⏱️ 1 минута о Python:
zip() — объединяем списки🧩
Иногда нужно пройтись по двум (или более) спискам одновременно. Вместо громоздких индексов — используй zip().
🔹 Он объединяет элементы из разных итерируемых объектов в кортежи.
💡 Если списки разной длины, zip() остановится на минимальной.
🐍Вопросы с собесов -> ProstoPython
zip() — объединяем списки🧩
Иногда нужно пройтись по двум (или более) спискам одновременно. Вместо громоздких индексов — используй zip().
🔹 Он объединяет элементы из разных итерируемых объектов в кортежи.
names = ["Анна", "Иван", "Мария"]
scores = [95, 87, 100]
for name, score in zip(names, scores):
print(f"{name}: {score}")
📤 Вывод:
Анна: 95
Иван: 87
Мария: 100
💡 Если списки разной длины, zip() остановится на минимальной.
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍4❤1
🔷 Git — это распределённая система контроля версий, которая позволяет отслеживать изменения в коде, возвращаться к прошлым версиям и работать над проектом в команде, не теряя данных.
👉 Проще говоря, Git помогает разработчикам синхронизировать, сохранять и объединять изменения в одном проекте.
🐍Вопросы с собесов -> ProstoPython
👉 Проще говоря, Git помогает разработчикам синхронизировать, сохранять и объединять изменения в одном проекте.
🐍Вопросы с собесов -> ProstoPython
🔥3❤1
💬 Вопрос на собесе:
В чём отличие асинхронности и многопоточности?
👶 Junior:
— Ну... оба вроде делают задачи параллельно? Или нет?.. 🫠
🧑💻 Middle:
— Многопоточность — это когда несколько потоков выполняются одновременно (или почти).
Асинхронность — это когда задачи выполняются поочерёдно, но не блокируют друг друга, используя цикл событий.
🧙♂️ Senior:
— Асинхронность и многопоточность решают одну задачу — повысить производительность, но разными способами:
🔹 Многопоточность — использует потоки ОС, может нагружать процессор, но подходит для CPU-bound задач.
🔹 Асинхронность — строится на неблокирующих операциях ввода-вывода (I/O-bound), эффективнее при работе с сетью и файлами.
🔹 Python (через GIL) не даёт потокам реально исполняться параллельно, поэтому asyncio часто выигрывает.
🐍Вопросы с собесов -> ProstoPython
В чём отличие асинхронности и многопоточности?
👶 Junior:
— Ну... оба вроде делают задачи параллельно? Или нет?.. 🫠
🧑💻 Middle:
— Многопоточность — это когда несколько потоков выполняются одновременно (или почти).
Асинхронность — это когда задачи выполняются поочерёдно, но не блокируют друг друга, используя цикл событий.
🧙♂️ Senior:
— Асинхронность и многопоточность решают одну задачу — повысить производительность, но разными способами:
🔹 Многопоточность — использует потоки ОС, может нагружать процессор, но подходит для CPU-bound задач.
🔹 Асинхронность — строится на неблокирующих операциях ввода-вывода (I/O-bound), эффективнее при работе с сетью и файлами.
🔹 Python (через GIL) не даёт потокам реально исполняться параллельно, поэтому asyncio часто выигрывает.
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥3❤1
⏱️ 1 минута о Python: *args и **kwargs
Когда видишь звёздочки в функции — не пугайся, это не магия 🪄
👉 *args — собирает все позиционные аргументы в кортеж.
👉 **kwargs — собирает все именованные аргументы в словарь.
Пример:
Результат:
💡 Полезно, когда заранее не знаешь, сколько аргументов придёт — например, в декораторах или универсальных функциях.
🐍Вопросы с собесов -> ProstoPython
Когда видишь звёздочки в функции — не пугайся, это не магия 🪄
👉 *args — собирает все позиционные аргументы в кортеж.
👉 **kwargs — собирает все именованные аргументы в словарь.
Пример:
def greet(*args, **kwargs):
print("args:", args)
print("kwargs:", kwargs)
greet("Python", "Rocks", lang="Python", mood="🔥")
Результат:
args: ('Python', 'Rocks')
kwargs: {'lang': 'Python', 'mood': '🔥'}💡 Полезно, когда заранее не знаешь, сколько аргументов придёт — например, в декораторах или универсальных функциях.
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥3❤1
💬 Вопрос на собесе:
Для чего нужны JOIN-запросы?
👶 Junior:
— Чтобы... соединять таблицы? 😅
🧑💻 Middle:
— JOIN используется, чтобы объединять данные из разных таблиц по общему полю. Например, чтобы взять пользователей и их заказы. Есть INNER JOIN, LEFT JOIN, RIGHT JOIN и т.д.
🧙♂️ Senior:
— JOIN-запросы нужны, чтобы собрать данные из связанных таблиц в одну выборку без дублирования. Это основа реляционных баз данных.
🔹 INNER JOIN — берёт только совпадения в обеих таблицах.
🔹 LEFT JOIN — возвращает все записи из левой таблицы, даже если в правой нет совпадений.
🔹 RIGHT JOIN — наоборот.
🔹 FULL JOIN — объединяет всё.
💡 JOIN помогает не хранить дублирующиеся данные и вытаскивать нужную информацию одним запросом — быстро и эффективно.
🐍Вопросы с собесов -> ProstoPython
Для чего нужны JOIN-запросы?
👶 Junior:
— Чтобы... соединять таблицы? 😅
🧑💻 Middle:
— JOIN используется, чтобы объединять данные из разных таблиц по общему полю. Например, чтобы взять пользователей и их заказы. Есть INNER JOIN, LEFT JOIN, RIGHT JOIN и т.д.
🧙♂️ Senior:
— JOIN-запросы нужны, чтобы собрать данные из связанных таблиц в одну выборку без дублирования. Это основа реляционных баз данных.
🔹 INNER JOIN — берёт только совпадения в обеих таблицах.
🔹 LEFT JOIN — возвращает все записи из левой таблицы, даже если в правой нет совпадений.
🔹 RIGHT JOIN — наоборот.
🔹 FULL JOIN — объединяет всё.
💡 JOIN помогает не хранить дублирующиеся данные и вытаскивать нужную информацию одним запросом — быстро и эффективно.
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
❤3👍3
⏱️ 1 минута о Python: any() и all()
Когда нужно быстро проверить условие для набора значений - забудь про громоздкие циклы 💪
👉 any() возвращает True, если хотя бы одно значение истинно.
👉 all() возвращает True, если все значения истинны.
Пример:
Можно использовать и с условиями:
💡 Эти функции часто помогают делать код короче и чище
🐍Вопросы с собесов -> ProstoPython
Когда нужно быстро проверить условие для набора значений - забудь про громоздкие циклы 💪
👉 any() возвращает True, если хотя бы одно значение истинно.
👉 all() возвращает True, если все значения истинны.
Пример:
values = [True, False, True]
print(any(values)) # True — есть хотя бы одно True
print(all(values)) # False — не все True
Можно использовать и с условиями:
nums = [2, 4, 6, 8]
print(all(n % 2 == 0 for n in nums)) # True — все чётные
💡 Эти функции часто помогают делать код короче и чище
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍4
🔷 Десериализация - это процесс преобразования данных из формата хранения или передачи (например, JSON, XML, pickle) обратно в объект Python.
👉 Проще говоря, это восстановление объекта из сохранённого представления.
🐍Вопросы с собесов -> ProstoPython
👉 Проще говоря, это восстановление объекта из сохранённого представления.
🐍Вопросы с собесов -> ProstoPython
🔥3
💬 Вопрос на собесе:
В чём заключается различие между dict и list?
👶 Junior:
— Ну... оба вроде хранят данные? Только у dict есть ключи, а у list — нет 😅
🧑💻 Middle:
— list — это упорядоченная коллекция элементов, к которым обращаются по индексу.
dict — это неупорядоченная структура (до Python 3.7 — теперь упорядоченная по вставке), где данные хранятся в виде пар «ключ: значение».
🧙♂️ Senior:
— Разница глубже:
🔹 list — динамический массив, доступ к элементу идёт по индексу (O(1)), поиск — линейный (O(n)).
🔹 dict — хэш-таблица, где ключи преобразуются в хэш и дают быстрый доступ к значениям (O(1) в среднем).
🔹 Ключи в dict должны быть уникальными и хэшируемыми (immutable).
🔹 list подходит для последовательных данных, dict — для структурированных и ассоциативных.
Пример:
🐍Вопросы с собесов -> ProstoPython
В чём заключается различие между dict и list?
👶 Junior:
— Ну... оба вроде хранят данные? Только у dict есть ключи, а у list — нет 😅
🧑💻 Middle:
— list — это упорядоченная коллекция элементов, к которым обращаются по индексу.
dict — это неупорядоченная структура (до Python 3.7 — теперь упорядоченная по вставке), где данные хранятся в виде пар «ключ: значение».
🧙♂️ Senior:
— Разница глубже:
🔹 list — динамический массив, доступ к элементу идёт по индексу (O(1)), поиск — линейный (O(n)).
🔹 dict — хэш-таблица, где ключи преобразуются в хэш и дают быстрый доступ к значениям (O(1) в среднем).
🔹 Ключи в dict должны быть уникальными и хэшируемыми (immutable).
🔹 list подходит для последовательных данных, dict — для структурированных и ассоциативных.
Пример:
users = ["Alice", "Bob", "Charlie"] # list
ages = {"Alice": 25, "Bob": 30, "Charlie": 22} # dict
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍3
🧠 Алгоритм дня: Сортировка вставками (Insertion Sort)
Когда ты сортируешь карты в руке — ты интуитивно используешь сортировку вставками 🃏
Идея проста:
Берём элементы по одному и вставляем их в нужное место в уже отсортированной части списка.
Пример:
Результат:
🧩 Как работает:
1️⃣ Считаем первый элемент отсортированным.
2️⃣ Берём следующий и вставляем туда, где он должен стоять.
3️⃣ Повторяем, пока не пройдём весь список.
📈 Сложность:
Худший случай — O(n²) (если всё наоборот).
Лучший — O(n) (если почти отсортировано).
💡 Проста в реализации, но медленная на больших массивах.
Зато отлична для обучения и понимания, как устроены более сложные алгоритмы сортировки.
🐍Вопросы с собесов -> ProstoPython
Когда ты сортируешь карты в руке — ты интуитивно используешь сортировку вставками 🃏
Идея проста:
Берём элементы по одному и вставляем их в нужное место в уже отсортированной части списка.
Пример:
def insertion_sort(arr):
# Проходим по всем элементам, начиная со второго
for i in range(1, len(arr)):
key = arr[i] # Текущий элемент, который нужно вставить в отсортированную часть
j = i - 1
# Сдвигаем элементы, которые больше key, на одну позицию вправо
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1
# Вставляем элемент на найденное место
arr[j + 1] = key
return arr
print(insertion_sort([5, 2, 4, 6, 1, 3]))
Результат:
[1, 2, 3, 4, 5, 6]
🧩 Как работает:
1️⃣ Считаем первый элемент отсортированным.
2️⃣ Берём следующий и вставляем туда, где он должен стоять.
3️⃣ Повторяем, пока не пройдём весь список.
📈 Сложность:
Худший случай — O(n²) (если всё наоборот).
Лучший — O(n) (если почти отсортировано).
💡 Проста в реализации, но медленная на больших массивах.
Зато отлична для обучения и понимания, как устроены более сложные алгоритмы сортировки.
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥4
⏱️ 1 минута о Python: lambda — маленькие, но полезные функции ⚡️
Когда писать полноценную функцию лень, но хочется быстро что-то посчитать — lambda спасает день!
Это то же самое, что:
Но короче и идеально подходит для одноразовых выражений.
💡 Часто lambda используется с функциями вроде map(), filter(), sorted():
Или для фильтрации:
⚙️ Главное правило: если логика становится длиннее одной строки — делай обычную функцию.
lambda — не для магии, а для лаконичности ✨
🐍Вопросы с собесов -> ProstoPython
Когда писать полноценную функцию лень, но хочется быстро что-то посчитать — lambda спасает день!
square = lambda x: x ** 2
print(square(5)) # 25
Это то же самое, что:
def square(x):
return x ** 2
Но короче и идеально подходит для одноразовых выражений.
💡 Часто lambda используется с функциями вроде map(), filter(), sorted():
nums = [5, 2, 9, 1]
print(sorted(nums, key=lambda x: -x)) # сортировка по убыванию
Или для фильтрации:
even = list(filter(lambda x: x % 2 == 0, nums))
print(even) # [2]
⚙️ Главное правило: если логика становится длиннее одной строки — делай обычную функцию.
lambda — не для магии, а для лаконичности ✨
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍4