es
Feedback
Python вопросы с собеседований

Python вопросы с собеседований

Ir al canal en Telegram

Вопросы с собеседований по Python @workakkk - админ @machinelearning_interview - вопросы с собесдований по Ml @pro_python_code - Python @data_analysis_ml - анализ данных на Python @itchannels_telegram - 🔥 главное в ит РКН: clck.ru/3FmrFd

Mostrar más

📈 Análisis del canal de Telegram Python вопросы с собеседований

El canal Python вопросы с собеседований (@python_job_interview) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 24 857 suscriptores, ocupando la posición 5 258 en la categoría Tecnologías y Aplicaciones y el puesto 26 472 en la región Rusia.

📊 Métricas de audiencia y dinámica

Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 24 857 suscriptores.

Según los últimos datos del 25 agosto, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de -44, y en las últimas 24 horas de 0, conservando un alto alcance.

  • Estado de verificación: No verificado
  • Tasa de interacción (ER): El promedio de interacción de la audiencia es 6.01%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 2.76% de reacciones respecto al total de suscriptores.
  • Alcance de las publicaciones: Cada publicación recibe en promedio 1 492 visualizaciones. En el primer día suele acumular 684 visualizaciones.
  • Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 6.
  • Intereses temáticos: El contenido se centra en temas clave como github, api, собеседование, git, docker.

📝 Descripción y política de contenido

El autor describe el recurso como un espacio para expresar opiniones subjetivas:
Вопросы с собеседований по Python @workakkk - админ @machinelearning_interview - вопросы с собесдований по Ml @pro_python_code - Python @data_analysis_ml - анализ данных на Python @itchannels_telegram - 🔥 главное в ит РКН: clck.ru/3FmrFd

Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 01 septiembre, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.

24 857
Suscriptores
Sin datos24 horas
+637 días
-4430 días
Archivo de publicaciones
Чувствителен ли Python к регистру? Ответ Язык программирования считается чувствительным к регистру, если он различает такие идентификаторы, как «myname» и «Myname». Проще говоря, он заботится, являются ли символы строчными или прописными. Давайте посмотрим на пример: >>> myname="John" >>> Myname Traceback (most recent call last): File "", line 1, in Myname NameError: name 'Myname' is not defined Возникновение ошибки NameError означает, что Python чувствителен к регистру. @python_job_interview

Расскажите о сборщике мусора в Python Как правило, вам не нужно беспокоиться о сборщике мусора и работе с памятью когда вы пишете код на Python. Как только объекты больше не нужны, Python автоматически освобождает память из под них. Несмотря на это, понимание как работает GC поможет писать более качественный код. Менеджер памяти В отличие от других популярных языков, Python не освобождает всю память обратно операционной системе как только он удаляет какой либо объект. Вместо этого, он использует дополнительный менеджер памяти, предназначенный для маленьких объектов (размер которых меньше чем 512 байт). Для работы с такими объектами он выделяет большие блоки памяти, в которых в дальнейшем будет хранится множество маленьких объектов. Как только один из маленьких объект удаляется — память из под него не переходит операционной системе, Python оставляет её для новых объектов с таким же размером. Если в одном из выделенных блоков памяти не осталось объектов, то Python может высвободить его операционной системе. Как правило, высвобождение блоков случается когда скрипт создает множество временных объектов. Таким образом, если долгоживущий Python процесс с течением времени начинает потреблять больше памяти, то это совсем не означает, что в вашем коде есть проблема с утечкой памяти. Если вы хотите узнать больше о менеджере памяти в Python, вы можете прочитать об этом в другой моей статье (англ.). Алгоритмы сборки мусора Стандартный интерпретатор питона (CPython) использует сразу два алгоритма, подсчет ссылок и generational garbage collector (далее GC), более известный как стандартный модуль gc из Python. Алгоритм подсчета ссылок очень простой и эффективный, но у него есть один большой недостаток. Он не умеет определять циклические ссылки. Именно из-за этого, в питоне существует дополнительный сборщик, именуемый поколенческий GC, который следит за объектами с потенциальными циклическими ссылками. В Python, алгоритм подсчета ссылок является фундаментальным и не может отключен, тогда как GC опционален и может быть отключен. Алгоритм подсчета ссылок Алгоритм подсчета ссылок это одна из самых простых техник для сборки мусора. Объекты удаляются как только на них больше нет ссылок. В Python, переменные не хранят значения, а выступают в роли ссылок на объекты. То есть когда вы присваивайте значение новой переменной, то сначала создается объект с этим значением, а уже потом переменная начинает ссылаться на него. На один объект может ссылаться множество переменных. Каждый объект в Python содержит дополнительное поле (счетчик ссылок), в котором хранится количество ссылок на него. Как только кто-то ссылается на объект, это поле увеличивается на единицу. Если по какой-то причине ссылка пропадает, то это поле уменьшается на один. Примеры, когда количество ссылок увеличивается: оператор присваивания передача аргументов вставка нового объекта в лист (увеличивается количество ссылок для объекта) конструция вида foo = bar (foo начинается ссылаться на тот же объект, что и bar) Как только счетчик ссылок для определенного объекта достигает нуля интерпретатор запускает процесс уничтожения объекта. Если удаленный объект содержал ссылки на другие объекты, то эти ссылки также удаляются. Таким образом, удаление одного объекта может повлечь за собой удаление других. Например, если удаляется список, то счетчик ссылок во всех его элементах уменьшается на один. Если все объекты внутри списка больше нигде не используются, то они также будут удалены. Переменные, которые объявлены вне функций, классов и блоков называются глобальными. Как правило, жизненный цикл таких переменных равен жизни Python процесса. Таким образом, количество ссылок на объекты на которые ссылаются глобальные переменные никогда не падает до нуля. Переменные, которые объявлены внутри блока (функции, класса) имеют локальную видимость (т.е. они видны только внутри блока). Как только интерпретатор питона выходит из блока он уничтожает все ссылки созданные локальными переменными внутри него. Вы всегда можете проверить количество ссылок используя функцию sys.getrefcount.

