- 63
- 21 124
DS Average Enjoyer
Russia
Приєднався 15 чер 2014
Новичкам помогаю вкатываться в ИТ, а уже бывалым - прокачивать свои навыки и знания, чтобы быть увереннее и стоить дороже на рынке труда
Уже 14 лет в ИТ, из которых 8 лет посвятил анализу данных и машинному обучению
- Занимался созданием DS/ML направления с нуля в разных компаниях
- Выстраивал культуру работы с данными в целом и культуру АБ-тестирования, в частности
- Руководил разными DS/ML командами
На канале делюсь своими знаниями и опытом, рассказываю как устроены собеседования и как их проходить и готовиться. Таким образом помогая новичкам вкатываться в это страшное (нет - ничего экстрасложного в работе айтишников нет, даже в DS/DA/ML) АйТи. Для тех, кто уже "вошел", на канале есть много полезного в плане подготовки к собеседованиям, прокачки навыков, кейсов, разборов интервью, вопросов и задач.
Уже 14 лет в ИТ, из которых 8 лет посвятил анализу данных и машинному обучению
- Занимался созданием DS/ML направления с нуля в разных компаниях
- Выстраивал культуру работы с данными в целом и культуру АБ-тестирования, в частности
- Руководил разными DS/ML командами
На канале делюсь своими знаниями и опытом, рассказываю как устроены собеседования и как их проходить и готовиться. Таким образом помогая новичкам вкатываться в это страшное (нет - ничего экстрасложного в работе айтишников нет, даже в DS/DA/ML) АйТи. Для тех, кто уже "вошел", на канале есть много полезного в плане подготовки к собеседованиям, прокачки навыков, кейсов, разборов интервью, вопросов и задач.
Задача с собеседования LeetCode 322 Coin Change #python #coding #leetcode
Просто таки классическая задача на применение DP (dynamic programming)
Разбор задачи со стрима
Подписывайся на ТГ - t.me/ds_average_enjoyer
Разбор задачи со стрима
Подписывайся на ТГ - t.me/ds_average_enjoyer
Переглядів: 136
Відео
Задача с собеседования LeetCode 62 Unique Paths #python #coding #leetcode
Переглядів 8019 годин тому
Шикарная задача на применение DP (dynamic programming) Разбор задачи со стрима Подписывайся на ТГ - t.me/ds_average_enjoyer
Задача с собеседования LeetCode 338 Counting Bits #python #coding #leetcode
Переглядів 4321 годину тому
Разбор задачи со стрима Подписывайся на ТГ - t.me/ds_average_enjoyer
Задача с собеседования LeetCode 121 Best Time To Buy ANd Sell Stock #python #coding #leetcode
Переглядів 50День тому
Разбор задачи со стрима Подписывайся на ТГ - t.me/ds_average_enjoyer
Задача с собеседования LeetCode 55 Jump Game #python #coding #leetcode #code
Переглядів 56День тому
Задача подробно разбиралась на стриме - ua-cam.com/users/liveUy-MbQ3Ltxo Подписывайся на ТГ, чтобы не пропустить анонсы стримов - t.me/ds_average_enjoyer
Задача с собеседования LeetCode 118 Pascal's Triangle #python #coding #leetcode
Переглядів 344День тому
Задача подробно разбиралась давно на стриме (осторожно, тупняки от автора!) - ua-cam.com/users/live02zP4G2jbuo Подписывайся на ТГ, чтобы не пропустить анонсы стримов - t.me/ds_average_enjoyer
Как отвечать на вопрос про деньги на собеседовании в IT? #интервью #hr #собеседование #скрининг
Переглядів 1044 місяці тому
Как отвечать на вопрос про деньги на собеседовании в IT? #интервью #hr #собеседование #скрининг
Задача с собеседования. Следующая меньшая перестановка числа
Переглядів 4777 місяців тому
Задача с собеседования. Следующая меньшая перестановка числа
АБ тестирование. 3. Строим дерево метрик
Переглядів 538 місяців тому
АБ тестирование. 3. Строим дерево метрик
АБ тестирование. 2. Процесс на примере музыкального сервиса
Переглядів 518 місяців тому
АБ тестирование. 2. Процесс на примере музыкального сервиса
Задачи с собеседований. Монте-Карло для численного решения
Переглядів 1678 місяців тому
Задачи с собеседований. Монте-Карло для численного решения
Задача с собеседования. Две игральные кости
Переглядів 1,4 тис.8 місяців тому
Задача с собеседования. Две игральные кости
Задача с собеседования. Математическое ожидание количества бросков
Переглядів 3728 місяців тому
Задача с собеседования. Математическое ожидание количества бросков
АБ тестирование. 1. Интуитивное понимание, как устроен процесс
Переглядів 768 місяців тому
АБ тестирование. 1. Интуитивное понимание, как устроен процесс
Вебка закрывает excalidraw. Хотя там и так понятно, но все же.
Да, спасибо - уже постфактум заметил) Перенесу в следующий раз либо организую так, чтобы физически не пересекались пространства
Ютуб следит за мной. +- 2 часа пытался ее решить и она прилетает в рекомендации. Повод задуматься
Контекстная реклама) А задача прям "классическая" для динамического программирования)
Странно, но стрим оборвался в самом конце( Там не то чтобы много суперценного - просто еще добил оценку по месту, которое нам потребуется для хранения признаков + подписал блоки на схеме (конкретные инструменты указал)
Заюзать set() и готово, следом сортируем.
Здесь ключевое требование в условии - это in-place, т,е. нельзя создавать дополнительные структуры данных (а когда ты берешь set() от массива, то создается множество и расходуется память (в худшем случае столько же элементов будет, что и в исходном массиве, если там вообще все числа уникальные)) В реальной жизни это конечно условность, но на собеседовании придется учитывать такое ограничение
Задачи в конце стрима "на подумать" - code.yandex-team.ru/7d908653-c78c-4912-966d-f1172f725bef p.s. разберем их уже на следующем стриме по алгосам (+ парочку других алгоритмов)
зачем смотреть поиск между указтелями и сколзящим?
В целом да, можно немного поменять порядок тем и разобраться со sliding window сначала, а затем уже перейти к поиску
@@dsmlenjoyer имхо сначала все о массивах, потом поиски и так далее, но конечно это тебе решать)
Задача со стрима - leetcode.com/problems/product-of-array-except-self/description/ код с решениями - code.yandex-team.ru/7d908653-c78c-4912-966d-f1172f725bef
Привет, а есть канал, где вы делаете анонсы стримов?
Привет) анонсов не делал, хотя наверное стоит начать это делать)
Ближайший точно будет в течении недели и точно по динамическому программированию
@@dsmlenjoyer спасибо!
Добрый день! Стримов больше не будет?😢
Был перерыв) А так стримы будут (и есть). Канал t.me/ds_average_enjoyer , но там не только анонсы, но и посты разные про DS/ML/алгоритмы/трудоустройство + разборы вопросов, задач, историй из профессиональной жизни (коих немало)
Ничего не понял, но очень интересно
Прошлое видео, в котором разбирается процесс трудоустройства в целом - ua-cam.com/users/livetiq1QJUv5xs?si=Cfmng4W7rL4faBoA
Примеры исследований зарплат: 1. habr.com/ru/articles/809923/ 2. от hh - hh.ru/article/2160 3. еще от них же - hh.ru/article/31783 Для ознакомления вроде бы ничего, хотя зп занижены, кажется (субъективное мнение) Бородатый анекдот, упомянутый в видео: "Сидят два ичара, старый и молодой. И перед ними огромная гора резюме. Молодой: Мдаа, мы с этим всю неделю просидим Старый снимает верхнюю половину с этой горы и отправляет в мусорку. Молодой: Ты чего делаешь??! Старый: Ну, а зачем нам неудачники?.."
Нихуя не понял, но интересно
Это нормально, когда впервые сталкиваешься с такими задачами в целом и с динамическим программированием - в частности)
Спасибо за крутую базу!👍🏻Ждем видео про подготовку к алго. собесам
Спасибо большое) Будет обязательно. Там много всего, конечно. Как со стороны "техники", так и "психологии" (волнение, нежелание такие задачи на интервью решать и т.д.).
Очень полезно, спасибо
Первые 8 минут потеряны( Но никаких задач там еще не успел разобрать, так что ничего страшного (кажется)
на 19:15 в спешке написал неверно. В таблице истинности там 0 1 1 0 конечно же)
А задача First Missing Positive точно правильно решена? С кейсами когда пропущенное число находится в диапазоне массива всё отлично, но задача подразумевает кейс [7, 8, 9, 11, 12] с ответом 1, что в Вашем алгоритме я не уверен что так отработает. Я что-то упускаю?
Да, отработает) собственно, там один из тестовых примеров именно такой и код прошел
все круто. задача хорошая и объяснение понятное. единственное, что хотел бы отметить - подсветка микрофона. когда она меняется отвлекает, но это мое восприятие, может кому-то не мешает
Задача сложная - я бы на интервью не решил, скорее всего) Если бы не знал как решать или не видел что-то похожее ранее. Микрофон планирую поменять в какой-то момент - он не очень удобный сам по себе)
Не знаю почему Ютуб подкинул мне это видео, ну да ладно. Если уж писать реализацию на Python, то писать не в стиле С. 1. Делаем список цифр числа > num_digits = [int(x) for x in str(input_number)] 2. Развернуть список: > my_list = my_list[::-1] > my_list = reversed(my_list) > my_list.reverse() 3. сортировку хвоста делаем также через встроенные функции list.sort() / sorted() от среза 4. Собираем разряды в число > result = int("".join(str(x) for x in num_digits)). Хотя я бы даже не переводил разряды числа из строи т.к. от этого ничего в алгоритме не поменяется а лишнее преобразование туда-обратно мы убираем.
я вахуй
да, Вы правы, конечно - можно очень по-разному решить ту или иную подзадачу. В этом и прелесть программирования и не только) У меня бывало на собесах что вводилось дополнительное требование на то чтобы не использовать "встроенные" (специфичные) для конкретного языка функции (точнее, использовать из по-минимуму). А так код конечно же можно сократить прилично)
спасибо!!
Отличные видео! Дальше - больше, не забрасывай! Для большей мотивации продвигай канал, привлекай заинтересованных зрителей. По своему опыту знаю, что ютифай с этим хорошо справляется)
Спасибо большое) Точно не планирую забрасывать - столько всего еще перерешать можно. Мне и самому полезно - я даже как-то возвращался к паре задач и их решению в последнее время. Также в планах разборы тестовых на ML/DS/аналитику) Со временем, как наберусь уверенности (волнение страшное на стримах) и опыта)
Вторая задача -- объяснение в общем виде, мб полезно, но в данном случае можно использовать очень простое условие без дополнительных переменных: если число равно 9, то ставим 0 и идем на следующую итерацию. Иначе прибавляем к числу 1 и прерываем итерацию. А, ну и если доходим до последней итерации, и там стоит 9, то ставим 0 и возвращаем массив [1,0,0,...]
В этом тоже прелесть (ну кому как) задач - их можно решить очень по-разному)
в последней задаче зачем отсечение по 40? неясно чем 41, 45, 49 мешают. Так же берем остаток от деления на 10.
Тогда получится так что не все числа от 1 до 10 будут встречаться одинаково. И не будет равной вероятности. В принципе можно было выбрать в качестве порога и 10 и 20 либо 30. Тогда числа были бы равновероятны, но количество вызовов было бы неоптимальным. Дело в остатке от деления на 10. Попробуйте взять 11 (для примера) и посчитать остаток от деления на 10. Получится: 1%10=1, 2%10=2, 3%10=3, 4%10=4, 5%10=5, 6%10=6, 7%10=7, 8%10=8, 9%10=9, 10%10=0, 11%10=1. Таким образом, у нас дважды получается 1. И, если вызвать функцию много раз, то 1 будет встречаться чаще, чем остальные.
Как решать задачу если у нам нужно 3 или более орлов подряд???
там же не обязательно сабмитить чтобы прогнать непрошедший тест, есть же кнопка use test case
да, спасибо большое) Забыл про эту опцию совсем - в следующих стримах буду активно пользоваться (стараться)
В что это за программа в которой схемы рисуете?
Это просто excalidraw.com/. Удобно в целом. Даже на технических интервью прошу интервьюеров дать возможность порисовать - иногда прям помогает сильно в понимании что нужно сделать)
спасибо за объяснение, подскажите, встречал много похожих задачек на нахождение мат.ожидания кол-во ходов или еще чего-то до наступления какого-то события, может знаете где можно почитать про такого рода задачки?
Есть несколько вариантов этой задачи, когда рассматривается какое-то событие вида РР, ОО, РРО, ООР и т.д. Я с похожими сталкивался на собесах, а так нужно наверное просто искать на просторах Интернета)
Если разделить 2 (количество орлов) на вероятность выпадения орла или решки (0.5, поскольку она одинаковая), то мы получим 4.
Чет нифига не понятно
А представьте такое на техническом интервью получить - в условиях стресса и суперограниченного времени( Да, задачка сложна именно для понимания (особенно если никогда подобное не решал). Но есть видео с эмпирическим способом нахождения искомой величины (с помощью множественных симуляций) и там все сходится (как sanity check такой дополнительный - для проверки теоретических рассуждений).
неверно. вероятность каждого броска 50%, а значит бросков может быть минимально 2, максимально *бесконечность*. Ведь есть вероятность того, что 2 раза орел не выпадет на протяжении всего эксперимента и она равна 50%. значит правильный ответ будет (*бесконечность*-2)/2
если первым выпал орел, это никак не увеличивает вероятность выпадения орла, так что эта переменная не релевантна
@@ИванПрус-в3ь может быть и бесконечность в отдельно взятом испытании. Но в среднем будет именно 6. И это подтверждается симуляциями (Монте-Карло) - есть отдельное видео, которое демонстрирует это (при повторении эксперимента тысячи раз мы в среднем получаем как раз 6)
Банальная задача. Мат. ожидание можно без кучи дробей посчитать сложив максимальный и минимальный результаты, и поделив на 2. Вот и выходит 3.5. Если падает меньше, то очевидно в среднем лучше перебрасывать.
Ну, это скорее частный случай: если результаты события равномерно распределены и равновероятны, то и среднее, и мат.ожидание будет равно половине разницы максимального и минимального значений. Но то, что показал автор видео, является общим способом вычисления мат.ожидания, который будет работать не только на костях, но и на более сложных моделях.
Половину рассуждений не понял, но, только прочитав условие, сказал себе, что буду перебрасывать зарик, если в 1-й раз выпало меньше 4-х. Подсознание не обмануло ))
я не очень доволен обоснованием того, что твоя стратегия оптимальная. Понятно, что если мы выбрали перебрасывать при выпадении одних чисел, но не перебрасывать при выпадении других то таких стратегий конечное количество и их можно перебрать. Но ведь можно, например, присвоить числам веса. Тоесть скажем при выпадении 1 мы перебросим с вероятностью 2/3 а при выпадении 6 перебросим с вероятностью 1/3. Таким образом возможных стратегий уже бесконечное количество и перебрать все не выйдет. Соответственно не очевидно почему всё таки предложенная стратегия оптимальна
Если с весами, то да - стратегий бесконечное число и это скорее уже задача оптимизации получается. Но кажется, что добавление весов немного (сильно) меняет условие, т.е. это довольно таки серьезный пункт, радикально меняющий задачу. Выбранная стратегия оптимальна именно в исходной постановке - без дополнительных условий. Хотя с весами интересно очень - особенно на техсобесе такое получить и попытаться в условиях стресса придумать решение)
@@dsmlenjoyer я вполне уверен что такая интерпритация условия никак не меняет ответ, просто его становится сложнее обосновать
@@dsmlenjoyer в условии спрашивают про стратегию - нет ограничений на то, какая она может быть. Если выпала тройка, то надо обосновать, что если я хочу в этом случае перебрасывать в половине случаев, не будет ли это лучше, чем всегда.
Так если перебрасывать всегда, то матожидание равно 3.5. а если перебрасывать только при количестве очков, меньшем 3.5, то в итоге будет 4.25
Это легко показать с помощью симуляций. Записал видео с методом Монте Карло и там эта задача разобрана также
Довольно простая задача, но было интересно. Спасибо за разбор!
Спасибо за отзыв) будут и другие - на алгоритмы, в том числе)