Python вопросы с собеседований
25.5K subscribers
563 photos
30 videos
17 files
445 links
Вопросы с собеседований по Python

@workakkk - админ

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

@pro_python_code - Python

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

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

РКН: clck.ru/3FmrFd
Download Telegram
🎯 Разбор задания с подвохом (Python, собес)

Задание
> Сформируйте список функций callbacks, где каждая функция при вызове печатает свой индекс.
> Затем вызовите их по очереди (или из потоков/таймеров) — ожидаемый вывод: 0 1 2.

Наивное решение (почти все так пишут)

callbacks = [lambda: print(i) for i in range(3)]

for f in callbacks:
f()


Что выведет?
2 2 2 — и это не баг интерпретатора.

В чём подвох

- Замыкание поздно связывает имя i: лямбды не «копируют» значение, а смотрят на переменную i, когда вы их вызываете.
- К моменту вызова цикл уже закончился, i == 2, значит все три лямбды печатают 2.

Правильные варианты

Привязать значение через параметр по умолчанию (часто лучший баланс читаемости)


callbacks = [lambda i=i: print(i) for i in range(3)]
for f in callbacks:
f() # 0 1 2

Заводим фабрику функций (прямо подчёркивает намерение)


def make_printer(i):
def _f():
print(i)
return _f

callbacks = [make_printer(i) for i in range(3)]
for f in callbacks:
f() # 0 1 2

functools.partial — когда нужно просто «прикрутить аргументы»


from functools import partial

callbacks = [partial(print, i) for i in range(3)]
for f in callbacks:
f() # 0 1 2

А если таймеры/потоки?


import threading

for i in range(3):
# ПЛОХО: замкнёт одно и то же i
# threading.Timer(1, lambda: print(i)).start()

# ХОРОШО: привяжем значение сразу
threading.Timer(1, lambda i=i: print(i)).start()


Мини-чеклист для собеса

- Лямбды/внутренние функции в цикле → проверь, не упираешься ли в late binding.

- Если нужна «заморозка» значения, используй параметр по умолчанию, фабрику или partial.

Не путай с другой классикой: изменяемые значения по умолчанию (например, def f(x, acc=[])), это другая ловушка.

Вывод

В Python замыкания захватывают имена, а не значения.

Привязывай нужное значение в момент создания функции — и подвох исчезнет.
👍9🔥54
🚀 Фишка на Python: Скачивание нескольких файлов параллельно с помощью ThreadPoolExecutor

Этот скрипт использует urllib.request + concurrent.futures, чтобы загружать файлы одновременно и значительно ускорить процесс.



import os
import urllib.request

from concurrent.futures import ThreadPoolExecutor, as_completed

def downloader(url):
"""Скачивает указанный URL и сохраняет его на диск"""
req = urllib.request.urlopen(url)
filename = os.path.basename(url)
ext = os.path.splitext(url)[1]
if not ext:
raise RuntimeError('URL не содержит расширения')

with open(filename, 'wb') as file_handle:
while True:
chunk = req.read(1024)
if not chunk:
break
file_handle.write(chunk)

return f'Загрузка завершена: {filename}'

def main(urls):
"""Создаёт пул потоков и скачивает указанные файлы"""
with ThreadPoolExecutor(max_workers=5) as executor:
futures = [executor.submit(downloader, url) for url in urls]
for future in as_completed(futures):
print(future.result())

if __name__ == '__main__':
urls = [
"https://www.irs.gov/pub/irs-pdf/f1040.pdf",
"https://www.irs.gov/pub/irs-pdf/f1040a.pdf",
"https://www.irs.gov/pub/irs-pdf/f1040ez.pdf",
"https://www.irs.gov/pub/irs-pdf/f1040es.pdf",
"https://www.irs.gov/pub/irs-pdf/f1040sb.pdf"
]
main(urls)
👍51🔥1🐳1
🚀 PySentry — это сверхбыстрый сканер уязвимостей для Python-проектов, написанный на Rust, который справляется с аудитом зависимостей быстро и надёжно.

Основное:
- Автоматически анализирует файлы зависимостей: uv.lock, poetry.lock, Pipfile.lock, pyproject.toml, Pipfile, requirements.txt и др.
- Сверяет зависимости с базами уязвимостей: PyPA Advisory Database, PyPI JSON API, OSV.dev
- Поддерживает вывод в формате: человекочитаемом, JSON, SARIF или Markdown — отлично подходит для CI/CD и IDE-интеграций (например, GitHub Security)
- Написан на Rust с асинхронной обработкой, многоуровневым кэшированием и оптимизированной резолюцией — очень быстро и эффективно

uvx pysentry-rs /path/to/project

🟢 Github
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥1
Forwarded from Machinelearning
✔️ Alibaba инвестировала $140 млн в ИИ-роботов

Alibaba Group и Alibaba Cloud возглавили консорциум по финансированию шэньчжэньского стартапа X Square Robot (осн. 2023). Участвовали HSG, Meituan и Legend Star.
Это часть стратегии Alibaba — компания планирует вложить $53 млрд в ИИ-инфраструктуру. Цель сделки — новое поколение «умной робототехники», где ИИ отвечает за автономность и принятие решений. Инвестиция также отражает курс Китая на ускоренное развитие сектора ИИ и робототехники.
mktnews.com

✔️ Unitree Robotics готовится к IPO ($7 млрд)