Задания с собеседования на позицию Middle Backend разработчика с примерами на Python https://tproger.ru/articles/zadanija-s-sobesedovanija-na-poziciju-middle-backend-razrabotchika-s-primerami-na-python/ @python_job_interview

Что распечатает код: def f(x,l=[]): for i in range(x): l.append(i*i) print(l) f(2) f(3,[3,2,1]) f(3) Ответ [0, 1] [3, 2, 1, 0, 1, 4] [0, 1, 0, 1, 4] Почему? Первый вызов функции волне очевиден, цикл добавляет 0, а затем 1 в пустой список. l – имя переменной которая указывает на список, хранящийся в памяти. Второй вызов начинается с создания нового списка, хранящегося в новом блоке памяти. l ссылается на новый список. Затем добавляются 0, 1 и 4 к новому списку. В третьем вызове функции происходит что-то странное. Она использует исходный список, хранящийся в исходной области памяти. Именно поэтому он начинается с 0 и 1. Протестируйте следующий код, для понимания: l_mem = [] l = l_mem # первый вызов for i in range(2): l.append(i*i) print(l) # [0, 1] l = [3,2,1] # второй вызов for i in range(3): l.append(i*i) print(l) # [3, 2, 1, 0, 1, 4] l = l_mem # третий вызов for i in range(3): l.append(i*i) print(l) # [0, 1, 0, 1, 4] @python_job_interview

Что такое «монкей патчинг» и когда он уместен? «Монкей патчинг» меняет поведение объекта или функции после того, как он/она будет определён/а. import datetime datetime.datetime.now = lambda: datetime.datetime(2022, 09, 09) Чаще всего это – довольно плохая идея, предпочтительно такие вещи определять явным способом. Одна из причин применения «монкей патчинга» - тестирование. Пакет mock очень полезен с для этих целей. Почему это важно? Это показывает, собеседуемый знаком методологией модульного тестирования. Упоминание о «моней патчинге» покажет, что программист за поддерживаемый программный код (те кто против – менее эффективны). Помните принцип KISS? И это показывает, что вы знакомы, как работает Python на более низком уровне, как функции хранятся, вызываются и прочее. PS: стоит немного почитать о mock если вы ещё не сделали этого. Это довольно полезно. @python_job_interview

Задача с собеседования | Уровень: #Medium Условие: Ваша задача — написать функцию, которая принимает неограниченное количество списков и возвращает только те элементы, что есть в каждом списке. Пример: find_values([11, 10, 3], [10, 3, 5, 11], [11, 10]) -> [11, 10] find_values([8, 4, 7, "hi"], [8, "hi"], [4, "hi"]) -> ['hi'] find_values([1, 4, 3], [6, 2, 8], ["4", "hi"]) -> [] ➡️Делитесь своим решением в комментариях👇 #задача_с_собеседования @python_job_interview

