💬 Вопрос на собесе:
Что такое SOLID?
👶 Junior:
— Это вроде какие-то правила… Я помню только про Single Responsibility 😅
🧑💻 Middle:
— SOLID — это набор из 5 принципов ООП для написания поддерживаемого и гибкого кода.
Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion.
🧙♂️ Senior:
— SOLID — это фундамент архитектуры.
🔹 S: Класс решает только одну задачу.
🔹 O: Код открыт для расширения, но закрыт для изменения.
🔹 L: Подклассы должны быть полностью взаимозаменяемы с базовым.
🔹 I: Лучше несколько маленьких интерфейсов, чем один «толстый».
🔹 D: Модули должны зависеть от абстракций, а не от деталей.
👉 Соблюдение этих принципов делает код проще для тестирования, расширения и командной работы
🐍Вопросы с собесов -> ProstoPython
Что такое SOLID?
👶 Junior:
— Это вроде какие-то правила… Я помню только про Single Responsibility 😅
🧑💻 Middle:
— SOLID — это набор из 5 принципов ООП для написания поддерживаемого и гибкого кода.
Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion.
🧙♂️ Senior:
— SOLID — это фундамент архитектуры.
🔹 S: Класс решает только одну задачу.
🔹 O: Код открыт для расширения, но закрыт для изменения.
🔹 L: Подклассы должны быть полностью взаимозаменяемы с базовым.
🔹 I: Лучше несколько маленьких интерфейсов, чем один «толстый».
🔹 D: Модули должны зависеть от абстракций, а не от деталей.
👉 Соблюдение этих принципов делает код проще для тестирования, расширения и командной работы
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥3
💬 Вопрос на собесе:
Что такое итерация?
👶 Junior:
— Ну… это когда в цикле что-то повторяется. Типа for или while 🤔
🧑💻 Middle:
— Итерация — это один проход цикла. Например, при переборе списка каждая обработка элемента — отдельная итерация.
🧙♂️ Senior:
— Итерация — это процесс последовательного доступа к элементам коллекции.
🔹 В Python за это отвечают протоколы iter() и next().
🔹 Объекты, поддерживающие эти методы, становятся итерируемыми.
🔹 Генераторы и итераторы позволяют экономить память и строить «ленивые» последовательности
🐍Вопросы с собесов -> ProstoPython
Что такое итерация?
👶 Junior:
— Ну… это когда в цикле что-то повторяется. Типа for или while 🤔
🧑💻 Middle:
— Итерация — это один проход цикла. Например, при переборе списка каждая обработка элемента — отдельная итерация.
🧙♂️ Senior:
— Итерация — это процесс последовательного доступа к элементам коллекции.
🔹 В Python за это отвечают протоколы iter() и next().
🔹 Объекты, поддерживающие эти методы, становятся итерируемыми.
🔹 Генераторы и итераторы позволяют экономить память и строить «ленивые» последовательности
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🏆3❤1
🔷 set — изменяемое множество: можно добавлять и удалять элементы.
🔷 frozenset — неизменяемое множество: его нельзя изменять после создания, зато его можно использовать как ключ в словаре или элемент другого множества.
👉 Итог:
🐍Вопросы с собесов -> ProstoPython
🔷 frozenset — неизменяемое множество: его нельзя изменять после создания, зато его можно использовать как ключ в словаре или элемент другого множества.
👉 Итог:
set — изменяемый, frozenset — неизменяемый и хешируемый🐍Вопросы с собесов -> ProstoPython
👍2🔥1
🧠 Алгоритм дня
Сегодня разберём Алгоритм Кадане: быстрый способ найти подмассив с максимальной суммой
🔹 Идея:
Проходим по массиву, накапливаем сумму. Если сумма стала меньше нуля — сбрасываем. На каждом шаге запоминаем максимум.
🔹 Сложность:
O(n) — всего один проход по массиву.
🔹 Пример кода на Python:
🐍Вопросы с собесов -> ProstoPython
Сегодня разберём Алгоритм Кадане: быстрый способ найти подмассив с максимальной суммой
🔹 Идея:
Проходим по массиву, накапливаем сумму. Если сумма стала меньше нуля — сбрасываем. На каждом шаге запоминаем максимум.
🔹 Сложность:
O(n) — всего один проход по массиву.
🔹 Пример кода на Python:
def kadane(arr):
max_sum = arr[0]
current_sum = arr[0]
for num in arr[1:]:
current_sum = max(num, current_sum + num)
max_sum = max(max_sum, current_sum)
return max_sum
nums = [-2, 1, -3, 4, -1, 2, 1, -5, 4]
print(kadane(nums)) # 6 (подмассив [4, -1, 2, 1])
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🏆3
💬 Вопрос на собесе:
Что представляет собой MongoDB и в чём её отличие от SQL-баз данных?
👶 Junior:
Ну… MongoDB - это тоже база данных, только вроде «не SQL»?
🧑💻 Middle:
MongoDB - это документо-ориентированная NoSQL база. Данные в ней хранятся в виде JSON-подобных документов.
В отличие от SQL, здесь нет таблиц и жёсткой схемы.
🧙♂️ Senior:
MongoDB - это нереляционная СУБД, ориентированная на хранение документов.
🔹 В SQL данные организованы в таблицы с фиксированной схемой, в MongoDB - коллекции документов со свободной структурой.
🔹 Это даёт гибкость: можно хранить разные по структуре данные в одной коллекции.
🔹 MongoDB хорошо подходит для быстрых прототипов, масштабирования и работы с большими объёмами данных
🐍Вопросы с собесов -> ProstoPython
Что представляет собой MongoDB и в чём её отличие от SQL-баз данных?
👶 Junior:
Ну… MongoDB - это тоже база данных, только вроде «не SQL»?
🧑💻 Middle:
MongoDB - это документо-ориентированная NoSQL база. Данные в ней хранятся в виде JSON-подобных документов.
В отличие от SQL, здесь нет таблиц и жёсткой схемы.
🧙♂️ Senior:
MongoDB - это нереляционная СУБД, ориентированная на хранение документов.
🔹 В SQL данные организованы в таблицы с фиксированной схемой, в MongoDB - коллекции документов со свободной структурой.
🔹 Это даёт гибкость: можно хранить разные по структуре данные в одной коллекции.
🔹 MongoDB хорошо подходит для быстрых прототипов, масштабирования и работы с большими объёмами данных
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🏆2🔥1
🔷 В памяти существует всегда только один объект None, это синглтон, и все переменные, которым присвоено
🐍Вопросы с собесов -> ProstoPython
None, указывают именно на него🐍Вопросы с собесов -> ProstoPython
🔥3
💬 Вопрос на собесе:
Что такое пакет в Python?
👶 Junior:
— Ну… это типа библиотека? Папка, в которой файлы лежат 🤔
🧑💻 Middle:
— Пакет — это директория с модулями (файлами .py).
Чтобы Python распознал её как пакет, нужен файл __init__.py
🧙♂️ Senior:
— Пакет — это способ структурировать код и объединять модули в логические группы.
🔹 Это обычная папка, в которой могут быть другие модули и подпакеты.
🔹 __init__.py может содержать код и управлять импортом.
🔹 Пакеты позволяют организовать масштабные проекты, избегать конфликтов имён и переиспользовать код
🐍Вопросы с собесов -> ProstoPython
Что такое пакет в Python?
👶 Junior:
— Ну… это типа библиотека? Папка, в которой файлы лежат 🤔
🧑💻 Middle:
— Пакет — это директория с модулями (файлами .py).
Чтобы Python распознал её как пакет, нужен файл __init__.py
🧙♂️ Senior:
— Пакет — это способ структурировать код и объединять модули в логические группы.
🔹 Это обычная папка, в которой могут быть другие модули и подпакеты.
🔹 __init__.py может содержать код и управлять импортом.
🔹 Пакеты позволяют организовать масштабные проекты, избегать конфликтов имён и переиспользовать код
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥4
🧠 Алгоритм дня
Сегодня разберём Сортировку слиянием (Merge Sort) 👇
🔹 Идея:
Разделяй и властвуй!
Массив делится пополам до отдельных элементов, затем они сливаются обратно в отсортированном порядке.
🔹 Простой пример кода (Python):
🐍Вопросы с собесов -> ProstoPython
Сегодня разберём Сортировку слиянием (Merge Sort) 👇
🔹 Идея:
Разделяй и властвуй!
Массив делится пополам до отдельных элементов, затем они сливаются обратно в отсортированном порядке.
🔹 Простой пример кода (Python):
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])
# слияние двух отсортированных половин
result = []
i = j = 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
result.extend(left[i:])
result.extend(right[j:])
return result
print(merge_sort([5, 2, 9, 1, 5, 6])) # [1, 2, 5, 5, 6, 9]
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥3👍1
🔷 Нормализация — это процесс организации данных в базе так, чтобы уменьшить дублирование и обеспечить целостность.
🔹 Делит таблицы на логические части
🔹 Связывает их через ключи
🔹 Убирает избыточные данные
👉 Итог: нормализация делает структуру базы более эффективной и удобной для работы
🐍Вопросы с собесов -> ProstoPython
🔹 Делит таблицы на логические части
🔹 Связывает их через ключи
🔹 Убирает избыточные данные
👉 Итог: нормализация делает структуру базы более эффективной и удобной для работы
🐍Вопросы с собесов -> ProstoPython
🔥2🏆1
Что выведет код выше? (Разбор будет через два часа)
Anonymous Poll
16%
[1] [2] [3] [4]
56%
[1] [1, 2] [3] [1, 2, 4]
13%
[1] [1, 2] [3] [1, 2, 4, 5]
16%
Error
👉 Правильный ответ: 2️⃣ [1] [1, 2] [3] [1, 2, 4]
Почему так?
В Python значения аргументов по умолчанию вычисляются один раз при определении функции, а не при каждом вызове.
Поэтому список lst=[] создаётся один раз и «живёт» между вызовами функции.
Пошагово:
1) add_to_list(1) : добавляем 1 в общий список : результат [1]
2) add_to_list(2) : тот же самый список : теперь [1, 2]
3) add_to_list(3, []) : тут передали новый список вручную : результат [3]
4) add_to_list(4) : возвращаемся к тому самому «общему» списку : теперь [1, 2, 4]
🐍Вопросы с собесов -> ProstoPython
Почему так?
В Python значения аргументов по умолчанию вычисляются один раз при определении функции, а не при каждом вызове.
Поэтому список lst=[] создаётся один раз и «живёт» между вызовами функции.
Пошагово:
1) add_to_list(1) : добавляем 1 в общий список : результат [1]
2) add_to_list(2) : тот же самый список : теперь [1, 2]
3) add_to_list(3, []) : тут передали новый список вручную : результат [3]
4) add_to_list(4) : возвращаемся к тому самому «общему» списку : теперь [1, 2, 4]
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥3
🔷 Итерация — это один шаг в цикле, то есть повторное выполнение блока кода при проходе по элементам последовательности (списка, строки, множества и т. д.).
👉 Пример: при переборе списка
🐍Вопросы с собесов -> ProstoPython
👉 Пример: при переборе списка
[1, 2, 3] будет три итерации — для 1, 2 и 3🐍Вопросы с собесов -> ProstoPython
👍3🏆1
💬 Вопрос на собесе:
Что делает git commit?
👶 Junior:
- Эээ… это как сохраняет изменения, наверное? 🤔
🧑💻 Middle:
- git commit фиксирует изменения в локальном репозитории.
Каждый коммит сохраняет снимок текущего состояния проекта с сообщением о внесённых изменениях.
🧙♂️ Senior:
- git commit создаёт точку сохранения в истории репозитория.
🔹 Фиксируются только изменения, которые были добавлены через git add.
🔹 Коммит включает метаданные: автора, дату, сообщение.
🔹 Позволяет откатываться к предыдущим состояниям, анализировать историю и работать командно, не теряя изменений
🐍Вопросы с собесов -> ProstoPython
Что делает git commit?
👶 Junior:
- Эээ… это как сохраняет изменения, наверное? 🤔
🧑💻 Middle:
- git commit фиксирует изменения в локальном репозитории.
Каждый коммит сохраняет снимок текущего состояния проекта с сообщением о внесённых изменениях.
🧙♂️ Senior:
- git commit создаёт точку сохранения в истории репозитория.
🔹 Фиксируются только изменения, которые были добавлены через git add.
🔹 Коммит включает метаданные: автора, дату, сообщение.
🔹 Позволяет откатываться к предыдущим состояниям, анализировать историю и работать командно, не теряя изменений
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍3🏆1
💬 Вопрос на собесе:
Какая разница между is и == в Python?
👶 Junior:
Ну… оба вроде сравнивают значения. Типа одно и то же 🤔
🧑💻 Middle:
== сравнивает значения объектов.
is проверяет, указывают ли переменные на один и тот же объект в памяти.
🧙♂️ Senior:
== вызывает метод eq, который определяет равенство по содержимому.
is проверяет идентичность объектов (сравнение по ссылке).
🔹 Два разных списка [1, 2] == [1, 2] вернёт True, но is даст False, потому что это разные объекты в памяти.
🔹 is корректно использовать для проверки на None: if x is None:
📌 Итог: == - для сравнения значений, is - для проверки идентичности объектов
🐍Вопросы с собесов -> ProstoPython
Какая разница между is и == в Python?
👶 Junior:
Ну… оба вроде сравнивают значения. Типа одно и то же 🤔
🧑💻 Middle:
== сравнивает значения объектов.
is проверяет, указывают ли переменные на один и тот же объект в памяти.
🧙♂️ Senior:
== вызывает метод eq, который определяет равенство по содержимому.
is проверяет идентичность объектов (сравнение по ссылке).
🔹 Два разных списка [1, 2] == [1, 2] вернёт True, но is даст False, потому что это разные объекты в памяти.
🔹 is корректно использовать для проверки на None: if x is None:
📌 Итог: == - для сравнения значений, is - для проверки идентичности объектов
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍4
В Python список (list) устроен как динамический массив:
🔹 Память: внутри хранится массив указателей на объекты (не сами значения, а ссылки на них).
🔹 Размер: список заранее выделяет больше памяти, чем нужно, чтобы новые элементы можно было добавлять без пересоздания каждый раз.
🔹 Амортизация: когда места не хватает — список перераспределяет память (увеличивает буфер, обычно в 1.125–2 раза).
🔹 Доступ по индексу: выполняется за O(1), так как это обычное обращение к элементу массива.
🔹 Вставка/удаление в конец: в среднем O(1).
🔹 Вставка/удаление в середину: O(n), потому что нужно сдвигать элементы
🐍Вопросы с собесов -> ProstoPython
🔹 Память: внутри хранится массив указателей на объекты (не сами значения, а ссылки на них).
🔹 Размер: список заранее выделяет больше памяти, чем нужно, чтобы новые элементы можно было добавлять без пересоздания каждый раз.
🔹 Амортизация: когда места не хватает — список перераспределяет память (увеличивает буфер, обычно в 1.125–2 раза).
🔹 Доступ по индексу: выполняется за O(1), так как это обычное обращение к элементу массива.
🔹 Вставка/удаление в конец: в среднем O(1).
🔹 Вставка/удаление в середину: O(n), потому что нужно сдвигать элементы
🐍Вопросы с собесов -> ProstoPython
🔥3👍1
💬 Вопрос на собесе:
Какие методы есть у итератора в Python?
👶 Junior:
— Эээ… ну, вроде, можно пройтись циклом for, и всё работает 🤔
🧑💻 Middle:
— У итератора есть два ключевых метода: iter() и next().
iter() возвращает сам итератор, а next() — следующий элемент последовательности.
🧙♂️ Senior:
— Итератор — это объект, реализующий итерационный протокол.
🔹 iter() вызывается один раз и возвращает сам объект-итератор.
🔹 next() возвращает следующий элемент, а когда элементов больше нет — вызывает StopIteration.
🔹 Благодаря этому механизму работают циклы for, генераторы и функции вроде map(), zip() и filter()
🐍Вопросы с собесов -> ProstoPython
Какие методы есть у итератора в Python?
👶 Junior:
— Эээ… ну, вроде, можно пройтись циклом for, и всё работает 🤔
🧑💻 Middle:
— У итератора есть два ключевых метода: iter() и next().
iter() возвращает сам итератор, а next() — следующий элемент последовательности.
🧙♂️ Senior:
— Итератор — это объект, реализующий итерационный протокол.
🔹 iter() вызывается один раз и возвращает сам объект-итератор.
🔹 next() возвращает следующий элемент, а когда элементов больше нет — вызывает StopIteration.
🔹 Благодаря этому механизму работают циклы for, генераторы и функции вроде map(), zip() и filter()
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🏆4
🧠 Алгоритм дня: Пузырьковая сортировка (Bubble Sort)
Пузырьковая сортировка — один из самых простых алгоритмов сортировки.
Он многократно проходит по списку, сравнивает соседние элементы и обменивает их местами, если они идут в неправильном порядке.
Так самые большие значения "всплывают" наверх — как пузырьки 🫧
🔹 Сложность:
🔹 Плюсы: простая для понимания и реализации
🔹 Минусы: медленная на больших массивах
📘 Пример кода:
💡 Почему это важно:
Пузырьковая сортировка — отличный старт для понимания принципов сравнения и обмена данных.
Разобрав её, гораздо проще перейти к более эффективным алгоритмам — вроде быстрой или сортировки слиянием.
🐍Вопросы с собесов -> ProstoPython
Пузырьковая сортировка — один из самых простых алгоритмов сортировки.
Он многократно проходит по списку, сравнивает соседние элементы и обменивает их местами, если они идут в неправильном порядке.
Так самые большие значения "всплывают" наверх — как пузырьки 🫧
🔹 Сложность:
O(n²)🔹 Плюсы: простая для понимания и реализации
🔹 Минусы: медленная на больших массивах
📘 Пример кода:
def bubble_sort(arr):
n = len(arr)
for i in range(n):
swapped = False # проверяем, были ли перестановки
for j in range(0, n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
swapped = True
if not swapped:
break # если за проход не было обменов — массив уже отсортирован
return arr
nums = [5, 3, 8, 4, 2]
print(bubble_sort(nums)) # [2, 3, 4, 5, 8]
💡 Почему это важно:
Пузырьковая сортировка — отличный старт для понимания принципов сравнения и обмена данных.
Разобрав её, гораздо проще перейти к более эффективным алгоритмам — вроде быстрой или сортировки слиянием.
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🏆3
💬 Вопрос на собесе:
Что такое EXPLAIN в SQL?
👶 Junior:
— Это вроде команда, которая показывает, как выполняется запрос? 🤔
🧑💻 Middle:
— Да, EXPLAIN показывает план выполнения SQL-запроса: какие таблицы используются, какие индексы применяются и в каком порядке выполняются операции.
🧙♂️ Senior:
— EXPLAIN — инструмент для анализа производительности запросов.
Он помогает понять, как оптимизатор базы данных планирует выполнить запрос.
🔹 Показывает порядок соединений таблиц, использование индексов и количество читаемых строк.
🔹 В MySQL, PostgreSQL и других СУБД синтаксис и уровень детализации могут отличаться.
🔹 Часто используется вместе с ANALYZE, чтобы увидеть реальные данные выполнения.
🐍Вопросы с собесов -> ProstoPython
Что такое EXPLAIN в SQL?
👶 Junior:
— Это вроде команда, которая показывает, как выполняется запрос? 🤔
🧑💻 Middle:
— Да, EXPLAIN показывает план выполнения SQL-запроса: какие таблицы используются, какие индексы применяются и в каком порядке выполняются операции.
🧙♂️ Senior:
— EXPLAIN — инструмент для анализа производительности запросов.
Он помогает понять, как оптимизатор базы данных планирует выполнить запрос.
🔹 Показывает порядок соединений таблиц, использование индексов и количество читаемых строк.
🔹 В MySQL, PostgreSQL и других СУБД синтаксис и уровень детализации могут отличаться.
🔹 Часто используется вместе с ANALYZE, чтобы увидеть реальные данные выполнения.
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍4
Преимущества использования функций в Python:
🧩 Повторное использование кода — один раз написал, вызываешь сколько угодно.
📦 Структурирование программы — код делится на логические блоки, его легче понимать и сопровождать.
🔁 Избежание дублирования — вместо копирования кода в разных местах, вызываешь функцию.
🧠 Упрощение отладки и тестирования — проще проверять небольшие куски кода, чем всю программу целиком.
🚀 Масштабируемость — функции позволяют строить сложные системы из простых, понятных модулей.
🐍Вопросы с собесов -> ProstoPython
🧩 Повторное использование кода — один раз написал, вызываешь сколько угодно.
📦 Структурирование программы — код делится на логические блоки, его легче понимать и сопровождать.
🔁 Избежание дублирования — вместо копирования кода в разных местах, вызываешь функцию.
🧠 Упрощение отладки и тестирования — проще проверять небольшие куски кода, чем всю программу целиком.
🚀 Масштабируемость — функции позволяют строить сложные системы из простых, понятных модулей.
🐍Вопросы с собесов -> ProstoPython
🔥2❤1🏆1
🧠 Алгоритм дня: Сортировка слиянием (Merge Sort)
Один из самых надёжных и элегантных алгоритмов сортировки.
Работает по принципу разделяй и властвуй — разбивает массив, сортирует части и объединяет. ⚙️
🔹 Идея:
1️⃣ Делим массив пополам, пока не останутся отдельные элементы.
2️⃣ Сливаем пары отсортированных частей в один отсортированный список.
3️⃣ Повторяем, пока не получим полностью отсортированный массив.
🔹 Сложность:
В среднем: O(n log n)
В худшем: O(n log n)
📘 Код на Python:
🐍Вопросы с собесов -> ProstoPython
Один из самых надёжных и элегантных алгоритмов сортировки.
Работает по принципу разделяй и властвуй — разбивает массив, сортирует части и объединяет. ⚙️
🔹 Идея:
1️⃣ Делим массив пополам, пока не останутся отдельные элементы.
2️⃣ Сливаем пары отсортированных частей в один отсортированный список.
3️⃣ Повторяем, пока не получим полностью отсортированный массив.
🔹 Сложность:
В среднем: O(n log n)
В худшем: O(n log n)
📘 Код на Python:
def merge_sort(arr):
if len(arr) > 1:
mid = len(arr) // 2
left = arr[:mid]
right = arr[mid:]
merge_sort(left)
merge_sort(right)
i = j = k = 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
arr[k] = left[i]
i += 1
else:
arr[k] = right[j]
j += 1
k += 1
while i < len(left):
arr[k] = left[i]
i += 1
k += 1
while j < len(right):
arr[k] = right[j]
j += 1
k += 1
arr = [38, 27, 43, 3, 9, 82, 10]
merge_sort(arr)
print(arr)
# Вывод: [3, 9, 10, 27, 38, 43, 82]
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥3