Алгоритмы - Собеседования, Олимпиады, ШАД – Telegram
Алгоритмы - Собеседования, Олимпиады, ШАД
11.4K subscribers
35 photos
7 videos
10 files
154 links
Номер заявления регистрацию в РКН: № 5731053751

Чат: @algoses_chat

По всем вопросам: @vice22821
Download Telegram
Какие языки ботать Backend разработчику

Если вы начинающий специалист, то здесь есть некий парадокс.
По-хорошему нужно покопаться в C++ / C, ведь они довольно низкоуровневые и с помощью этих языков можно лучше понять, как устроена память, некоторые процессоры, concurrency, да и немного покопаться в операционных системах. На этих языках можно поперекладывать сырые байтики, поставлять туда ассемблерных вставок, повызывать всякие syscall’ы, почитать код Linux ядрa - часто хорошие учебные курсы тесно связаны с данной парой языков, а выучить какой-либо язык после плюсов не составит труда.

На этих языках было написано много классического и они полезны для изучения и понимания, но на рынке на них довольно сложно найти вакансии, а нормальные вакансии - в особенности. Это касается и стажировок: на плюсах их очень мало. На ум приходят лишь что-то специфичное в духе Kaspersky, Quantitative research. В каком-то сезоне в Тинькофф открыли лишь 5 вакансий. В тот же Яндекс можно попасть, зная лишь С++, но на чистых плюсах вакансий реально немного и поиск может затянуться. Нередко по моим наблюдениям и скромному мнению плюсы используются там, где они не нужны, где легче было бы написать проект на Go.

Также, разработчику когда-нибудь нужно будет настрочить что-нибудь на Python: какой-нибудь тупой скриптец или же написать на нем тесты. Так что знать его тоже полезно. Но на вакансии, где вы будете писать только на Питоне лучше не идти: на нем никогда не будут писаться какие-то серьезные проекты. Если проект и написан на питоне, то скорее всего это либо какой-нибудь вялый питон джанго, либо какой-нибудь легаси проект. На такое не ведитесь — будете ощущать себя макакой!

Как мне кажется один из самых лучший языков для изучения — это Go. Сейчас все новые и крутые проекты пишутся на нем, с ним не так сложно найти работу, как на плюсах, он прост и красив в изучении, также полезен, если разобраться в том, как он устроен изнутри.
Касаемо поиска работа, например, у меня была ученица с питерского ПМИ ФКН, у которой за плечами был лишь годовой курс плюсов. Она быстро прошла все собесы на стажера Яндекс, но долго ждала, когда поставят финальные собесы. По итогу HR увидела на ее гитхабе какой-то скромный пет проект, написанный на Go и предложила попробоваться, сказав "у нас здесь так много вакансий на Go". Затем девушку ждал тупой собес с руководителем и релокейт в Москву.

Также, можно попробовать что-то поклацать на Java. Язык также "старый" и буквально любая микроволновка была написана на нем, поэтому с ним вы точно не пропадете. Если наступят тяжелые времена, то можно начать писать на нем моды для майнкрафта.

Все же, нужно понимать, что язык — это лишь инструмент. Не нужно его выбирать, как жену — одну на всю жизнь! Главное — знания и понимания того, как устроен компьютер и распределенные бекенд системы, инженерия. Всему этому мы уделяем большое внимание на нашем курсе по бэкенд разработке, ведь в основном, языки похожи друг на друга, поэтому перейти на новый язык на хорошем уровне для хорошего инженера— это дело максимум недели, а для выпускников наших курсе— дело двух минут!
13👍2🔥1😁1
Полный цикл отбора в Яндекс (МЛ 2024)

Сейчас студенты наших прошлых курсов под моим чутким сопровождением ломанулись проходить отборы в Яндекс, поэтому продолжаю радовать вас инсайдами и актуальными вопросами.
Далее представлен слегка отредактированный текст нашего выпускника.

Вступительный контест
Задания нашел тут, просто прорешал заранее и сдал, но зашли только 4 задачи. Первую и пятую мне решил ГПТ, только нужно было поправлять. Шестая просто посчитаит количество вхождений конкретных слов, а потом сортируем. Вторую мне скинул знакомый. Этого хватило, а знакомому хватило трех задач.

