Python вопросы с собеседований
25.6K subscribers
586 photos
37 videos
17 files
468 links
Вопросы с собеседований по Python

@workakkk - админ

@machinelearning_interview - вопросы с собесдований по Ml

@pro_python_code - Python

@data_analysis_ml - анализ данных на Python

@itchannels_telegram - 🔥 главное в ит

РКН: clck.ru/3FmrFd
Download Telegram
🧠 Создайте своего ChatGPT с nanochat

nanochat — это минималистичный фреймворк для создания LLM, аналогичного ChatGPT, с возможностью запуска на одном узле. Он включает все этапы от токенизации до веб-сервиса с простым интерфейсом, позволяя взаимодействовать с вашим собственным языковым моделью.

🚀Основные моменты:
- Полный стек для создания LLM в одном коде.
- Легкий в использовании и настройке.
- Поддержка различных моделей с разными затратами.
- Возможность оценки и анализа производительности.

📌 GitHub: https://github.com/karpathy/nanochat

#python
6👎2👍1🔥1
🧩 sync-with-uv

Небольшой, но полезный пакет, который автоматизирует синхронизацию версий между uv.lock и .pre-commit-config.yaml.

Зачем это нужно:
- Часто версии инструментов (black, ruff, mypy и др.) расходятся: одно указано в lock-файле, другое — в pre-commit.
- В итоге могут воспроизводиться разные окружения и непредсказуемые ошибки.

Что делает sync-with-uv:
- Автоматически подтягивает версии из uv.lock в .pre-commit-config.yaml.
- Интегрируется как pre-commit hook.
- Поддерживает частичную синхронизацию — не затрагивает инструменты, для которых версии не заданы.

Итог: один источник правды для зависимостей, меньше ручной рутины и более стабильные пайплайны.

🔗 Репозиторий: https://github.com/tsvikas/sync-with-uv
👍52
🔥Свежий курс со Stepik: Linux: полный апгрейд твоих скиллов

Хочешь реально понимать, что происходит под капотом твоей системы, а не просто кликать по GUI?

Без глубокого знания базы ты не инженер - ты просто пользователь.

🔹 В курсе ты:

- Освоишь bash, grep, sed, awk - инструменты, которыми живут админы.
- Разберёшь права, процессы, сеть, файловую систему и научишься чинить всё, что падает.
- Настроишь SSH, firewall, systemd, crontab, демоны и автозапуск.
- Научишься анализировать логи, следить за нагрузкой, и не паниковать при 100% CPU.

💡 Формат: пошаговое объяснение базы и разбор важных практик по работе с Linux.

🎯 После курса ты: будешь чувствовать Linux как родную среду и забудешь, что такое “permission denied”.

🚀 Сейчас действуют скидка целых - 30%, не упусти реальный шанс прокачаться.

👉 Забирай место на курсе со скидкой
3🔥2👍1👎1
🐍 Хитрая задача с собеседования по Python

> Что выведет этот код и почему?


def extend_list(val, lst=[]):
lst.append(val)
return lst

list1 = extend_list(10)
list2 = extend_list(123, [])
list3 = extend_list('a')

print(list1, list2, list3)


Вопрос: Почему list1 и list3 одинаковы?

🔍 Разбор:

Аргументы по умолчанию в Python вычисляются один раз — в момент определения функции, а не при каждом вызове.

Поэтому lst=[] создаётся один раз и сохраняется между вызовами, если вы не передали свой список явно.

🧠 Что произойдет:

- extend_list(10) → использует общий список [], теперь он [10]

- extend_list(123, []) → создаёт новый список [123]

- extend_list('a') → снова использует общий список → [10, 'a']

👉 Результат:

[10, 'a'] [123] [10, 'a']

Как исправить:

Если вы хотите, чтобы по умолчанию создавался новый список при каждом вызове, делайте так:


def extend_list(val, lst=None):
if lst is None:
lst = []
lst.append(val)
return lst


Это классическая ловушка Python-интервью - mutable default arguments.

Проверяет, понимаешь ли ты, как работают значения по умолчанию и область памяти.
🔥131
📚 Знакомьтесь, хендбуки от Яндекс Образования


Бесплатные интерактивные учебники для студентов и начинающих специалистов по Python, C++ и машинному обучению. Теория, которая пригодится в решении реальных задач.

