Forwarded from Поступашки - ШАД, Стажировки и Магистратура
Эти пет проекты должен сделать каждый ML специалист
Устроиться можно попасть и без проектов, но если у вас их нет, то мл кейсы будут решаться неуверенно и на финалах будете выглядеть слабее других. Никто не ждет гениального проекта с инфраструктурой— реализовать какие-то бейзлайны и понимать специфику задач уже достаточно для стажера и джуна.
Уже делали подобную подборку для аналитиков здесь, советую присмотреться.
1. Кредитный скоринг
Стоит ли давать кредит— довольно популярная задача и отличный выбор для новчиков, чтобы самостоятельно проделать все этапы. Сначала берем любой датасет на kaggle по запросу Credit Scoring. Проводим EDA, генерируем гипотезы, фичи, готовим данные для модели и делаем бейзлайн: логистическая регрессия. Затем уже можно попробовать случайный лес, градиентный бустинг, KNN или еще что по вкусу— сравниваем метрики. И на последок не забываем проанализировать результаты и культурно презентовать. Можно провести АВ тест на смой первой модели.
Все варианты решения и реализации можно найти в интернетах: GitHub, Хабр. Очень полезным будет посмотреть всякие выступления на конференциях по этой теме для вдохновения, да и это очень поможет на мл кейсах.
2. Наивный Байесовский классификатор (НБК)
Для конкретики будем классифицировать письма на спам. Опять же обработаем данные: удаляем числа, знаки препинания, стоп-слова, стемминги, лемматизацию.
Объединяем все методы предварительной обработки и создаём словарь слов и счётчик каждого слова в наборе данных для обучения:
1. Вычисляем вероятность для каждого слова в тексте и отфильтровываем слова со значением вероятности меньше порогового. Такие слова будут нерелевантными.
2. Для каждого слова в словаре создаём вероятность, что это слово окажется в спаме. Определяем условную вероятность для использования её в НБК.
3. Вычисляем прогнозируемый результат с помощью условных вероятностей.
НБК реализовать не сложно. Куда интересней погрузиться во всю теорию, которая за этим стоит, в вероятностные модели. К тому же, кейс фильтрации спама и подобного часто встречается на собесах.
3. MLOps
Можно наладить какой-то минимальный прод для проектов: например телеграм бот или FastAPI. Можно еще автоматизировать пайплайн с помощь AirFlow и попробовать запустить инфраструктуру не только локально, но и облаке. Конечно нужно будет поизучать Docker, Cuber, Hadoop, Spark, HDFS, Kafka. Но на самом деле ничего трудного— после нашего курса дата инженер будете делать такие вещи по щелчку пальцев.
4. Ранжирование и матчинг
Для начала лучше пробежаться глазами по статье и посмотреть, что пишут в интернетах. Можно выделить три подхода к задаче: поточечный, попарный, списочный. Советую начать с первого как самого простого. Для конкретики будем предсказать оценку релевантности для запросов тестового датасета. Здесь можно кстати поучиться парсить web-страниц и собирать сырые данные, размечать их с помощью какого-нибудь Яндекс-Толока. Делаем регрессию, а затем Random Forest Regressor, XGBoost, lightGBM, CatBoost.
Совсем продвинутые могут попробовать языковые модели в духе FastText, Word2Vec, DSSM и более сложные: BERT, можно даже попробовать архитектуру трансформеров.
5. Рекомендашки
Очень популярный кейс на собесах. Для начала лучше пробежаться глазами по этому разделу и посмотреть, что пишут в интернетах. Затем начинаем реализовывать самое простое как бейзлайн, например, content-based рекомендации, KNN. Дальше можно попробовать факторизации матрицы рейтингов по svd разложению или по более эффективной als архитектуре и функции ошибок bpr. Затем можно попробовать W2V подход, чтобы использовать последовательность взаимодействий пользователя для построения рекомендации следующего предмета.
Для знатоков DL можно попробовать DSSM, SasRec/Bert4Rec, MultVAE, Merlin или графовые нейронки: GCN-подобные архитектуры.
Также стоит попробовать обучение с подкреплением: многоруких бандитов.
Ну и конечно рекомендательные системы можно попробовать рассмотреть как задачу ранжирования.
Устроиться можно попасть и без проектов, но если у вас их нет, то мл кейсы будут решаться неуверенно и на финалах будете выглядеть слабее других. Никто не ждет гениального проекта с инфраструктурой— реализовать какие-то бейзлайны и понимать специфику задач уже достаточно для стажера и джуна.
Уже делали подобную подборку для аналитиков здесь, советую присмотреться.
1. Кредитный скоринг
Стоит ли давать кредит— довольно популярная задача и отличный выбор для новчиков, чтобы самостоятельно проделать все этапы. Сначала берем любой датасет на kaggle по запросу Credit Scoring. Проводим EDA, генерируем гипотезы, фичи, готовим данные для модели и делаем бейзлайн: логистическая регрессия. Затем уже можно попробовать случайный лес, градиентный бустинг, KNN или еще что по вкусу— сравниваем метрики. И на последок не забываем проанализировать результаты и культурно презентовать. Можно провести АВ тест на смой первой модели.
Все варианты решения и реализации можно найти в интернетах: GitHub, Хабр. Очень полезным будет посмотреть всякие выступления на конференциях по этой теме для вдохновения, да и это очень поможет на мл кейсах.
2. Наивный Байесовский классификатор (НБК)
Для конкретики будем классифицировать письма на спам. Опять же обработаем данные: удаляем числа, знаки препинания, стоп-слова, стемминги, лемматизацию.
Объединяем все методы предварительной обработки и создаём словарь слов и счётчик каждого слова в наборе данных для обучения:
1. Вычисляем вероятность для каждого слова в тексте и отфильтровываем слова со значением вероятности меньше порогового. Такие слова будут нерелевантными.
2. Для каждого слова в словаре создаём вероятность, что это слово окажется в спаме. Определяем условную вероятность для использования её в НБК.
3. Вычисляем прогнозируемый результат с помощью условных вероятностей.
НБК реализовать не сложно. Куда интересней погрузиться во всю теорию, которая за этим стоит, в вероятностные модели. К тому же, кейс фильтрации спама и подобного часто встречается на собесах.
3. MLOps
Можно наладить какой-то минимальный прод для проектов: например телеграм бот или FastAPI. Можно еще автоматизировать пайплайн с помощь AirFlow и попробовать запустить инфраструктуру не только локально, но и облаке. Конечно нужно будет поизучать Docker, Cuber, Hadoop, Spark, HDFS, Kafka. Но на самом деле ничего трудного— после нашего курса дата инженер будете делать такие вещи по щелчку пальцев.
4. Ранжирование и матчинг
Для начала лучше пробежаться глазами по статье и посмотреть, что пишут в интернетах. Можно выделить три подхода к задаче: поточечный, попарный, списочный. Советую начать с первого как самого простого. Для конкретики будем предсказать оценку релевантности для запросов тестового датасета. Здесь можно кстати поучиться парсить web-страниц и собирать сырые данные, размечать их с помощью какого-нибудь Яндекс-Толока. Делаем регрессию, а затем Random Forest Regressor, XGBoost, lightGBM, CatBoost.
Совсем продвинутые могут попробовать языковые модели в духе FastText, Word2Vec, DSSM и более сложные: BERT, можно даже попробовать архитектуру трансформеров.
5. Рекомендашки
Очень популярный кейс на собесах. Для начала лучше пробежаться глазами по этому разделу и посмотреть, что пишут в интернетах. Затем начинаем реализовывать самое простое как бейзлайн, например, content-based рекомендации, KNN. Дальше можно попробовать факторизации матрицы рейтингов по svd разложению или по более эффективной als архитектуре и функции ошибок bpr. Затем можно попробовать W2V подход, чтобы использовать последовательность взаимодействий пользователя для построения рекомендации следующего предмета.
Для знатоков DL можно попробовать DSSM, SasRec/Bert4Rec, MultVAE, Merlin или графовые нейронки: GCN-подобные архитектуры.
Также стоит попробовать обучение с подкреплением: многоруких бандитов.
Ну и конечно рекомендательные системы можно попробовать рассмотреть как задачу ранжирования.
❤10🔥4👍2
Вот и разбор аналитики на стажировку в Яндекс! Обязательно делимся с друзьями. Ждём 5 тыс просмотров на ютуб ролике и выкладываем МЛ. Советую поторопиться: контест вот-вот обновят.
Смотрим! Смотрим! https://www.youtube.com/watch?v=k4C9aWR6YJ4
Смотрим! Смотрим! https://www.youtube.com/watch?v=k4C9aWR6YJ4
YouTube
Разбор аналитики на стажировку в Яндекс!! (Весна-Лето 2024)
Подробней о курсах: https://news.1rj.ru/str/postypashki_old/1076
Код и условия задач: https://news.1rj.ru/str/botalkaaa/39301
Код и условия задач: https://news.1rj.ru/str/botalkaaa/39301
❤4
Задача Яндекса.
В последние дни все чаще встречается задача:
Дается массив из целых чисел длины n > 1. Вы должны вернуть минимальное произведение, которое можно получить из двух чисел массива. (позиции чисел должны быть уникальны)
Решение:
Конечно нужно решать за линию.
Пусть max1, max2 - два максимальных числа из массива, при этом max1 >= max2.
Пусть min1, min2 - два минимальных числа из массива, при том min1 <= min2.
Если min1 <= 0 и max1 >= 0 то ответом будет min1 * max1
Иначе мы получаем два варианта:
1) Все элементы положительные, в таком случае нужно вернуть min1 * min2
2) Все элементы отрицательные, в таком случае вернем max1 * max2
Именно так лаконично рассмотреть случае.
Частые ошибки:
Не умение находить два максимальных/два минимальных числа за один проход циклом за линию.
Запутаться со случаями, когда в массиве нет отрицательного/положительного числа, но есть ноль.
Время работы алгоритмы O(n)
В последние дни все чаще встречается задача:
Дается массив из целых чисел длины n > 1. Вы должны вернуть минимальное произведение, которое можно получить из двух чисел массива. (позиции чисел должны быть уникальны)
Решение:
Пусть max1, max2 - два максимальных числа из массива, при этом max1 >= max2.
Пусть min1, min2 - два минимальных числа из массива, при том min1 <= min2.
Если min1 <= 0 и max1 >= 0 то ответом будет min1 * max1
Иначе мы получаем два варианта:
1) Все элементы положительные, в таком случае нужно вернуть min1 * min2
2) Все элементы отрицательные, в таком случае вернем max1 * max2
Именно так лаконично рассмотреть случае.
Частые ошибки:
Не умение находить два максимальных/два минимальных числа за один проход циклом за линию.
Запутаться со случаями, когда в массиве нет отрицательного/положительного числа, но есть ноль.
Время работы алгоритмы O(n)
❤29🔥6👏1😁1
Яндекс обновил контест на стажировку осень-зима. Задания уже лежат тут, там же можно их обсудить вместе с админами. И конечно разбор нового контеста будет на наших курсах, так что присмотритесь к ним.
Стажировка в Яндексе - самая крупная стажировка из всех, больше всего мест и их точно хватит на всех. Весьма прозрачный отбор, о котором писали здесь. Для успешного прохождения на собесы обычно достаточно решить 2/3 заданий, а в прошлый раз только половину.
Также не забываем посмотреть полный цикл собесов в Яндекс наших учеников:
Бэкенд
Аналитика
Машинное обучение
Стажировка в Яндексе - самая крупная стажировка из всех, больше всего мест и их точно хватит на всех. Весьма прозрачный отбор, о котором писали здесь. Для успешного прохождения на собесы обычно достаточно решить 2/3 заданий, а в прошлый раз только половину.
Также не забываем посмотреть полный цикл собесов в Яндекс наших учеников:
Бэкенд
Аналитика
Машинное обучение
👍7❤3🔥2
Яндекс собирается выделить ещё больше мест в ШАД, а значит попасть туда станет ещё проще. Лучше начинать потихоньку-понемногу готовиться уже сейчас. Вместе с МА разбираем примерчик из собеса прошлого набора, чтобы вы оценили свои силы!
Смотрим! Решаем! https://youtu.be/DxfV8JdqQlo
Смотрим! Решаем! https://youtu.be/DxfV8JdqQlo
YouTube
ТЕБЯ ВОЗЬМУТ В ЯНДЕКС, ЕСЛИ ТЫ РЕШИШЬ ЭТУ ЗАДАЧУ!
Наш ТГК: https://news.1rj.ru/str/postypashki_old
Наша группа ВК: https://vk.com/postypashki
Наша группа ВК: https://vk.com/postypashki
❤4👍2🔥2
Задача Яндекса.
Новая задача в Яндексе, которая уже попалась 5 моим знакомым. Советую, если в скором времени собираетесь в Яндекс, разобрать эту задачу.
Вот сама задача
Если вкратце то дается набор точек на плоскости и спрашивается, правда ли существует линия параллельная оси 'y', которая симметрично отражает данные точки.
Решение также по ссылке можно увидеть.
Вопросы, которые задают на собеседование:
1) Вот вы поняли что координата прямой через которую делается отражения имеет координату (minX + maxX) / 2, но почему этого деления нету в коде ?
Тут два варианта, либо вам придется писать деление на два в вашем коде и работать с double (может дробями) либо не делить.... Но если вы решаете не делить то надо объяснить почему.
А ответ следующий, если прямая через которую делаем отражение имеет координату s, тогда точка (x, y) отразится в точку (2*s-x, y).
Заметим что мы s умножаем на два!!!
Так что мы могли бы взять s = (minX + maxX) и говорить что точка отражается на позицию (s-x, y).
Если вы все таки решили делить на два в своем коде то это приведет к дополнительным вопросом с eps... Мой вам совет, если есть возможность не делить то лучше не делить.
2) В Яндексе скорее всего попросят учитывать повторы, то есть если две точки лежат на позиции [-1, 1] и одна точка на позиции [1, 1] то ответ False, так как одна точка останется без пары. Вам придется использовать хеш-таблицу вместо set чтобы учесть такой кейс.
Новая задача в Яндексе, которая уже попалась 5 моим знакомым. Советую, если в скором времени собираетесь в Яндекс, разобрать эту задачу.
Вот сама задача
Если вкратце то дается набор точек на плоскости и спрашивается, правда ли существует линия параллельная оси 'y', которая симметрично отражает данные точки.
Решение также по ссылке можно увидеть.
Вопросы, которые задают на собеседование:
Тут два варианта, либо вам придется писать деление на два в вашем коде и работать с double (может дробями) либо не делить.... Но если вы решаете не делить то надо объяснить почему.
А ответ следующий, если прямая через которую делаем отражение имеет координату s, тогда точка (x, y) отразится в точку (2*s-x, y).
Заметим что мы s умножаем на два!!!
Так что мы могли бы взять s = (minX + maxX) и говорить что точка отражается на позицию (s-x, y).
Если вы все таки решили делить на два в своем коде то это приведет к дополнительным вопросом с eps... Мой вам совет, если есть возможность не делить то лучше не делить.
2) В Яндексе скорее всего попросят учитывать повторы, то есть если две точки лежат на позиции [-1, 1] и одна точка на позиции [1, 1] то ответ False, так как одна точка останется без пары. Вам придется использовать хеш-таблицу вместо set чтобы учесть такой кейс.
🔥7❤6👍5👏1
Готовиться в ШАД стало ещё проще: специально для вас подготовили разбор экзамена 2024 года! Смотрим, решаем и голосуем за публикацию на Хабре, если хотите больше таких статей!
https://habr.com/ru/articles/841858/
https://habr.com/ru/articles/841858/
Хабр
Полный разбор экзамена в ШАД 2024 года
Перед тем, как смотреть решение обязательно попробуйте одолеть самостоятельно! Автор решений: телеграм канал "Поступашки — ШАД, Стажировки и Магистратура" . Задача 1 (Линейность) Рассмотрим...
❤4🔥4
Т-банк открыл контест на стажировку осень-зима. Задания уже лежат тут, там же их можно обсудить вместе с админом. И конечно разбор нового контеста будет на наших курсах, так что присмотритесь к ним.
Стажировка в Т-банке - самая крупная стажировка после Яндекса по количеству мест. В целом решает не сколько баллы за экзамены, сколько "ваш социальный рейтинг", анкета — подробней смотрим здесь. После контестов зовут на собес: он дикая халява, если хоть немного пробовали вкатиться в специальность.
Стажировка в Т-банке - самая крупная стажировка после Яндекса по количеству мест. В целом решает не сколько баллы за экзамены, сколько "ваш социальный рейтинг", анкета — подробней смотрим здесь. После контестов зовут на собес: он дикая халява, если хоть немного пробовали вкатиться в специальность.
❤8🔥2
Задача с Тинькофф.
Назовем число хорошим, если число является составным, а количество делителей простое число.
Найти количество хороших чисел на диапазоне [l, r] 1<=l<=r<=10^14.
Решение:
Заметим, что число n называется хорошим, если n=p^a
Где p-простое число и a>1.
Для тех кто не знают тут надо смотреть формулу количество делителей, и подумать в каких ситуациях это выражение простое.
Стоит обратить внимания, что a+1 должно быть простым числом.
Отсюда следует что p<=10^7. Так как a>1.
С помощью решето Эратосфена найдем все простые числа на отрезке [1, 1е7]
Переберем каждое простое число - так мы зафиксируем ‘p’. Осталось найти все такие ‘a’, что
l<=p^a<=r
a>1
a+1=простое число
Если вы будете перебирать ‘a’ в цикле (или раз за разом умножать переменную на p) то у вас будет переполнение типа и получите WA. Например возьмем p=1e7 когда будете возводить в третью степень произойдет переполнение. Да вы могли остановиться заранее и не возводить в степень, но как это понять ?
Нужно поступить иначе, давайте найдем максимальную степень b, что
p^b<=r, для этого мы просто будем делить r на p пока не станет равным нулю, от количество делений мы можем найти b.
Аналогично найдем максимальную степень d, что
p^d<=l-1.
Получаем, что нас интересует в качестве степень ‘a’ все простые числа на [d+1, b]. Благо этот отрезок очень маленький и можно честно перебрать там, проверяю что число простое используя посчитанную решето.
Назовем число хорошим, если число является составным, а количество делителей простое число.
Найти количество хороших чисел на диапазоне [l, r] 1<=l<=r<=10^14.
Решение:
Где p-простое число и a>1.
Для тех кто не знают тут надо смотреть формулу количество делителей, и подумать в каких ситуациях это выражение простое.
Стоит обратить внимания, что a+1 должно быть простым числом.
Отсюда следует что p<=10^7. Так как a>1.
С помощью решето Эратосфена найдем все простые числа на отрезке [1, 1е7]
Переберем каждое простое число - так мы зафиксируем ‘p’. Осталось найти все такие ‘a’, что
l<=p^a<=r
a>1
a+1=простое число
Если вы будете перебирать ‘a’ в цикле (или раз за разом умножать переменную на p) то у вас будет переполнение типа и получите WA. Например возьмем p=1e7 когда будете возводить в третью степень произойдет переполнение. Да вы могли остановиться заранее и не возводить в степень, но как это понять ?
Нужно поступить иначе, давайте найдем максимальную степень b, что
p^b<=r, для этого мы просто будем делить r на p пока не станет равным нулю, от количество делений мы можем найти b.
Аналогично найдем максимальную степень d, что
p^d<=l-1.
Получаем, что нас интересует в качестве степень ‘a’ все простые числа на [d+1, b]. Благо этот отрезок очень маленький и можно честно перебрать там, проверяю что число простое используя посчитанную решето.
🔥17❤5🤔3👍2
ШОК! Админ надел платье, туфельки и пошел в офис Т-банка записывать свой тикток...
Распространяем: https://youtube.com/shorts/99VxC8WiaCo
Распространяем: https://youtube.com/shorts/99VxC8WiaCo
YouTube
Стажировка в Т-банке (Тинькофф Старт)
#shorts #тинькофф #т-банк #стажировки #карьера
🥰9❤3🔥1🤓1💅1
Вот и разбор программирования на стажировку в Тинькофф! Обязательно делимся с друзьями. Очень понравилась ваша активность по прошлому видосу, товарищи, поэтому ждём 9 тыс просмотров на ютуб ролике и выкладываем разбор контеста на стажировку в Яндекс.
Смотрим! Смотрим! https://youtu.be/xwc1gLcCras
Смотрим! Смотрим! https://youtu.be/xwc1gLcCras
YouTube
Разбор программирования на стажировку в Т-банк!!
Задания, обсудить решения: https://news.1rj.ru/str/botalkaaa/44236
Как гарантировано затащить собес: https://news.1rj.ru/str/postypashki_old/1198
Как гарантировано затащить собес: https://news.1rj.ru/str/postypashki_old/1198
❤9🔥2👍1
Задача Яндекса.
За последние два месяца эта задача попадалась много раз.
Дается массив из 0 и 1.
Гарантируется что есть хотя бы один ноль и одна единица. Найти такую позицию нуля, что ближайшее расстояние до единицы максимальная.
Решение:
Во первых поймем, что между двумя единицами нужно выбрать позицию посередине.
…1,0,0,0,0,0,1,…..
Значит мы можем идти слева направо, хранить в переменной last последнюю позицию единицы. Если мы сейчас стоим в позиции i и в этой позиции единица, тогда мы пытаемся поставить единицу в позицию (i+last)/2, расстояния до ближайшей единицы равно min( (i+last)/2-last, i- (i+last)/2)
обновляем ответ если это расстояние больше чем нынешний ответ.
Остается случай, когда последовательность начинается с нуля или заканчивается нулем.
У многих проблема возникает в реализации задачи, так как пытаются фиксировать позицию нуля, потом искать слева ближайшую единицу и справа, что конечно сложнее реализовать.
За последние два месяца эта задача попадалась много раз.
Дается массив из 0 и 1.
Гарантируется что есть хотя бы один ноль и одна единица. Найти такую позицию нуля, что ближайшее расстояние до единицы максимальная.
Решение:
…1,0,0,0,0,0,1,…..
Значит мы можем идти слева направо, хранить в переменной last последнюю позицию единицы. Если мы сейчас стоим в позиции i и в этой позиции единица, тогда мы пытаемся поставить единицу в позицию (i+last)/2, расстояния до ближайшей единицы равно min( (i+last)/2-last, i- (i+last)/2)
обновляем ответ если это расстояние больше чем нынешний ответ.
Остается случай, когда последовательность начинается с нуля или заканчивается нулем.
У многих проблема возникает в реализации задачи, так как пытаются фиксировать позицию нуля, потом искать слева ближайшую единицу и справа, что конечно сложнее реализовать.
🔥21😭9❤4👍1👏1
Вот и интервью с настоящей легендой! У нас в гостях ДиМашина, поступивший на физтех со 127 баллами ЕГЭ. Почему именно физтех? Какие учебные лафхаки работают? Почему нравится бить людей? Ну и прямо на ваших экранах, товарищи, Дмитрий поступит в ШАД!
Смотрим! Смотрим! https://youtu.be/5l7O2ToX1_8
Смотрим! Смотрим! https://youtu.be/5l7O2ToX1_8
YouTube
ДиМашина против ШАД!! (Школа Анализа Данных от Яндекса)
наш телеграм канал: t.me/postypashki_old
телеграм канал Димы: t.me/DiMashinaft
ютуб канал Димы: youtube.com/@DiMashina2005
телеграм канал Димы: t.me/DiMashinaft
ютуб канал Димы: youtube.com/@DiMashina2005
💊23🤣13❤7
Вот и новый ролик вместе с Михаилом Абрамовичем! Разбираем миленькую задачку (решить в силах даже дошкольник) из собеседования в ШАД последнего набора и объясняем, почему ШАД - это лютая база и как туда поступить.
Смотрим! Смотрим! https://youtu.be/Kcli5gW_uAQ
Смотрим! Смотрим! https://youtu.be/Kcli5gW_uAQ
YouTube
Почему ШАД - это БАЗА? Нереально красивая задача!
Наш ТГК: https://news.1rj.ru/str/postypashki_old
❤7
Задача Яндекса/Шада.
Задача набирает обороты, рекомендую обратить на нее внимания всем кто готовится к собеседованию.
Дается два массива a, и b. Найти количество подотрезков в массиве а, что в этих подотрезках существуют подпоследовательности равные массиву b.
Решение:
Условия задачи сложнее чем решение. Не пытайтесь придумать решение быстрее чем за квадрат
Решим за квадрат: Переберем левую границу отрезка l, 0<=l<=n-1. Стартуем с этой позиции циклом i, поддерживая сколько первых элементов смогли собрать из массива b.
Пусть собрали cnt, тогда мы увеличиваем счетчик, если a[i]=b[cnt]. Как только собрали cnt=b.size, для фиксированного l, в качестве правой границы отрезка подойдут i, i+1, …, b.size-1. Мы можем просто в ответ прибавить b.size-i.
Дальше сдвигаем l и применяем тот же алгоритм
Задача набирает обороты, рекомендую обратить на нее внимания всем кто готовится к собеседованию.
Дается два массива a, и b. Найти количество подотрезков в массиве а, что в этих подотрезках существуют подпоследовательности равные массиву b.
Решение:
Решим за квадрат: Переберем левую границу отрезка l, 0<=l<=n-1. Стартуем с этой позиции циклом i, поддерживая сколько первых элементов смогли собрать из массива b.
Пусть собрали cnt, тогда мы увеличиваем счетчик, если a[i]=b[cnt]. Как только собрали cnt=b.size, для фиксированного l, в качестве правой границы отрезка подойдут i, i+1, …, b.size-1. Мы можем просто в ответ прибавить b.size-i.
Дальше сдвигаем l и применяем тот же алгоритм
❤12👍3🔥2👌2👏1
Задача с компании HFT (немогу сказать с какой именно)
Вам дается n строк, где число n четное. Ваша задача найти наибольшее число k, такое что существует способ разделения строк на пары, что в каждой паре хотя бы k первых символов совпадает.
Например:
4
abcd
abbb
efaa
efcd
ответ 2.
Решение:
Самое простое что приходит в голову это забинарить число k, дальше записать в словарь первые k букв всех слов, дальше посмотреть что значения всех ключей в нашей хеш-таблице четное число. Такое решение работает за O(N * logK), где N - сумма длин всех строк, K - максимальная длина строки.
Попросят решить задачу за O(N)
Чтобы решить задачу за линию вам понадобиться знания по структуре БОР. Если вы не знает что такое БОР то приходити на наши курсы мы вас всему научим.
И так давайте запишем все слова в БОР - это займет у нас O(N) времени. Давайте потом пройдемся по бору и обходом dfs и выпишем все значения в терминальных вершинках бора в векторв vt.
Зачем мы так сделали ????
Посмотрите внимательные на строки которые находятся на позициях vt[i] и vt[i-1] (i-четное) вы можете заметить, что для строкм на позиции vt[i-1] лучше всего подходит строка на позиции vt[i], осталные все строки имеют общий префикс меньшей длины.
Так получается чисто из за обхода БОРа с помощью dfs. Если детальнее хотите понять этот момент то приглашаю вас на курсы.
И так вот у вас есть вектор vt, вы просто проходитесь по четным i и смотрите наибольший общий префикс для строк на позиции vt[i] и vt[i-1] обновляете ответ через минимум по всем таким общим префиксам.
Решение за O(N).
Код в комментариях.
Вам дается n строк, где число n четное. Ваша задача найти наибольшее число k, такое что существует способ разделения строк на пары, что в каждой паре хотя бы k первых символов совпадает.
Например:
4
abcd
abbb
efaa
efcd
ответ 2.
Решение:
Попросят решить задачу за O(N)
Чтобы решить задачу за линию вам понадобиться знания по структуре БОР. Если вы не знает что такое БОР то приходити на наши курсы мы вас всему научим.
И так давайте запишем все слова в БОР - это займет у нас O(N) времени. Давайте потом пройдемся по бору и обходом dfs и выпишем все значения в терминальных вершинках бора в векторв vt.
Зачем мы так сделали ????
Посмотрите внимательные на строки которые находятся на позициях vt[i] и vt[i-1] (i-четное) вы можете заметить, что для строкм на позиции vt[i-1] лучше всего подходит строка на позиции vt[i], осталные все строки имеют общий префикс меньшей длины.
Так получается чисто из за обхода БОРа с помощью dfs. Если детальнее хотите понять этот момент то приглашаю вас на курсы.
И так вот у вас есть вектор vt, вы просто проходитесь по четным i и смотрите наибольший общий префикс для строк на позиции vt[i] и vt[i-1] обновляете ответ через минимум по всем таким общим префиксам.
Решение за O(N).
Код в комментариях.
🔥11👍2🤷♂1❤1
Полный цикл отбора в HFT (компания Teza)
Товарищи, понравилась ваша реакция под прошлым постом, потому специально для вас попросил выпускника наших курсов рассказать про отбор в одну из самых популярных компаний HFT, в которую вполне реально попасть из РФ.
Далее представлен слегка отредактированный текст нашего выпускника.
Три года назад окончил мехмат МГУ. Во время учебы занимался спортивным программированием (но не так успешно). После университета пошел разработчиком. Успел поработать на Python и C++. В какой-то день я решил поменять свою жизнь (расстался с девушкой) и искал то, что будет интересно для меня, и наткнулся на HFT. Чуть-чуть поизучав, я понял, что это то, что нужно. Высокие нагрузки на работе, применение математики, С++, алгоритмов, хорошая зарплата.
Начал копать HFT компании и нашел немало, но, к сожалению, я не проходил скрининг резюме. Позже наткнулся на HR в Linkedin, которая работала в ереванском Teza. Она посмотрела мое резюме и дала пару советов, как улучшить. Так что ребятам, которые планируют в будущем подаваться в HFT компании, да и не только туда, советую поработать над своим CV.
Она предложила мне пройти собеседования на SOFTWARE DEVELOPER в QUANTITATIVE команду. В целом это не то, что я хотел, но решил попробовать раз уж квантом на тот момент пока никуда не взяли.
Пока подавался в компании, я параллельно готовился по линейной алгебре, теории вероятности и по алгоритмам.
По алгоритмам я попросил Тимура подготовить меня, брал у него менторство и три месяца плотно решали много задач.
По математике также готовился по курсам Поступашек (кстати в это воскресение уже стартует теор вер).
Всего было три этапа.
Первый этап
Скинули ссылку hackerrank, в котором были две задачи. Обе задачи были на алгоритмы, и надо было решить на время. У них был свой практоринг.
Задача 1: дается два массива чисел, проверить, правда ли одна является подпоследовательностью другой.
Задача 2: на плоскости даются n городов (просто точки). Дальше даются q запросов. Каждый запрос — это точка (x, y), ваша задача — найти ближайший город к (x, y), но чтобы у них хотя бы одна координата была равна. Кстати, подобные задачи с решениями постоянно выкладываются здесь, товарищи.
Решил эти две задачи и пригласили на следующий этап.
Второй этап
Собеседование в котором была только математика. Ниже я перечислю вопросы, которые помню.
-Чему равен ранг x*x^t где x - вектор столбец.
-Найти все собственные значения для x*x^t
-Какие могут быть характеристические корни у матрицы A, если A^4 = A^2.
-Бросают кубик, посчитать мат ожидания и дисперсию числа выпавших чисел.
-Бросают два n гранных кубика, какова вероятность что суммарно выпадет k очков.
-Были теоретические вопросы по распределениям, много спрашивали про нормальное распределение.
Это не весь список вопросов, так как уточняющие вопросы возникали и в ходе ответа.
Пригласили на третий собес:
Третий этап
Уже по кодингку и хард скилам.
-Начался разговор с баз данных, какие использовал, что делал. Использовал ли Postgres.
-Airflow, Hadoop
-Был ли опыт в ML
-На мое удивление дали задачку на numpy)
-По большей части спрашивали Python и С++.
В целом по языкам программирования вопросы были не сложные, стандартные. Может из-за того, что у меня был опыт работы.
Спрашивали про выделения памяти, про шаблоны, версии С++, ООП на питон и на плюсах. Не было ничего сверхъестественного.
Подчеркиваю, я не собесился на кванта. У квантов достаточно жесткий собес по плюсам.
В целом третий этап собеса будет несложным для человека, который имел опыт работы на С++ и python.
Предложили оффер и релокацию, но к этому моменту меня позвали в другое место с более лучшими условиями. А куда именно узнаете в следующем посте, товарищи. Давайте соберем 700 огоньков, чтобы понимать: тема для вас интересна и ее нужно продолжать.
Товарищи, понравилась ваша реакция под прошлым постом, потому специально для вас попросил выпускника наших курсов рассказать про отбор в одну из самых популярных компаний HFT, в которую вполне реально попасть из РФ.
Далее представлен слегка отредактированный текст нашего выпускника.
Три года назад окончил мехмат МГУ. Во время учебы занимался спортивным программированием (но не так успешно). После университета пошел разработчиком. Успел поработать на Python и C++. В какой-то день я решил поменять свою жизнь (расстался с девушкой) и искал то, что будет интересно для меня, и наткнулся на HFT. Чуть-чуть поизучав, я понял, что это то, что нужно. Высокие нагрузки на работе, применение математики, С++, алгоритмов, хорошая зарплата.
Начал копать HFT компании и нашел немало, но, к сожалению, я не проходил скрининг резюме. Позже наткнулся на HR в Linkedin, которая работала в ереванском Teza. Она посмотрела мое резюме и дала пару советов, как улучшить. Так что ребятам, которые планируют в будущем подаваться в HFT компании, да и не только туда, советую поработать над своим CV.
Она предложила мне пройти собеседования на SOFTWARE DEVELOPER в QUANTITATIVE команду. В целом это не то, что я хотел, но решил попробовать раз уж квантом на тот момент пока никуда не взяли.
Пока подавался в компании, я параллельно готовился по линейной алгебре, теории вероятности и по алгоритмам.
По алгоритмам я попросил Тимура подготовить меня, брал у него менторство и три месяца плотно решали много задач.
По математике также готовился по курсам Поступашек (кстати в это воскресение уже стартует теор вер).
Всего было три этапа.
Первый этап
Скинули ссылку hackerrank, в котором были две задачи. Обе задачи были на алгоритмы, и надо было решить на время. У них был свой практоринг.
Задача 1: дается два массива чисел, проверить, правда ли одна является подпоследовательностью другой.
Задача 2: на плоскости даются n городов (просто точки). Дальше даются q запросов. Каждый запрос — это точка (x, y), ваша задача — найти ближайший город к (x, y), но чтобы у них хотя бы одна координата была равна. Кстати, подобные задачи с решениями постоянно выкладываются здесь, товарищи.
Решил эти две задачи и пригласили на следующий этап.
Второй этап
Собеседование в котором была только математика. Ниже я перечислю вопросы, которые помню.
-Чему равен ранг x*x^t где x - вектор столбец.
-Найти все собственные значения для x*x^t
-Какие могут быть характеристические корни у матрицы A, если A^4 = A^2.
-Бросают кубик, посчитать мат ожидания и дисперсию числа выпавших чисел.
-Бросают два n гранных кубика, какова вероятность что суммарно выпадет k очков.
-Были теоретические вопросы по распределениям, много спрашивали про нормальное распределение.
Это не весь список вопросов, так как уточняющие вопросы возникали и в ходе ответа.
Пригласили на третий собес:
Третий этап
Уже по кодингку и хард скилам.
-Начался разговор с баз данных, какие использовал, что делал. Использовал ли Postgres.
-Airflow, Hadoop
-Был ли опыт в ML
-На мое удивление дали задачку на numpy)
-По большей части спрашивали Python и С++.
В целом по языкам программирования вопросы были не сложные, стандартные. Может из-за того, что у меня был опыт работы.
Спрашивали про выделения памяти, про шаблоны, версии С++, ООП на питон и на плюсах. Не было ничего сверхъестественного.
Подчеркиваю, я не собесился на кванта. У квантов достаточно жесткий собес по плюсам.
В целом третий этап собеса будет несложным для человека, который имел опыт работы на С++ и python.
Предложили оффер и релокацию, но к этому моменту меня позвали в другое место с более лучшими условиями. А куда именно узнаете в следующем посте, товарищи. Давайте соберем 700 огоньков, чтобы понимать: тема для вас интересна и ее нужно продолжать.
🔥85❤5👍4⚡1
Intern week offer от Яндекса в самом разгаре! Для участия нужно решить контест до 4 ноября, его задания уже в нашей БОТАЛКЕ, там же можно обсудить задания вместе в админом.
Напомню, что в случае неудачного прохождения секций фриз на полгода сохраняется! Преимущество нынешнего week offer лишь в ускоренном прохождение отбора: меньше риск, что HR вдруг уйдет в отпуск и забудет вас передать коллеге, да и намного меньше шансов, что у вас у самого что-то случится(сессия, бросит девушка) и придется отложить прохождение отбора! Кстати задания контеста несложные, студенты наших курсов справляются с ними за 300 наносек😎😎
@algoses
Напомню, что в случае неудачного прохождения секций фриз на полгода сохраняется! Преимущество нынешнего week offer лишь в ускоренном прохождение отбора: меньше риск, что HR вдруг уйдет в отпуск и забудет вас передать коллеге, да и намного меньше шансов, что у вас у самого что-то случится(сессия, бросит девушка) и придется отложить прохождение отбора! Кстати задания контеста несложные, студенты наших курсов справляются с ними за 300 наносек😎😎
@algoses
Intern Week Offer
Ускоренный отбор на стажировку в Яндексе. Всего за семь дней вы успеете пройти алгоритмические секции, интервью с командами — и, если будет мэтч, получить долгожданный офер на стажировку
🔥3👍1🙊1
Набор на стажировку в VK проходит прямо сейчас, товарищи! Поэтому сегодня специально для вас пообщались с Иваном Нагайко, он пришел в компанию еще стажером, а вырос техлидом😎 Обсудили все секреты и лайфхаки Ивана, получилось очень интересно и полезно!
Смотрим! Смотрим! https://www.youtube.com/watch?v=eNwVeCNfZu0
Смотрим! Смотрим! https://www.youtube.com/watch?v=eNwVeCNfZu0
YouTube
Как из стажёра вырасти техлидом (личный пример Ивана Нагайко)
Податься на стажировку: https://internship.vk.company/internship
Наш телеграм: t.me/postypashki_old
Наш телеграм: t.me/postypashki_old
❤2👌2😁1
Media is too big
VIEW IN TELEGRAM
Курс по алгоритмам стартует уже в это вокресение (еще можно записаться)! Как материал для подготовки записаны вот такие вводные уроки, где разбираем всю необходимую теорию на конкретных примерах, задачах из того же самого ШАД. Такие вводные уроки дополняют и расширяют материал каждого занятия в 2 раза. Ведь Поступашки реально хотят научить ребят, дать им качественное образование, а не просто взять деньги и послать куда подальше!!
❤9🔥6
Стартовала регистрация на «Технокубок»!
Победа или призовое место дает бенефиты при поступлении в вуз: зачисление без экзаменов или 100 баллов за ЕГЭ по информатике. А еще участники соревнования смогут пообщаться с представителями МФТИ, МГТУ имени Н. Э. Баумана и экспертами VK на офлайн-площадках в финале.
Для участия важно знать математику и информатику, а также уметь программировать на С, С++, Java, С#, Python, Kotlin или Go. Подготовиться можно с помощью курса «Старт в олимпиадном программировании» от VK Education. Отборочные раунды пройдут уже 17 ноября, 8 и 22 декабря.
Всем участникам удачи!
Победа или призовое место дает бенефиты при поступлении в вуз: зачисление без экзаменов или 100 баллов за ЕГЭ по информатике. А еще участники соревнования смогут пообщаться с представителями МФТИ, МГТУ имени Н. Э. Баумана и экспертами VK на офлайн-площадках в финале.
Для участия важно знать математику и информатику, а также уметь программировать на С, С++, Java, С#, Python, Kotlin или Go. Подготовиться можно с помощью курса «Старт в олимпиадном программировании» от VK Education. Отборочные раунды пройдут уже 17 ноября, 8 и 22 декабря.
Всем участникам удачи!
🔥11