Кстати, товарищи, на курсе машинное обучение вы найдете подробный разбор (видео + код) этих задач.

МЛ секция
Сначала дали очень простую задачу на два указателя: в строке найти длину наибольшей подстроки, состоящей не более чем из двух уникальных символов. Я даже растерялся и начала копать не туда. Интервьюер предложил рассмотреть на примере и я сразу сообразил. Потом была простая задача по мл. Она разобрано здесь. И немного поспрашивали базу про классификацию, про линейную регрессию и регуляризацию.

Алгоритмическая секция

Первая задача: сжимать список целых чисел в диапазоны, которые там встречаются. Например, [1, 3, 2, 8, 11, 9, 0] -> "0-3, 8-9, 11".
Вторая задача: для множества точек на плоскости с целыми координатами определить есть ли у них вертикальная ось симметрии.
Для тех, кто в теме, задачи довольно баянистые. Их даже можно найти здесь.
Задачи я решил быстро и еще оставалось время, собеседующий дал мне задачу: написать бинарный поиск.

Дальше ждали собесы с командами.

Собес 1 (Яндекс Доставка)
Лайтово. Спросили просто про опыт, чем занимался. Поговорили про хакатоны, мои пет проекты. Мог только похвастаться кредитным скорингом и рекомендацией фильмов, которые я стырил и адаптировал по заветам Поступашек🙈😎.
Рассказали про себя и чем предстоит заниматься. Нужно выдумывать всякие фичи в катбуст, чтобы в реальном времени предсказывать приедет курьере или нет.

Собес 2 (Яндекс Деньги)
Здесь уже было потновато. Сначала попросили рассказать про случайный лес и градиентный бустинг, уточняющие вопросы по теории. Дальше попросили рассказать в общих чертах про АВ тесты и заострили внимание на ошибке 1го и 2го рода, p-value, мощность. Спрашивали про опыт работы в линуксе и написания скриптов на баше, попросили написать простой SQL запрос в блокнотике (есть табличка - фио, зарплата, отдел, надо вывести людей получающих минимальную зарплату в своем отделе). Затем был мл кейс: какие вопросы (из 100 имеющихся) задавать пользователю для идентификации мошенника. Чем-то подобным и предстоит заниматься в команде: по поведению пользователя на сайте и в приложении научиться понимать, бот это или нет. Поговорили про метрики классификации, а также про реализацию моего решения.
Вообще для подготовки к мл кейсам, помимо бота классической теории, советую смотреть всякие статьи на Хабре, конференции от Яндекса, Тинькофф и тд. Понятно, что в первую очередь смотреть выступления конкретной команды, с которой будет собес, и выступления левых команд, но в той же области.

Собес 3 (Яндекс Музыка)
Было много вопросов про метрики, какие знаю, физический смысл ROC-AUC. Дальше спросили: есть одна фича и один таргет, обучили регрессию, но весь тест лежит правее всего трейна— что выдаст линейная регрессия, KNN и случайный лес? И затем мл кейс, как сделать рекомендации плейлиста на сегодняшний день. Все основные повороты описаны здесь

В итоге три приглоса. На собесах ожидал хоть один вопрос по глубокому обучению, но его не было.
👍218
Вот и разбор алгоритмов на стажировку в Яндекс! Обязательно делимся с друзьями. Ждём 5 тыс просмотров на ютуб ролике и выкладываем аналитику.

Смотрим! Смотрим! https://youtu.be/AdfjZ4u8GLg
7🔥1🥱1
Задача для тех кто пишет на С++.
Это одна из задач, которая попалась во время собеседования.

Задача:
Вам приходят запросы двух видов.
1) Добавить в конец элемент 'x'
2) Удалить самое ранее добавленное число.
(По факту у нас очередь)

Вам можно пользоваться только одним std::vector. Но вам известно, что в любой момент времени в очереди могут находиться не более n чисел.

Имея один вектор размера не более n научитесь обрабатывать все запросы.

Решение:
Давайте создадим вектор a размера n. Будем циклически записывать числа в массив.
https://en.wikipedia.org/wiki/Circular_buffer
Вот такое вот решение господа