Погружайтесь в дисциплину с нуля или выбирайте отдельные темы, выполняйте задания и следите за прогрессом. Хенбуки помогут закрыть пробелы в знаниях, подготовиться к экзаменам или собеседованиям.

👉Учиться по хендбукам
👍5
🌟 Рисуем шахматную доску с помощью Matplot!

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Python trick: группировка с помощью itertools.groupby

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



from itertools import groupby
from operator import itemgetter

data = [
{"category": "A", "value": 10},
{"category": "B", "value": 20},
{"category": "A", "value": 30},
{"category": "B", "value": 40},
]

сортировка обязательна перед groupby
data.sort(key=itemgetter("category"))

grouped = {
key: list(group) for key, group in groupby(data, key=itemgetter("category"))
}

print(grouped)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43
This media is not supported in your browser
VIEW IN TELEGRAM
🔥Продвинутый совет по ускорению Python-кода

Один из скрытых тормозов Python — частые вызовы маленьких функций внутри циклов. Каждый вызов вносит оверхед интерпретатора. Если функция простая, её можно «инлайнить» (встроить прямо в цикл), или использовать NumPy vectorization и Numba JIT, чтобы убрать лишние вызовы.

Например, вместо того чтобы вызывать функцию миллионы раз, можно скомпилировать её через @njit из Numba — и Python-код превратится в машинный, работая в десятки раз быстрее. Это особенно эффективно для численных расчётов, работы с массивами и больших циклов.

Хочешь больше таких фишек? Подписывайся на нас и каждый день получай свежие и нестандартные советы, которые реально прокачают твои навыки разработчика!


import numpy as np
from numba import njit

# Обычная Python-функция — будет работать медленно на больших данных
def transform(x):
return x * x + x % 7

# JIT-компиляция убирает интерпретационный оверхед
@njit
def fast_transform(arr):
res = np.empty_like(arr)
for i in range(arr.size):
res[i] = arr[i] * arr[i] + arr[i] % 7
return res

data = np.arange(10_000_000, dtype=np.int64)

# Медленный вариант: Python-функция внутри list comprehension
res1 = [transform(x) for x in data]

# Быстрый вариант: Numba скомпилировала цикл в машинный код
res2 = fast_transform(data)

print(res1[:5], res2[:5])
🔥43
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Проверка сетевых сервисов в Python через socket

В Python можно быстро проверить, доступен ли сетевой сервис и как быстро он отвечает, не прибегая к сложным утилитам.
Это помогает опытным разработчикам, когда нужно оперативно убедиться, что API или база данных действительно доступны и не "подвисают".

Через socket можно реализовать мини-проверку состояния сети и времени отклика.


import socket
import time

def check_service(host: str, port: int, timeout: float = 2.0):
try:
start = time.perf_counter()
with socket.create_connection((host, port), timeout=timeout):
elapsed = time.perf_counter() - start
print(f"[OK] {host}:{port} доступен, ответ за {elapsed:.3f} сек")
except Exception as e:
print(f"[FAIL] {host}:{port} недоступен — {e}")

пример: проверка доступности Google DNS и локального сервиса

check_service("8.8.8.8", 53)
check_service("localhost", 5432)
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍3
🤖 PharosTestnet Bot: Автоматизация для криптоактивов

PharosTestnet-bot — это Python-бот для автоматизации различных операций с криптовалютами на тестовой сети. Он поддерживает множество функций, включая автоматический вход, управление ликвидностью и работу с прокси. Идеален для трейдеров, желающих оптимизировать свои действия.

🚀Основные моменты:
- Автоматический ежедневный вход
- Поддержка всех типов прокси
- Многопоточность для повышения производительности
- Автообмен и управление ликвидностью
- Получение статистики по аккаунтам

📌 GitHub: https://github.com/haspread/PharosTestnet-bot

#python
4👍1
🎨 Создание персонажей для визуальных новелл

VNCCS — мощный инструмент для создания уникальных спрайтов персонажей в визуальных новеллах. Он упрощает процесс генерации, позволяя создавать последовательные образы с помощью нейросетей всего за несколько шагов.

🚀Основные моменты:
- Интуитивный процесс создания персонажа в 5 этапов.
- Генерация одежды и эмоций для персонажей.
- Поддержка LoRA для обучения на пользовательских данных.
- Упрощение работы с нейросетями для художников.
- Экспорт готовых спрайтов для использования в проектах.

📌 GitHub: https://github.com/AHEKOT/ComfyUI_VNCCS

