Python Simple
226 subscribers
55 photos
6 videos
175 links
by mr.Gold
Download Telegram
Неоптимальный алгоритм:
"Неоптимальный алгоритм" - это мем, настолько старый, что уже перестаёт им быть. Это стандартный ответ от Яндекса, когда тебе не удаётся попасть на свой грейд или когда вам отказывают вовсе.
На сколько важны и что показывают алгоримтческие собеседования? Этим вопросом я часто задаюсь, особенно после того как сам стал их проводить.
Алгоритмы - это фундаментальная дисциплина, тут я соглашусь. Но у вас когда нибудь спрашивали теорию алгоритмов, кроме определения сложности?
Сегодня алгоритмическая секция, это лотерея. Вам дают несколько окололиткодовских задач или прямо с литкода и их надо решить. Может повезти и попадутся задачи, которые вы недавно решали из очередного топа, а может не повезти.
Знание алгоритмов определяется количеством решеных задач на литкоде: до 100 задач это джун, от 250 - мидл, от 500 - синьер 🤡
А какой у вас литкод грейд?)
👍4👀31
Я тут стал повторять алгоритмы и в одном тематическом чатике скинули задачу с собеса, она мне показалась интересная. Ну и мы давно не решали задачи.
Тут важно подумать, какая будет сложность решения.

В массиве А хранятся цены на N предметов. Есть К купонов, которые уменьшают цену предмета на Х. Если применить t купонов на предмет с ценой а, то итоговая стоимость будет max(a - t*X, 0) (то есть купона не могут сделать стоимость товара отрицательной)
Необходимо вернуть минимальное кол-во денег, которое придется потратить, чтобы купить все предметы.
A = 8, 3, 10, 5, 13
K = 4
X = 7
result = 12
Обсуждаем в комментариях, и чтобы не пропускать комментарии, можно вступить в чатик
4👍3
Всем привет, пока готовлю чеклист для собеседования, вот очередной околособесовый вопрос)

Сколькими способами можно получить такой результат?

c = Counter(5)
print(c()) # 6
print(c()) # 7
print(c()) # 8


Counter может быть и классом и функцией и чем угодно, просто написал с большой буквы)
👍21
Я очень не люблю вопросы на собесе из разряда куча маленьких фрагментов кода и "Что выведет этот код?"
Особенно я не люблю, когда они не на знания, а на внимательности, приведу пример из недавнего
def func(l):
k = l[:]
l.append(10)
return k

a = [1, 2, 3]
func(a)
print(a)

Ну мое рассуждение: передали список в ф-ию, сделали копию, потом добавили 10-ку, и вернули копию, а осталось прежним.
Тут понятно, что я как минимум знаю, как передаются списки в ф-ию, что срез создает копию и тд.
Но после собеса я заметил, что 10-ку прибавили не к копии, а к оригинальному списку. Чувствую себя обманутым. Что это показывает? Что я запутался в названиях переменных a, l, k, не заметил куда приаппендили 10-ку. Можно ли это считать минусом?
Очень похоже, как в универе когда препод давал листинг прожки, и чтобы мы его не копировали, а перепечатали, то заменял "с" латинскую на русскую и тп, немного напомнило)
🔥73😁1
Вам когда-нибудь давали промокод на подписку после неудачного собеса в качестве комплимента?
Мне да)
Промокод на 3 мес. Надеюсь не будет подозрительно, если через 3 мес я ещё раз откликнусь за продлением подписки
😁8
Пришло время повторить, и признать ошибки в формулировках.

Что может быть ключом в словаре?

Ответы пишите в комментах, там и обсудим
3🤔1
Forwarded from Young&&Yandex
➡️ Intern Week Offer: в Яндекс за неделю

Запускаем ускоренный набор на стажировку. Участвуйте в Intern Week Offer и получите заветный бэйдж яндексоида.

Направления:
– ML
– Аналитика
– Бэкенд С++, Python, Java.


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

Задания, собеседования и все этапы отбора — прежние, но сам процесс быстрее.

Влетайте на стажировку в три шага:

⚫️ Раз — оставьте заявку с 10 октября по 28 октября, чтобы получить доступ к тестовому заданию: https://clck.ru/3DpGYf

◾️ Два — решите контест в период с 28 октября по 4 ноября.

⚫️ Три — пройдите собеседование с командами и получите офер на стажировку.

Ждём вас.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Теоретический минимум для прохождения собеседования:

Python:
- Структуры данных (изменяемые, неизменяемые, знать сложность операций)
- Внутреннее устройство dict
- Хэш-таблицы (уметь реализовать свой хэшируемый объект, знать зачем нужен hash и eq)
- Декораторы (уметь написать свой декоратор, декоратор с параметрами, знать что такое замыкания, класс декоратор)
- ООП (знать MRO, что такое миксины, повторить SOLID, как в python реализованы наследование, полиморфизм, инкапсуляция, знать про интерфейсы и абстрактные классы, уметь написать)
- Менеджер контекста (уметь реализовать)
- Генераторы/Итераторы (знать разницу, уметь реализовать, знать про StopIteration и когда возвращается)
- Что такое yield, отличие от return
- Потоки/процессы/асинхронность/GIL (знать, как передается управление в каждом случае, когда что лучше использовать, знать про IO и CPU/bound задачи)
- Логирование (уметь написать, знать, уровни логирования, почему лучше при формировании сообщения писать %, а не f-строки)
- Тестирование (уметь написать пару тестов на pytest/unittest, знать про фикстуры, моки, TDD)

Базы данных:
- синтаксис запросов (GROUP BY, HAVING)
- join-ы
- explain
- индексы (знать, внутреннее устройство пары индексов, например b-tree и hash)
(остальное надо просто уметь объяснить на пальцах)
- ACID (уровни изоляции)
- Виды БД (привести примеры реляционных БД, key-value хранилищ, документо-ориентированные, и тд)
- Шардирование/Репликация/Партиционирование
5👍2🙏1
Всем привет! Сегодня такой вопрос:

Какая разница между Iterable и Iterator?

Важно понимать разницу, часто думают, что это одно и то же, но это не так
5
Субъективная оценка
Недавно у меня на собеседовании спросили, на сколько хорошо я знаю python и какую бы оценку поставил себе по 10-ти бальной шкале.
Я немного задумался, т.к. перед этим ставил оценку на Кинопоиске и 5 - это средняя, 6 - это выше средней, 7 - хорошо и тд, то есть 6 - это уже достаточно хорошая оценка. При этом я помню, как Страуструп говорил, что сам знает С++ на 8, а он его придумал. Как я могу поставить себе 8-ку, когда я даже не контрибьютил в core-python?
По моему я сказал 7 или 6.5. Но как синьер может сказать, что он знает основной ЯП даже на 7? В этом смысле эта оценка кажется низкой. Что от меня хотели услышать, не знаю даже. Если бы спросил про то, на какой грейд я хочу попасть, было бы проще ответить.
Оцените себя по 10-ти бальной шкале:
3
Я знаю python на:
Anonymous Poll
17%
1
19%
2
19%
3
15%
4
9%
5
4%
6
2%
7
11%
8
0%
9
4%
10
Что-то давно мы с вами ничего не решали, предлагаю немного окунуться снова в алгоритмы и борьбу с leetcode
Задачка уровня мидиум, но ничего смертельно сложного в ней нет
1338. Reduce Array Size to The Half

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

Ссылочка на ориганльное условие: https://leetcode.com/problems/reduce-array-size-to-the-half/description/

Задача у нас стоит как всегда одна, засабмитить на литкоде, рассказать как делали, какие фишки применяли.
Вечером в воскресенье бахну разбор (если не забуду)!
4👍1
Задачка на эту короткую неделю. Это не стареющая классика, с небольшим доп условием.
Ее часто спрашивают на собесах или дают в контестах.
3163. String Compression III

Нам дана строка word и нам надо сжать ее с помощью следующего алгоритма
-Мы начинаем с пустой строки
-Далее для каждой буквы повторяющейся подряд не более 9 раз мы прибавляем к результирующей строке количество + букву
-Если буква повторяется более 9 раз нам надо сросить счетчик

наша задача вернуть сжатую строку