Думаю будем полезно всем кто будет проходить собес на С++.
🔥9👍32👏1
Эти пет проекты должен сделать каждый 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-подобные архитектуры.
Также стоит попробовать обучение с подкреплением: многоруких бандитов.
Ну и конечно рекомендательные системы можно попробовать рассмотреть как задачу ранжирования.
10🔥4👍2
Вот и разбор аналитики на стажировку в Яндекс! Обязательно делимся с друзьями. Ждём 5 тыс просмотров на ютуб ролике и выкладываем МЛ. Советую поторопиться: контест вот-вот обновят.

Смотрим! Смотрим! https://www.youtube.com/watch?v=k4C9aWR6YJ4
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)
29🔥6👏1😁1
Яндекс обновил контест на стажировку осень-зима. Задания уже лежат тут, там же можно их обсудить вместе с админами. И конечно разбор нового контеста будет на наших курсах, так что присмотритесь к ним.

Стажировка в Яндексе - самая крупная стажировка из всех, больше всего мест и их точно хватит на всех. Весьма прозрачный отбор, о котором писали здесь. Для успешного прохождения на собесы обычно достаточно решить 2/3 заданий, а в прошлый раз только половину.

Также не забываем посмотреть полный цикл собесов в Яндекс наших учеников:
Бэкенд
Аналитика
Машинное обучение
👍73🔥2
Яндекс собирается выделить ещё больше мест в ШАД, а значит попасть туда станет ещё проще. Лучше начинать потихоньку-понемногу готовиться уже сейчас. Вместе с МА разбираем примерчик из собеса прошлого набора, чтобы вы оценили свои силы!

Смотрим! Решаем! https://youtu.be/DxfV8JdqQlo
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 чтобы учесть такой кейс.
🔥76👍5👏1
Т-банк открыл контест на стажировку осень-зима. Задания уже лежат тут, там же их можно обсудить вместе с админом. И конечно разбор нового контеста будет на наших курсах, так что присмотритесь к ним.

Стажировка в Т-банке - самая крупная стажировка после Яндекса по количеству мест. В целом решает не сколько баллы за экзамены, сколько "ваш социальный рейтинг", анкета — подробней смотрим здесь. После контестов зовут на собес: он дикая халява, если хоть немного пробовали вкатиться в специальность.
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]. Благо этот отрезок очень маленький и можно честно перебрать там, проверяю что число простое используя посчитанную решето.
🔥175🤔3👍2
ШОК! Админ надел платье, туфельки и пошел в офис Т-банка записывать свой тикток...

Распространяем: https://youtube.com/shorts/99VxC8WiaCo
🥰93🔥1🤓1💅1
Вот и разбор программирования на стажировку в Тинькофф! Обязательно делимся с друзьями. Очень понравилась ваша активность по прошлому видосу, товарищи, поэтому ждём 9 тыс просмотров на ютуб ролике и выкладываем разбор контеста на стажировку в Яндекс.

Смотрим! Смотрим! https://youtu.be/xwc1gLcCras
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)
обновляем ответ если это расстояние больше чем нынешний ответ.

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

У многих проблема возникает в реализации задачи, так как пытаются фиксировать позицию нуля, потом искать слева ближайшую единицу и справа, что конечно сложнее реализовать.
🔥21😭94👍1👏1
Вот и интервью с настоящей легендой! У нас в гостях ДиМашина, поступивший на физтех со 127 баллами ЕГЭ. Почему именно физтех? Какие учебные лафхаки работают? Почему нравится бить людей? Ну и прямо на ваших экранах, товарищи, Дмитрий поступит в ШАД!

Смотрим! Смотрим! https://youtu.be/5l7O2ToX1_8
💊23🤣137
Вот и новый ролик вместе с Михаилом Абрамовичем! Разбираем миленькую задачку (решить в силах даже дошкольник) из собеседования в ШАД последнего набора и объясняем, почему ШАД - это лютая база и как туда поступить.

Смотрим! Смотрим! https://youtu.be/Kcli5gW_uAQ
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 и применяем тот же алгоритм
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).


Код в комментариях.
🔥11👍2🤷‍♂11
Полный цикл отбора в 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 огоньков, чтобы понимать: тема для вас интересна и ее нужно продолжать.
🔥855👍41