#python
3👍1🔥1
⁉️Машинное обучение кажется чем-то сложным и недосягаемым? Всё проще, чем вы думаете!

Первый шаг — разобраться, как устроен ML-процесс и научиться работать в Jupyter Notebook — инструменте, с которого начинают все специалисты в Data Science.

На открытом уроке вы шаг за шагом поймёте, как строится путь от данных до модели. Научитесь запускать эксперименты в Jupyter Notebook и Google Colab, работать с виртуальными окружениями и не бояться “сломать” систему. Всё — в формате простых и наглядных примеров.

После урока вы сможете уверенно начать свой первый ML-проект и поймёте, какие инструменты нужны, чтобы перейти от теории к практике.

➡️ 13 ноября в 20:00 МСК. Открытый вебинар проходит в преддверии старта курса «Machine Learning. Basic». Регистрируйтесь и сделайте первый шаг в машинное обучение без страха и путаницы:т  https://otus.pw/cARZ/?erid=2W5zFGrhViQ

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
2
⚡️ Хитрая задача на Python: кратчайший подмассив с суммой ≥ K (O(n))

Задача. Дан массив A (могут быть отрицательные) и K. Найти минимальную длину подмассива с суммой ≥ K. Если нет — вернуть -1.

Подвох. С отрицательными числами не работает двухуказательную. Решение — префиксные суммы + монотонная дека.

Идея.
Пусть P[i] — префиксная сумма до i. Нам нужно минимизировать i - j при условии P[i] - P[j] ≥ K.
Храним индексы j в деке так, что значения P[j] строго возрастают:
- Пока текущий P[i]P[deque[0]] ≥ K — обновляем ответ и выкидываем голову (нашли короткий кандидат).
- Пока P[i] ≤ P[deque[-1]] — выкидываем хвост (бессмысленные, более «жирные» префиксы).
- Затем добавляем i.

Сложность: каждый индекс заходит/вылетает из деки по разу → O(n).

Короткая реализация

from collections import deque
from math import inf
from typing import List

def shortest_subarray_at_least_k(A: List[int], K: int) -> int:
P = [0]
for x in A: P.append(P[-1] + x)
dq, ans = deque(), inf # dq хранит индексы префиксов, их суммы возрастают
for i, s in enumerate(P):
while dq and s - P[dq[0]] >= K:
ans = min(ans, i - dq.popleft())
while dq and P[dq[-1]] >= s:
dq.pop()
dq.append(i)
return -1 if ans is inf else ans

# Примеры
if __name__ == "__main__":
print(shortest_subarray_at_least_k([2, -1, 2], 3)) # 3 (весь массив)
print(shortest_subarray_at_least_k([1, 2, 3, 4], 6)) # 2 (3+3 нет, но 2+4 или 3+4 длина 2)
print(shortest_subarray_at_least_k([84, -37, 32, 40, 95], 167)) # 3


Почему это работает?
Если у нас есть два индекса j1 < j2 и P[j1] ≥ P[j2], то j1 никогда не даст более короткого валидного подмассива, чем j2, — его можно выбросить (инвариант монотонной деки).
3
Не пропусти МТС True Tech Champ — масштабный фестиваль 21 ноября для тех, кто живет технологиями 🔥

Тебя ждут:

▫️ Конференция с международными спикерами. Эксперты расскажут о трендах в ИИ и инновациях в индустрии.
▫️ ИТ-качалка. Наращивай экспертизу на воркшопах.
▫️ Шоу-финал ИТ-чемпионата. Более 250 талантов со всей России сразятся в лайв-кодинге и программировании роботов на скоростное прохождение лабиринтов со спецэффектами. Выбирай и болей за фаворитов.
▫️ Айтивности. Тебя ждут бои роботов, кодерские челленджи, пайка плат и не только. Заработай True Coins и обменяй их на стильный мерч.
▫️ HR-Hub. Команда МТС расскажет о возможностях для развития в компании и поможет перезагрузить карьерный трек.
▫️ Афтепати со звездными хэдлайнерами. Зажги под популярные хиты.

Когда: 21 ноября, МТС Live Холл в Москве и онлайн.

Регистрируйся на сайте. Участие бесплатно, количество мест ограничено.
🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Возможности Python реально впечатляют 😱
Please open Telegram to view this post
VIEW IN TELEGRAM
😁19🥱6🕊1🥴1