Китайский производитель гуманоидных роботов Unitree планирует выйти на шанхайскую биржу STAR Market в IV квартале. Цель — оценка $7 млрд (почти в 6 раз выше июльского раунда).
Компания — лидер в Китае по производству роботов-гуманоидов, её продукция используется в университетах и на публичных мероприятиях. Unitree уже прибыльна: выручка >1 млрд юаней ($140 млн). За спиной — Alibaba, Tencent и Geely. Успешное IPO станет ключевым индикатором интереса инвесторов к физическим воплощениям ИИ.
reuters.com

✔️ Google снизила цены на Veo 3 и добавила 1080p

Стоимость генерации видео в Veo 3 упала: стандартная версия — с $0.75 до $0.40 за секунду (-47%), Veo 3 Fast — до $0.15 (-62.5%). Теперь поддерживаются вертикальные форматы (9:16) и качество 1080p. Обе модели стабильны и доступны через Gemini API.
Это сигнал к масштабированию и ценовой конкуренции на рынке видео-ИИ. Veo 3 уже применяется в проектах Invisible Studio, Saga, Mosaic для ускорения контент-продакшена.
X.com

✔️ Claude получил доступ к данным смартфона

Anthropic расширила возможности ассистента Claude на мобильных устройствах. При разрешении пользователя ИИ теперь может использовать геолокацию, календарь и другие данные для планирования мероприятий и рекомендаций.
Это шаг к созданию по-настоящему персональных ИИ-агентов, работающих с контекстом пользователя. Такой подход усиливает конкуренцию среди мобильных ассистентов и закрепляет тренд интеграции ИИ в повседневные процессы.
Скачать

✔️ Anthropic поддержала калифорнийский законопроект SB 53

Компания официально выступила в поддержку инициативы сенатора Скотта Винера, регулирующей передовые ИИ-системы. Ключевые положения:
• публикация принципов безопасности и прозрачности
• уведомление о критических инцидентах в течение 15 дней
• защита осведомителей и санкции за нарушения
• порог для регулирования — >10²⁶ FLOPs

Anthropic отмечает, что закон закрепляет уже применяемые практики и создаёт равные условия для конкуренции. Это первый случай открытой поддержки крупной ИИ-лабораторией регуляторных инициатив.
anthropic.com

✔️ Google обновила NotebookLM

- Флэшкарты и квизы: формат «вопрос–ответ» + тесты с настройкой сложности.
-Reports: авто-рекомендации форматов (блог, white paper, стади-гайд и др.), кастомизация промптов.
- ИИ-подкасты: новые режимы — Deep Dive, Brief, Critique, Debate; поддержка всех языков.
Примеры, видео, квиза и карточек прикрепили к посту.
Notebooklm

@ai_machinelearning_big_data

#news #ai #ml
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🐍 Полезные фишки парсинга в Python

1️⃣ Парсинг JSON без лишних усилий

import json

data = '{"name": "Alice", "age": 25}'
parsed = json.loads(data)
print(parsed["name"]) # Alice


2️⃣ HTML/XML-парсинг с BeautifulSoup

from bs4 import BeautifulSoup

html = "<h1>Hello <b>Python</b></h1>"
soup = BeautifulSoup(html, "html.parser")
print(soup.h1.text) # Hello Python


3️⃣ Парсинг аргументов командной строки с argparse

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--name")
args = parser.parse_args()
print(f"Hello, {args.name}")


4️⃣ Быстрый CSV-парсинг

import csv

with open("data.csv") as f:
reader = csv.DictReader(f)
for row in reader:
print(row["username"], row["score"])


5️⃣ Регулярки для гибкого текста

import re

text = "Email: [email protected]"
match = re.search(r"\w+@\w+\.\w+", text)
print(match.group()) # [email protected]


🔥 Эти трюки помогают парсить JSON, HTML, CSV, аргументы CLI и даже “грязный” текст.
Подойдут как для скриптов, так и для продакшн-кода.

👉 Сохрани, чтобы не забыть!
5🔥2
🔴 Реальный собес на Python от ТехЛида с опытом работы в Авито и Яндексе в прямом эфире

11 сентября (уже в четверг!) в 19:00 по мск приходи на прямой эфир с реальным собеседованием на Middle разработчика.

Почему точно нужно прийти:
📂 Савва Демиденко, ТехЛид с опытом в Яндексе и Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Савва будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Савве

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

🔍Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🔥 Полезный Python-трюк для работы с сетями: `ipaddress` в стандартной библиотеке

Когда нужно быстро проверить IP-адреса, маски подсетей или принадлежность хоста сети — не обязательно тянуть внешние пакеты. В Python уже есть мощный модуль ipaddress.


import ipaddress

# Создаём сеть
net = ipaddress.ip_network("192.168.1.0/24")

# Проверяем, входит ли IP в сеть
print(ipaddress.ip_address("192.168.1.42") in net) # True
print(ipaddress.ip_address("10.0.0.5") in net) # False

# Перебираем все адреса подсети
for ip in net.hosts():
print(ip)
break # выведет первый адрес

# Работаем с IPv6 так же просто
ipv6 = ipaddress.ip_network("2001:db8::/32")
print(ipaddress.ip_address("2001:db8::1") in ipv6) # True


📌 Чем полезно

Проверка принадлежности адреса подсети

Удобный парсинг IPv4 и IPv6

Генерация диапазонов IP

Всё встроено в Python — никаких сторонних зависимостей

🔥 Отлично подходит для написания сетевых тулзов, firewall-скриптов, DevOps-автоматизации и тестов.

#Python #Networking #Tips #DevOps
👍63