~={yellow}Стажировка Авито=~ Значится, докладываю: 30 вопросов, довольно простых, типа, за какое время выполняется такая-то операция над такой-то структурой данных, что делает вот эта команда (линукс), описание команд докера, описание SQL запросов, что делает такой-то запрос или с помощью какого запроса можно сделать вот это, вопросы по GIT, тоже из разряда описания приведенной команды или с помощью какой команды можно сделать то-то. Вопросы по Go были. И там была всего одна задача связанная с написанием кода и она была на Go, типа, вот код найдите ошибку, исправьте https://www.youtube.com/watch?v=Qf24zMzMmgI ~={yellow}Т-банк=~ ![[photo_2024-09-10_18-04-49 (2).jpg]]![[photo_2024-09-10_18-04-49.jpg]] Первое: Распарсить строку. Сджойнить/саппендить ренджи на каждый диапазон и вывести итог. Второе: Посчитать время выполнения каждого процесса которое состоит из собственного времени плюс сумма времён всех процессов от которых есть зависимость. И вывести максимальное из этих времён (т.к. количество серверов условно бесконечно, то считаем что процессы выполняются параллельно с учётом зависимости). Но проблема в том как реализовать процесс подсчёта. 1. Там по сути нужно пройтись по процессам с нулевой зависимостью. 2. Потом их время подставить в процессы от которых они зависят. 3. Потом проверить процессы где все времена подставлены - посчитать их. 4. Потом повторить п.3 пока у всех процессов не останется не известных времён в родителях. тут надо строить граф зависимостей и делать поиск в глубину по нему Была задача отследить спамеров. Спамеры спамят периодически. То есть они могут стартануть бота в 12 часов и слать запросы со строгой периодичностью до 14 часов. Потом у них перерыв на обед и следующий раз они включают бота ночью. То есть получается, что с 12 по 14 часов между сообщениями интервал в 1 минуту, а потом большой провал, а потом снова интервал в 1 минуту. Если мне хочется понять, что пользователь часто спамит на протяжении дня, то я не могу просто взять среднее время между сообщениями. Из за большого перерыва оно будет не 1 минута, а 20 минут. А это окей, это не похоже на спам. Поэтому тут нужно вычислять либо перцентили, либо с помощью скользящего окна определить, были ли окна, когда интервал был подозрительным