Python вопросы с собеседований
24.7K subscribers
508 photos
16 videos
17 files
404 links
Вопросы с собеседований по Python

@workakkk - админ

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

@pro_python_code - Python

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

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

РКН: clck.ru/3FmrFd
加入频道
🖥 Задача: Неубывающий подмассив

Условие: дается целочисленный массив nums, верните все различные возможные неубывающие подпоследовательности данного массива, по крайней мере, с двумя элементами. Вы можете вернуть ответ в любом порядке.

Пример:
Ввод:
nums = [4,6,7,7]
Вывод: [[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]

Ввод: nums = [4,4,3,2,1]
Вывод: [[4,4]]

Решение

Пишите свое решение в комментариях👇

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
📱 Как защитить телеграм бота от атак и перегрузок.

Данный урок раскроет способы обеспечения безопасности телеграм-бота на Python.

Видео

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Асинхронный парсер Хабра на Python

Видео
Код парсера

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Сцепка бинарного дерева из центрированного и прямого проходов

Задача: Даны 2 списка preorder и inorder, где preorder - центрированный порядок дерева (сenter > left > rigth), inorder - прямой проход (left > center > right). Оба - описывают структуру одного дерева, необходимо сконструировать бинарное дерево.

Пример:

Ввод:
preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]
Вывод: [3,9,20,null,null,15,7]

Ввод:
preorder = [-1], inorder = [-1]
Вывод: [-1]

Пишите свое решение в комментариях👇

📌Решение

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
💡Задача: Змеи и лестницы

Условие: дается доска с целочисленной матрицей n x n, где ячейки помечены от 1 до n2 в стиле бустрофедона, начиная с нижнего левого края доски (т.е. доска [n - 1] [0]) и чередуя направление каждой строки.

Вы начинаете с квадрата 1 на доске. В каждом ходе, начиная с квадратного поворота, выполняйте следующее:

Выберите целевой квадрат рядом с меткой в диапазоне [curr + 1, min(curr + 6, n2)].

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

Верните наименьшее количество ходов, необходимых для достижения квадрата n2. Если добраться до квадрата невозможно, верните значение -1.

Пример:

Ввод:
board = [[-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1],[-1,35,-1,-1,13,-1],[-1,-1,-1,-1,-1,-1],[-1,15,-1,-1,-1,-1]]
Вывод: 4

Ввод: board = [[-1,-1],[-1,3]]
Вывод:
1

Решение
💡Задача: Монетообменик

Условие: дается массив, состоящий измонет определенного номинала, а также целевое значение суммы.

Необходимо высчитать наименьшее количество монет, которыми можно получить необходимую сумму или вернуть -1 в случае невозможности.

Количество монет не ограничено.

Пример:

Ввод:
coins = [1,2,5], amount = 11
Вывод:
3
Объяснение:
11 = 5 + 5 + 1

Ввод:
coins = [2], amount = 3
Вывод:
-1

Ввод: coins = [1], amount = 0
Вывод: 0

Решение

Пишите свое решение в комментариях👇

📌Решение

@python_job_interview
🖥 Django начало работы

Video

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Задача для новичков.

Вы работаете на производстве, и вас попросили рассчитать общую прибыль, полученную от продажи продукта. Вам дали словарь, содержащий данные о себестоимости единицы продукции (в долларах), цене продажи единицы продукции (в долларах) и начальных товарных запасах. Верните общую полученную прибыль, округленную до целого доллара

Пример:
profit({
"cost_price": 32.67,
"sell_price": 45.00,
"inventory": 1200
}) ➞ 14796

profit({
"cost_price": 225.89,
"sell_price": 550.00,
"inventory": 100
}) ➞ 32411

profit({
"cost_price": 2.77,
"sell_price": 7.95,
"inventory": 8500
}) ➞ 44030

Примечание:
1. Предполагаем, что все запасы были проданы.
2. Прибыль = общая сумма продаж – общая себестоимость

Пишите ваши варианты решения в комментах👇

@python_job_interview
🖥 Django. Вывод веб-страницы с нуля.

Видео
Часть1

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Задача, которую дают на собеседованиях кандидатам, которые будут работать с текстом, например в разработке поисковых систем.

Условие:
Дан массив со словами, в котором есть хотя бы одно слово. Необходимо найти максимально длинное общее начало каждого слова. Если такого нет — вывести пустую строку.

Например: имеем ['дог', 'домен', 'домра', 'доширак']. Общее начало каждого слова — 'до'.

Другой пример: массив ['документ', 'кот', 'кум', 'ум'].
Ответом будет пустая строка, потому что у всех этих слов нет единой общей части в начале слова.

Пишите ваши варианты решения в комментах👇

📌 Решение

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Решение задачи 1004 из Leetcode (Max Consecutive Ones III)
Задача часто встречается на собеседованиях.

Код оптимального решения с 2 указателями:
nums = [0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1]
k = 3

left = right = max1 = zeros = 0
while right < len(nums):
if nums[right] == 0:
zeros += 1
while zeros > k:
if nums[left] == 0:
zeros -= 1
left += 1
max1 = max(max1, right - left + 1)
right += 1