Оригинал условия
https://leetcode.com/problems/string-compression-iii/description/

Наша задача как всегда решить и засабмитить на литкоде
🔥41
На этой неделе задача easy, но я что-то в ней закапался минут на 40.
И так нам дан список с целыми числами, который представляет число разбитое на цифры.
А так же нам дано число, которое необходимо прибавить к этому списку так, как будто он тоже число.

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

https://leetcode.com/problems/add-to-array-form-of-integer/submissions/1451826150/

P.S. Сначала я думал, что решается в 2 строки, но я никогда так не ошибался и написал какой-то костыль.
Надеюсь кто-то решит поэлегатнее 😂👉👈
3
Наступил вечер среды, а это значит нас ждет очередная задача на эту неделю.
Задачка у нас уровня медиум, но это не самый хардовый медиум

И так нам дан массив с целыми числами nums, длины n и целое число положительное число k
И нам надо найти мощность подмасивов длинной k входящих в данный массив. И вернуть их в виде списка.

Мощность массива вычисляется в том случае, если все элементы в нем отсортированы в порядке возрастания и разница между этими элементами равна 1. В таком случае мощность равна максимальному элементу подмасива.

Если же элементы не соответсвуют выще описанному требованию, то следует вернуть -1.

https://leetcode.com/problems/find-the-power-of-k-size-subarrays-i/description/

Как всегда приветсвуются идеи и жаркие дискусии, в воскресенье покажу Вам как я решил!
🔥4
Очередной вечер среды, а это значит у нас новая задачка.
Она чем-то перекликается с задачей прошлой недели.

У нас есть список с целыми числами и два целых числа m и k
Наша задача вернуть максимальную сумму подмассива длинной k, в котором есть как минимум m уникальных значений.
Если такой подмассив не обнаружен, необходимо вернуть ноль.

Ссылочка на задачку
https://leetcode.com/problems/maximum-sum-of-almost-unique-subarray/description/


p.s. Я сам решил, но мне не нравится как у меня получилось, так что жду от Вас пропрывных идей)
3
Всем доброго вечера, с небольшим запозданием летит задачка.
Не пугайтесь того, что она уровня медиум(этот тот самый изи, который замаскировался под медиум.

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

Наша задача засабмитить задачку до обеда воскресенья)

Оставляю ссылочку на примеры и на оригнал условия. И жду ваших решений (на питоне тут можно вообще люто считерить)

https://leetcode.com/problems/adding-spaces-to-a-string/description/
3
Всем доброго вечера, среды!
Устал я от медиум задач, так что на этой неделе нас ждет легкая задачка.

На вход нам даются два числа, candies - количество конфет, num_people - количество людей между которыми надо распределить эти конфеты.
Конфеты распределяются следующим образом, первый человек получает 1 конфету, второй 2 конфеты, третий 3 конфеты до тех пор, пока не закончаться конфеты, если мы достигли последнего человека, то мы переходим в начало и начинаем снова с первого человека.

Если число конфет, которые мы должны дать человеку n больше чем, количество конфет, которое у нас осталось, мы отдаем этому человеку все конфеты что остались.

Наша задача вернуть список длиной равный num_people, где каждый индекс олицетворяет человека в очереди, где будет отражено финальное распределение конфет.

Оригинал условия и ссылочка на задачку

https://leetcode.com/problems/distribute-candies-to-people/description/

Нам как всегда надо засабмитить на лииткоде и поделиться кодом в комментах!
4
Всем привет!

Около двух месяцев назад я начал работать на новом месте, и хочу поблагодарить @sergey_emelyanov22 за то, что все это время он развлекал нас (и, наверное, больше всего меня) задачами с литкода.

Я тем временем практически адаптировался и появилось много мыслей, т.к. это нетипичная компания относительно моего предыдущего опыта. Но есть большая вероятность, что мысли в голове так и останутся) Хотя я уже убедился, что многое из того, что кажется мне очевидным, далеко не всегда очевидно для других.

Ну а следующий год Python-а 🔤, с чем всех и поздравляю!
С наступающим НГ! ☃️
Please open Telegram to view this post
VIEW IN TELEGRAM
7🎄1