Какая Встроенная база данных поддерживается в Python? Расскажите о работе с ней. Ответ «Встроенность» предполагает, что вам не нужно запускать pip install для получения библиотеки. Просто импортируйте ее с помощью: import sqlite3 as sl Создание соединения с БД Не беспокойтесь о драйверах, строках подключения и т.д. Вы можете создать базу данных SQLite и задать такой простой объект подключения, как: con = sl.connect('my-test.db') После запуска этой строки кода происходит создание с БД и активируется подключение к ней. Дело в том, что базы данных, к которой мы просим подключиться Python, не существует, поэтому он автоматически создает пустую. Также мы можем ввести точно такой же код для подключения к уже существующей базе данных. Создание таблицы Теперь создадим таблицу: with con: con.execute(""" CREATE TABLE USER ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER ); """) Мы добавили три столбца в таблицу USER. Как видите, SQLite действительно легка и при этом поддерживает все основные функции обычной реляционной СУБД, такие как тип данных, обнуляемый тип, первичный ключ и автоинкремент. После запуска этого кода создается таблица, но она ничего не выводит. Включение записей Вставим несколько записей в только что созданную таблицу USER, чтобы доказать, что она действительно создана. Предположим, мы хотим вставить сразу несколько записей. Выполним: sql = 'INSERT INTO USER (id, name, age) values(?, ?, ?)' data = [ (1, 'Alice', 21), (2, 'Bob', 22), (3, 'Chris', 23) ] Определяем оператор SQL с вопросительными знаками ? в качестве заполнителя. Теперь создадим образцы данных для вставки, а затем вставим их с помощью объекта подключения: with con: con.executemany(sql, data) После запуска кода не появилось никаких предупреждений, значит все прошло успешно. Запрос к таблице Пришло время удостовериться, что все сделано правильно. Выполним запрос к таблице на возврат образцов строк. with con: data = con.execute("SELECT * FROM USER WHERE age <= 22") for row in data: print(row) ➡️ Читать дальше @python_job_interview

Опишите сложость исполнения основных операций над словарями Ответ В таблице ниже приводится усреднённая сложность. Амортизиро
Опишите сложость исполнения основных операций над словарями Ответ В таблице ниже приводится усреднённая сложность. Амортизированный худший случай обычно описывается O(n). Для усреднённой сложности предполагается, что хеш-функция для словарей в состоянии сделать конфликты редкими. Также предполагается, что ключи, используемые в параметрах, выбираются равномерно из множества всех существующих ключей. Указанная ниже сложность справледлива и для defaultdict (вместе с доступными операциями они наследуют от словарей и их сложности). Предполагается, что конструирование нового defaultdict имеет сложность O(1) (что справледливо для часто используемых int(), list(), set()). Для словарей, где ключи являются строками, используется быстрый путь. Это не оказывает влияния на алгоритмическую сложность, однако сильно влияет на постоянные факторы — то, на сколько быстро исполяется типовое приложение. @python_job_interview

Опишите сложость исполнения основных операций над словарями

Найти работу Python программистом можно 2 методами: Первый. Бесконечно скроллить HeadHunter и пытаться что-то выклевать на Li
Найти работу Python программистом можно 2 методами: Первый. Бесконечно скроллить HeadHunter и пытаться что-то выклевать на LinkedIn. Офигеть от условий и закрыть. Второй. Подписаться на Python Job. Это база адекватных предложений, где даже для новичков много мест с хорошей з/п. Тут найдете работу как в Яндексе (именно сюда крупняки присылают вакансии напрямую), так и в молодых стартапах! В общем, не теряйте времени и находите работу в 2 клика: @job_python

Собеседование Senior Python Developer на $8000 Смотреть видео @python_job_interview
Собеседование Senior Python Developer на $8000 Смотреть видео @python_job_interview

Как выполняется интерполяция строк? Без импорта класса Template есть три способа интерполяции строк: name = 'Chris' # 1. f strings print(f'Hello {name}') # 2. % operator print('Hey %s %s' % (name, name)) # 3. format print( "My name is {}".format((name)) ) @python_job_interview

English for Developers - канал для тех, кто хочет учить технический английский. От создатателей популярного ит-канала Книги п
English for Developers - канал для тех, кто хочет учить технический английский. От создатателей популярного ит-канала Книги программиста. 1. техническая лексика 2. опросы на английском 3. шутки на английском Подписывайтесь, проходите опросы, читайте полезные прогерские фразы на английском: english_forprogrammers. 1 канал вместо тысячи учебников и курсов

#Вопросы_с_собеседования ❓Напишите программу, которая возвращает количество гласных букв в строке Наша программа при помощи р
#Вопросы_с_собеседования ❓Напишите программу, которая возвращает количество гласных букв в строке Наша программа при помощи регулярного выражения, вычисляет количество гласных (A, E, I, O, U, Y) в строке.

Задача. Есть три функции, в которых выполняются базовые операции (сортировка, фильтрация, возведение массива в квадрат). Нужно упорядочить эти три функции в порядке возрастания времени, идущего на их выполнение. def f1(lIn): l1 = sorted(lIn) l2 = [i for i in l1 if i<0.5] return [i*i for i in l2] def f2(lIn): l1 = [i for i in lIn if i<0.5] l2 = sorted(l1) return [i*i for i in l2] def f3(lIn): l1 = [i*i for i in lIn] l2 = sorted(l1) return [i for i in l1 if i<(0.5*0.5)] То есть на входе все функции имеют одинаковые данные, на выходе выдают одинаковый результат. Но из-за того, что внутри операции выполняются в разном порядке, время выполнения будет отличаться. Здесь нужно ориентироваться в алгоритмах и понимать, что происходит с твоими данными в процессе. Эту задачу может решить Junior, а может не решить и Middle. Казалось бы, такая мелочь, но когда мы работаем с большим количеством данных, важно, чтобы код был оптимизирован и программа выполнялась максимально быстро. @machinelearning_interview

Расскажите о концепции распределенной архитектуры Ответ В больших системах, которые обрабатывают миллионы событий в день, некоторые вещи просто по определению обязаны пойти не по плану. Вот почему прежде, чем погружаться в планирование системы, нужно сделать самый важный шаг — принять решение о том, что для нас означает «здоровая» система. Степень «здоровья» должна быть чем-то таким, что на самом деле можно измерить. Общепринятым способом измерения «здоровья» системы являются SLA (service level agreements). Вот некоторые из самых распространённых видов SLA: Доступность (Availability): процент времени, который сервис является работоспособным. Пусть существует искушение достичь 100% доступности, достижение этого результата может оказаться по-настоящему сложным занятием, да ещё вдобавок и весьма дорогостоящим. Даже крупные и критичные системы вроде сети карт VISA, Gmail или интернет-провайдеров не имеют 100% доступности — за годы они накопят секунды, минуты или часы, проведённые в даунтайме. Для многих систем, доступность в четыре девятки (99.99%, или примерно 50 минут даунтайма в год) считается высокой доступностью. Для того, чтобы добраться до этого уровня, придётся изрядно попотеть. Точность (Accuracy): является ли допустимой потеря данных или их неточность? Если да, то какой процент является приемлимым? Для системы платежей, над которой я работал, этот показатель должен был составлять 100%, поскольку данные терять было нельзя. Пропускная способность/мощность (Capacity): какую нагрузку должна выдерживать система? Этот показатель обычно выражается в запросах в секунду. Задержка (Latency): за какое время система должна отвечать? За какое время должны быть обслужены 95% и 99% запросов? В подобных системах обычно многие из запросов являются «шумом», поэтому задержки p95 и p99 находят более практическое применение в реальном мире. Горизонтальное и вертикальное масштабирование По мере роста бизнеса, который использует нашу свежесозданную систему, нагрузка на неё будет лишь увеличиваться. В определенный момент, существующая установка будет неспособна выдержать дальнейшее увеличение нагрузки, и нам потребуется увеличить допустимую нагрузку. Две общепринятые стратегии масштабирования — это вертикальное или горизонтальное масштабирование. Горизонтальное масштабирование заключается в добавлении большего количества машин (или узлов) в систему для увеличения пропускной способности (capacity). Горизонтальное масштабирование — это самый популярный способ масштабирования распределённых систем. Вертикальное масштабирование — это по сути «купить машину побольше/посильнее» — (виртуальная) машина с большим числом ядер, лучшей вычислительной мощностью и большей памятью. В случае с рапределёнными системами, вертикальное масштабирование обычно менее популярно, поскольку оно может быть более дорогостоящим, чем масштабирование горизонтальное. Однако, некоторые известные большие сайты, вроде Stack Overflow, успешно масштабировались вертикально для соответствия нагрузке. @machinelearning_interview