print(max1)



Решение: https://www.youtube.com/shorts/VWEFo37RP44

📌 Решение

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Собеседование в банк Goldman Sachs Associate

Ссылка на Leetcode c описанием интервью и похожих задач — https://leetcode.com/discuss/interview-experience/1069708/Goldman-Sachs-Associate-or-3%2B-Years-Experience-or-Offer

ссылка на саму задачу на Leetcode — https://leetcode.com/problems/h-index-ii/

Вот условие:
Дан список [3, 0, 6, 1, 5], в нём - количество цитирований каждой статьи. Необходимо определить максимальный h-index данного автора
*(автор имеет h-index, равный 2, если есть как минимум 2 статьи цитируемостью >= 2)*

Оптимальное решение:
m = [3, 0, 6, 1, 5]
s = [0] * (len(m)+1)
for x in m:
try:
s[x] += 1
except:
s[len(m)] += 1

m = []
for x in range(0, len(s)):
m += s[x] * [x]

for n in range(1, len(m)):
if m[-n] >= n:
print(n)

Пишите ваши варианты решения в комментах👇

📌 Решение

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Задача с собеседования #Python

Найти все числа, исчезнувшие в массиве

Условие:
Дан массив nums, в которой числа из диапазона [1, n]. Необходимо вывести числа из [1, n], которых нет в nums.

Пример 1:

Вход: nums = [4,3,2,7,8,2,3,1].
Выход: [5,6]

Пример 2:

Вход: nums = [1,1]
Выход: [2]


Ограничения:

n == nums.length
1 <= n <= 105
1 <= nums[i] <= n


Код:
nums = [4, 3, 2, 7, 8, 2, 3, 1]
ch = [0] * len(nums)
for el in nums:
ch[el-1] += 1

net = []
for n in range(len(ch)):
if ch[n] == 0:
net.append(n+1)

print(net)


📌 Разбор задачи

Пишите ваши варианты решения в комментах👇

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Решение непростой задачи с Leetcode, часто всплывает на собеседованиях (задача 3. Longest Substring Without Repeating Characters)

Нужно найти максимальную длину подстроки из неповторяющихся элементов.

Оптимальный алгоритм O(n):
def max_subs_len(s):
seen = {}
max_length = 0
start = 0

for n, el in enumerate(s):
if el in seen:
start = max(start, seen[el] + 1)
seen[el] = n
max_length = max(max_length, n - start + 1)

return max_length


📌 Разбор решения

Пишите ваши варианты решения в комментах👇

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
⚽️ Задача: Где приземлится мяч

Сложность: Средняя

Условие задачи: Дан двумерный массив, определяющий короб, а также n-ое количество мячей.

Каждая ячейка данной коробки имеет диагональную перегородку, которая может перенаправлять движение мяча.

- Перегородка ячейки типа "левый верхний угол —> правый нижний угол" имеет представление 1.
- Перегородка ячейки типа "правый верхний угол —> левый нижний угол" имеет представление -1.

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

Необходимо вернуть массив, который будет показывать добрался ли i-ый мяч до дна коробки (интерпретируется 1) или же уткнулся в стену (-1).

Пример:

Ввод:
grid = [[1,1,1,-1,-1],[1,1,1,-1,-1],[-1,-1,-1,1,1],[1,1,1,1,-1],[-1,-1,-1,-1,-1]]
Вывод: [1,-1,-1,-1,-1]
Объяснение: *во вложении

Ввод: grid = [[-1]]
Вывод: [-1]
Объяснение: мяч уткнется в левую стенку коробки

📌 Решение

Пишите свое решение в комментариях👇

@python_job_interview
Вышел GigaChat нового поколения. Разработчики @gigachat_bot качественно обновили его, изменив свой подход к обучению. Благодаря этому сервис стал лучше отвечать на запросы пользователей — примерно в два раза. При этом GigaChat также запустили в VK, аудитория сервиса уже достигла более 1 млн пользователей.

Попробовать.

@vistehno
💡 Задача: Количество узлов

Условие: дано дерево (т.е. связный неориентированный граф, не имеющий циклов), состоящее из n узлов с числом от 0 до n - 1 и ровно n - 1 ребер. Корнем дерева является узел 0, и каждый узел дерева имеет метку, которая представляет собой символ нижнего регистра, указанный в строковых метках (т.е. узел с номером i имеет метку labels[i]).

Массив ребер задан на ребрах фермы[i] = [ai, bi], что означает наличие ребра между узлами ai и bi в дереве.

Возвращает массив размера n, где и[i] - количество узлов в поддереве узла земли, которые имеют ту же метку, что и узел i.

Поддерево дерева - это дерево, состоящее из узла в T и всех его дочерних узлов.

Пример:

Ввод:
n = 7, edges = [[0,1],[0,2],[1,4],[1,5],[2,3],[2,6]], labels = "abaedcd"
Вывод: [2,1,1,1,1,1,1]
Объяснение:

Ввод:
n = 4, edges = [[0,1],[1,2],[0,3]], labels = "bbbb"
Вывод: [4,2,1,1]

Решение задачи

Пишите свое решение в комментариях👇

@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM