Python вопросы с собеседований
Вопросы с собеседований по Python @workakkk - админ @machinelearning_interview - вопросы с собесдований по Ml @pro_python_code - Python @data_analysis_ml - анализ данных на Python @itchannels_telegram - 🔥 главное в ит РКН: clck.ru/3FmrFd
Ko'proq ko'rsatish📈 Telegram kanali Python вопросы с собеседований analitikasi
Python вопросы с собеседований (@python_job_interview) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 24 822 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 5 258-o'rinni va Rossiya mintaqasida 26 472-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 24 822 obunachiga ega bo‘ldi.
25 Avgust, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -44 ga, so‘nggi 24 soatda esa 0 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 6.01% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 2.76% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 1 492 marta ko‘riladi; birinchi sutkada odatda 684 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 6 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent github, api, собеседование, git, docker kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Вопросы с собеседований по Python
@workakkk - админ
@machinelearning_interview - вопросы с собесдований по Ml
@pro_python_code - Python
@data_analysis_ml - анализ данных на Python
@itchannels_telegram - 🔥 главное в ит
РКН: clck.ru/3FmrFd”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 31 Avgust, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
def func(...):
...
print('Я закончила работать!')
func()
# Затрачено 0.5 секунд
# Я закончила работать!
Пишите свое решение в комментариях👇
@python_job_interviewarr = [1, 5, 2, 3, 6]
Ответ: 3
Пример:
arr = [100, 5, 2, 4, 3, 6]
Ответ: 4.5
Примечание: Если в выборке четное число элементов, то за медиану нужно взять среднее между центральными элементами (после упорядочивания).
Дополнительная информация
Обратите внимание, что шаблон решения представлен в виде (на примере языка Python):
class Answer:
def function(self, arg1, arg2):
# напишите свой код ниже
return res
Здесь function - функция, которую вам нужно написать (от задачи к задаче ее имя меняется), а arg1, arg2 - аргументы этой функции.
Чтобы решить задачу, напишите свой код между комментарием и выражением return ....
print(Answer().function(arg1, arg2))
Если вам нужно импортировать какой-то модуль, указывайте модуль до class Answer. Например:
import mymodule
class Answer:
...
Полный пример:
# импортируем модуль
import collections
class Answer:
def problemSolve(self, n, m):
# напишите свой код ниже
...
return res
# промежуточно смотрим результат
print(Answer().problemSolve(n=2, m=3))
Пишите свое решение в комментариях👇
@machinelearning_interview(revenue / cost - 1) * 100
Пример работы программы:
results = {
'vk': {'revenue': 103, 'cost': 98},
'yandex': {'revenue': 179, 'cost': 153},
'ok': {'revenue': 103, 'cost': 110},
'adwords': {'revenue': 35, 'cost': 34},
'twitter': {'revenue': 11, 'cost': 24},
}
Результат:
{'adwords': {'revenue': 35, 'cost': 34, 'ROI': 2.94},
'ok': {'revenue': 103, 'cost': 110, 'ROI': -6.36},
'twitter': {'revenue': 11, 'cost': 24, 'ROI': -54.17},
'vk': {'revenue': 103, 'cost': 98, 'ROI': 5.1},
'yandex': {'revenue': 179, 'cost': 153, 'ROI': 16.99}}
Пишите свое решение в комментариях👇
@python_job_interview(dfs), если мы нашли элемент 1-го острова, тогда меняем значение в двумерной матрице на 2. Для экономии времени мы будем заранее заполнять очередь для будущего обхода в ширину (bfs).
n = len(grid)
queue = []
def dfs(x, y):
if x > 0 or x >= n or 0 > y or y >= n or grid[x][y] != 1:
return
grid[x][y] = 2
queue.append([x, y, 0])
dfs(x - 1, y)
dfs(x + 1, y)
dfs(x, y - 1)
dfs(x, y + 1)
# Перебираем двумерный массив, пока не найдем первый элемент суши
flag = False
for i in range(n):
for j in range(n):
if grid[i][j]:
dfs(i, j)
flag = True
break
if flag:
break
2. С помощью обхода в ширину мы найдем кратчайший путь до 2-го острова, для этого мы заполнили очередь координатами элементов 1-го острова.
# Чтобы убрать больше количество условных операторов
# я буду использовать цикл for, в котором я буду перебирать
# все возможные варианты дальнейшего пути
dirct = [(0, 1), (0, -1), (1, 0), (-1, 0)]
while len(queue) != 0:
# step - расстояние до 2-го острова
x, y, step = queue[0][0], queue[0][1], queue[0][2]
queue.pop(0)
for dx, dy in dirct:
x1, y1 = x + dx, y + dy
if 0 > x1 or x1 >= n or 0 > y1 or y1 >= n:
continue
if grid[x1][y1] == 1:
return step # ответ на задачу
if grid[x1][y1] == 0:
grid[x1][y1] = 2
queue.append([x1, y1, step + 1])
Весь код:
class Solution(object):
def shortestBridge(self, grid):
n = len(grid)
queue = []
def dfs(x, y):
if 0 > x or x >= n or 0 > y or y >= n or grid[x][y] != 1:
return
grid[x][y] = 2
queue.append([x, y, 0])
dfs(x - 1, y)
dfs(x, y - 1)
dfs(x + 1, y)
dfs(x, y + 1)
flag = False
for i in range(n):
for j in range(n):
if grid[i][j]:
dfs(i, j)
flag = True
break
if flag:
break
dirct = [(0, 1), (1, 0), (-1, 0), (0, -1)]
while len(queue) != 0:
x, y, step = queue[0][0], queue[0][1], queue[0][2]
queue.pop(0)
for dx, dy in dirct:
x1, y1 = x + dx, y + dy
if 0 > x1 or x1 >= n or 0 > y1 or y1 >= n:
continue
if grid[x1][y1] == 1:
return step
if grid[x1][y1] == 0:
grid[x1][y1] = 2
queue.append([x1, y1, step + 1])
@python_job_interviewimport random
import numpy as np
def merge(lst1, lst2):
yield from lst1
yield from lst2
def shuffle_list(n: int):
lst = np.arange(1, n)
np.random.shuffle(lst)
return lst
def random_insert(lst, item):
lst.insert(random.randrange(len(lst)+1), int(item))
def find_item(lst: list):
init_lst = []
for item in lst:
if lst.count(item) == 1:
init_lst.append(item)
return init_lst
n = int(input("n > "))
a_list = shuffle_list(n)
b_list = shuffle_list(n)
c_list = list(merge(a_list, b_list))
e = input("e > ")
random_insert(c_list, e)
print(find_item(c_list))
Это громоздкое решение. Пишите свое решение в комментариях👇
@python_job_interview+-----+-----+-----+-----+
| 10 | 20 | 30 | 40 |
+-----+-----+-----+-----+
| 50 | 60 | 70 | 80 |
+-----+-----+-----+-----+
| 90 | 100 | 110 | 120 |
+-----+-----+-----+-----+
| 130 | 140 | 150 | 160 |
+-----+-----+-----+-----+
Матрица гарантированно содержит целые неотрицательные числа. Форматирование границ иными символами не предполагается.
Требования к выполнению и оформлению
Библиотека содержит функцию со следующим интерфейсом:
async def get_matrix(url: str) -> List[int]:
...
Функция единственным аргументом получает URL для загрузки матрицы с сервера по протоколу HTTP(S).
Функция возвращает список, содержащий результат обхода полученной матрицы по спирали: против часовой стрелки, начиная с левого верхнего угла.
Взаимодействие с сервером должно быть реализовано асинхронно - посредством aiohttp, httpx или другого компонента на asyncio.
Библиотека должна корректно обрабатывать ошибки сервера и сетевые ошибки (5xx, Connection Timeout, Connection Refused, ...).
В дальнейшем размерность матрицы может быть изменена с сохранением форматирования. Библиотека должна сохранить свою работоспособность на квадратных матрицах другой размерности.
Решение задачи необходимо разместить на одном из публичных git-хостингов (GitHub, GitLab, Bitbucket). Можно также выслать решение в виде архива (zip, tar). Загружать библиотеку в PyPi или другие репозитории не требуется.
Проверка решения
Для самостоятельной проверки можно использовать следующий test case:
SOURCE_URL = 'https://raw.githubusercontent.com/avito-tech/python-trainee-assignment/main/matrix.txt'
TRAVERSAL = [
10, 50, 90, 130,
140, 150, 160, 120,
80, 40, 30, 20,
60, 100, 110, 70,
]
def test_get_matrix():
assert asyncio.run(get_matrix(SOURCE_URL)) == TRAVERSAL
Загружайте свои решения и отправляйте ссылки в комментарии👇
@python_job_interview 1, 2, …, 9. Именно в таком порядке. Вы можете вставлять между ними знаки «+», «-» или ничего. У вас будут получаться выражения вида 123+45-6+7+89. Найдите все из них, которые равны 100.
def all_combinations(a):
if len(a) <= 1:
yield a
else:
head = ''
tail = list(a)
while len(tail) > 0:
head += tail.pop(0)
for s in all_combinations(tail):
yield [head] + s
def all_signs(n):
if n == 0:
yield ()
else:
for tail in all_signs(n-1):
for s in '+-':
yield (s,) + tail
def perform_operations(nums, signs):
nums = list(map(int, nums))
result = nums.pop(0)
n = 1
for s in signs:
if s == '+':
result += nums.pop(0)
if s == '-':
result -= nums.pop(0)
n += 1
return result
for numbers in all_combinations(tuple(map(str, range(1, 10)))):
#print(numbers)
for signs in all_signs(len(numbers) - 1):
#print(signs)
summ = perform_operations(numbers, signs)
if summ == 100:
print(
''.join(map(
lambda x: ''.join(x),
zip(numbers, signs)))
+ numbers[-1])
Три функции:
- all_combinations — итератор, который выдает все числа для операций (в терминах задачи: вставляет пустые места);
- all_signs — выдаёт все возможные сочетания знаков + и - заданной длинны (для единообразия, это тоже итератор с рекурсией);
- perform_operations — выполняет операции.
Здесь просится решение, избавленное от if-ов и кодирования операций с помощью символов.
👉 Это не оптимальное решение. Пишите свое решение в комментариях👇
@python_job_interview