Начните осваивать продвинутые приемы web-разработки на Python. В OTUS пройдут 2 открытых урока: 🗓 5 октября в 20:00 — погово
Начните осваивать продвинутые приемы web-разработки на Python. В OTUS пройдут 2 открытых урока: 🗓 5 октября в 20:00 — поговорим о роли регулярных выражений в разработке, оценим эффект от re.compile и посмотрим, стоит ли тратить время на изучение этой непростой темы? 👉🏻 Пройдите вступительный тест для регистрации — https://otus.pw/L4zo/ 12 октября в 20:00 — обсудим, нужны ли методы класса (classmethod), поговорим об особенностях ООП в Python, рассмотрим ситуации, когда без classmethod не обойтись, посмотрим на реализации в известных библиотеках. 👉🏻 Пройдите вступительный тест для регистрации — https://otus.pw/hRnQ/ Открытые уроки хорошая возможность протестировать обучением на онлайн-курсе «Web-разработчик на Python» и познакомиться с практикующим экспертом!

🦾 Собеседование Senior Python Developer на $6500 ➡️ Смотреть @python_job_interview
🦾 Собеседование Senior Python Developer на $6500 ➡️ Смотреть @python_job_interview

Что такое _slots_ в Python ? Ответ Позволяет снизить объём памяти, потребляемой экземплярами класса, ограничивая количество атрибутов ими поддерживаемых. По умолчанию классы используют словарь для хранения атрибутов — это позволяет модифицировать набор атрибутов объекта прямо в ходе исполнения программы. Однако такой подход оказывается затратным для объектов, набор атрибутов которых невелик и/или ограничен. Это становится особенно заметно, когда создаётся большое количество экземпляров. Поведение по умолчанию можно изменить, задав slots при определении класса. В slots могут быть перечислены атрибуты для значений которых требуется зарезервировать место (с точки зрения CPython в объекте класса резервируется место для массива указателей на Python-объекты). При этом ни dict, ни weakref для экземпляров автоматически созданы не будут (даже если в качестве значения строки указать пустую строку). В качестве значения slots может быть указана строка, объект поддерживающий итерирование, или последовательность строк с именами атрибутов, использующихся экземплярами. Слоты реализуются при помощи создания дескриптора для каждого из перечисленных атрибутов. class Ordinary(object): """Экземпляры этого класса могут дополняться атрибутами во время исполнения. """ class WithSlots(object): __slots__ = 'static_attr' a = Ordinary() b = WithSlots() a.__dict__ # {} b.__dict__ # AttributeError a.__weakref__ # None b.__weakref__ # AttributeError a.static_attr = 1 b.static_attr = 1 a.dynamic_attr = 2 b.dynamic_attr = 2 # AttributeError Попытки присвоить экземпляру атрибут, который не был перечислен в slots будет поднято исключение AttributeError. 2.3 Если требуется динамическое назначение атрибутов, следует указать в перечислении слотов '__dict__'. Не имея атрибута weakref, экземпляры классов со slots не поддерживают слабые ссылки на себя. 2.3 Если требуется поддержка слабых ссылок, следует указать в перечислении слотов '__weakref__'. Область действия слотов ограничено классом, в котором они определены, поэтому наследники (если конечно они не определили собственные слоты) будут иметь dict. Если наследники тоже определяют слоты, то в перечислении должны содержаться лишь дополнительные. В последующих версиях возможно будет реализована проверка на совпадение имён. Непустой slots не может быть использован для классов, наследующихся от встроенных типов переменной длины, например long, str и кортеж. При попытке сделать это будет поднято исключение TypeError. Слот может принимать перечисления с «нестроками». Например, могут использоваться отображения, однако в будущих версиях значения по ключам могут быть наделены неким определённым смыслом. 2.6 Если назначается class, следует проследить, что для обоих классов определены одинаковые слоты. @python_job_interview