Re[8]: О собеседованиях на 700к/месяц
От: Sharov Россия  
Дата: 27.06.23 08:10
Оценка:
Здравствуйте, cppguard, Вы писали:

C>Дело не в синусе. Ряд Тейлора используется в математике как инструмент для разных доказательств, а для численных методов есть другие инструменты, более точные.


В ml используется для линеаризации, например. Чем не вариант?
Кодом людям нужно помогать!
Re[6]: О собеседованиях на 700к/месяц
От: opfor  
Дата: 27.06.23 08:15
Оценка: +1 :)
Здравствуйте, Sharov, Вы писали:

S>По этой логике вкалывать вообще не надо-- работай вполсилы, без особого погружения.


так и делают
Re[3]: О собеседованиях на 700к/месяц
От: JacobR  
Дата: 27.06.23 08:25
Оценка:
Здравствуйте, Sharov, Вы писали:

S>Не скажите, про железо вопросы более-менее простые, если проходил какой-нибудь курс на курсере про

S>процессоры или читал Хеннеси и Паттерсона. Чисто кругозорные вопросы обещго плана "что-то слышал".



если обо все поговорить так по верхам от железа до гауссианов, то тогда не понятно за что компания (тем более Яндекс) собираются платить (пусть и с премиями) 700к рублей на руки.
Re[4]: О собеседованиях на 700к/месяц
От: Sharov Россия  
Дата: 27.06.23 08:42
Оценка:
Здравствуйте, JacobR, Вы писали:


S>>Не скажите, про железо вопросы более-менее простые, если проходил какой-нибудь курс на курсере про

S>>процессоры или читал Хеннеси и Паттерсона. Чисто кругозорные вопросы обещго плана "что-то слышал".
JR>если обо все поговорить так по верхам от железа до гауссианов, то тогда не понятно за что компания (тем более Яндекс) собираются платить (пусть и с премиями) 700к рублей на руки.

Из того, что написано, кажется, что что-то по верхам, а что-то глубоко. Т.е. если человек хорошо разбирается в ml, но о кэшах процессора впервые услышал на собеседовании, то может быть это не очень здорово. Может нужен спец, который за месяц способен погрузиться в какую-нибудь область от ml до железа, при этом если человек до этого ничего о ней не знал, едва ли он это сделает быстро. Может что-то такое. Потому что если реально копать глубоко, и нужен прям профи, едва ли это один человек.

Как я понял, у человека неплохой алг. бэкграунд+ml (в Я работал), а знания железа -- курсы+кругозор+глубокие копания в цпп.
Кодом людям нужно помогать!
Re[6]: О собеседованиях на 700к/месяц
От: landerhigh Пират  
Дата: 27.06.23 08:48
Оценка:
Здравствуйте, cppguard, Вы писали:

C>Ага, и сложность вышеописанного алгоритма — O(N * log(M)) в худшем случае:

  Скрытый текст
C>
C>0 0 ... 0 0 1
C>0 0 ... 0 1 1
C>.............
C>1 1 ... 1 1 1
C>

Позволю себе не согласиться:

0 0 ... 0 0 1
0 0 ... 0 1 1
.............
0 1 ... 1 1 1
1 1 ... 1 1 1


Мы никогда не повторяем поиск по M, т.к. на каждом шаге M уменьшается.

А дальше получаем, что имеем дело с O(log(1)) + O(log(2)) + .. + O(log(N-1)) + O(log(N)) = O(log(N))
www.blinnov.com
Re[3]: О собеседованиях на 700к/месяц
От: RonWilson Россия  
Дата: 27.06.23 08:54
Оценка: 10 (1)
Здравствуйте, Sharov, Вы писали:

S>Кажется, что логично, если нам надо что-то считать, то посл-ть будет увеличиваться. Не понял подвох или суть вопроса.

S>А вот что происходит с удаленными номерами -- . Ничего, наверное. Нету же там како-то пула страниц.

Наверное, имелся ввиду вот этот случай
Re[6]: О собеседованиях на 700к/месяц
От: so5team https://stiffstream.com
Дата: 27.06.23 08:56
Оценка:
Здравствуйте, cppguard, Вы писали:

L>>В первой последовательности бинарным поиском в интервале [0,M) находим индекс K первой единицы.

L>>Проверяем значение, находящемся по этому индексу K в следующей последовательности. Если там 0, то берем следующую последовательность, если тоже 1, то ищем индекс K в этой последовательности на отрезке [0, K]. Повторяем (N раз), пока последовательности не закончатся.

C>Ага, и сложность вышеописанного алгоритма — O(N * log(M)) в худшем случае:


C>
C>0 0 ... 0 0 1
C>0 0 ... 0 1 1
C>.............
C>1 1 ... 1 1 1
C>


Мне кажется, что вот такая последовательность должна быть хуже:
0 0 ... 0 0 1
0 0 ... 0 0 1
.............
0 0 ... 0 0 1

Ведь тогда на шагах со второго по последний нам придется делать одинаковые поиски со сложностью O(log(M-1)). Разве нет?
Re[7]: О собеседованиях на 700к/месяц
От: syrompe  
Дата: 27.06.23 08:56
Оценка: +1
L>А дальше получаем, что имеем дело с O(log(1)) + O(log(2)) + .. + O(log(N-1)) + O(log(N)) = O(log(N))

Ох
O(N*log(N)) получается как ни крути

По вашей логике выходит тогда
1+2+3+...+N=O(N) — что сильно не так
Re[5]: О собеседованиях на 700к/месяц
От: PM  
Дата: 27.06.23 09:08
Оценка:
Здравствуйте, landerhigh, Вы писали:

C>>Я задачу понял так: даны N последовательностей, каждая состоит из M значений. В каждый последовательности сперва идут нули, потом в какой-то момент начинают идти единицы. Нужно определить номер последовательности, в которой индекс первой единицы — наименьший. Если всё верно, то я бы очень хотел посмотреть на алгоритм O(N+log(M)) для этой задачи.


L>Дело в том, что нет никакой необходимости проводить N поисков по M:

L>В первой последовательности бинарным поиском в интервале [0,M) находим индекс K первой единицы.
L>Проверяем значение, находящемся по этому индексу K в следующей последовательности. Если там 0, то берем следующую последовательность, если тоже 1, то ищем индекс K в этой последовательности на отрезке [0, K]. Повторяем (N раз), пока последовательности не закончатся.

Очень хочется надеяться, что это всего лишь бесполезная задачка с собеседования. И что в продакшене для выделенного выше все-таки используется нормальная реализация bitset с каким-нибудь clz
Re[6]: О собеседованиях на 700к/месяц
От: Ip Man Китай  
Дата: 27.06.23 09:18
Оценка:
Здравствуйте, PM, Вы писали:

PM>Очень хочется надеяться, что это всего лишь бесполезная задачка с собеседования.


Это отличная задачка с собеседования.
Re[6]: О собеседованиях на 700к/месяц
От: landerhigh Пират  
Дата: 27.06.23 09:25
Оценка:
Здравствуйте, PM, Вы писали:

PM>Очень хочется надеяться, что это всего лишь бесполезная задачка с собеседования. И что в продакшене для выделенного выше все-таки используется нормальная реализация bitset с каким-нибудь clz


В продакшене, когда речь идет о датчиках, используется КА, который срабатывает, как только один датчик меняет состояние.
Если нужно анализировать данные в офлайне, уже когда-нибудь потом, то на сложность по большому счету пофиг.
www.blinnov.com
Re[7]: О собеседованиях на 700к/месяц
От: landerhigh Пират  
Дата: 27.06.23 09:27
Оценка:
Здравствуйте, so5team, Вы писали:

S>Ведь тогда на шагах со второго по последний нам придется делать одинаковые поиски со сложностью O(log(M-1)). Разве нет?


В этом случае, в шагах, начиная со второгшо по последний, поиски проводить вообще не требуется.
www.blinnov.com
Re[8]: О собеседованиях на 700к/месяц
От: landerhigh Пират  
Дата: 27.06.23 09:34
Оценка:
Здравствуйте, syrompe, Вы писали:

S>Ох

S>O(N*log(N)) получается как ни крути

Нет. Сумма асимптоматик (коей является О большое) — это max() (хотя бы тут.)

S>По вашей логике выходит тогда

S>1+2+3+...+N=O(N) — что сильно не так

Тут сразу бросается в глаза, что

O(1)+O(2) = O(1)

Согласен, что это неинтуитивно, но можно хоть на питоне накорябать тест и проверить асимптоматику.
www.blinnov.com
Re[8]: О собеседованиях на 700к/месяц
От: so5team https://stiffstream.com
Дата: 27.06.23 09:40
Оценка:
Здравствуйте, landerhigh, Вы писали:

S>>Ведь тогда на шагах со второго по последний нам придется делать одинаковые поиски со сложностью O(log(M-1)). Разве нет?


L>В этом случае, в шагах, начиная со второгшо по последний, поиски проводить вообще не требуется.


Э...

если тоже 1, то ищем индекс K в этой последовательности на отрезке [0, K]


На втором шаге вы обнаруживаете 1 по индексу K (при этом K==(M-1)). Вы знаете, что по индексу K единица, но не знаете, первая ли это единица в строке или нет. Чтобы это узнать, вам нужно сделать поиск единиц слева от K (т.е. в диапазоне [0, (K-1)]).

И, поскольку K у вас не меняется, на каждой следующей итерации вы должны будете проделывать тоже самое.
Отредактировано 27.06.2023 9:47 so5team . Предыдущая версия .
Re[9]: О собеседованиях на 700к/месяц
От: landerhigh Пират  
Дата: 27.06.23 09:53
Оценка:
Здравствуйте, so5team, Вы писали:

S>На втором шаге у вас K==(M-1). Вы знаете, что по индексу K единица, но не знаете, первая ли это единица в строке или нет. Чтобы это узнать, вам нужно сделать поиск единиц слева от K (т.е. в диапазоне [0, (K-1)]).

S>И, поскольку K у вас не меняется, на каждой следующей итерации вы должны будете проделывать тоже самое.

Мне просто лень было уже детали описывать.

Дело в том, что мы не ищем 1 или 0. Мы ищем позицию K, где sensor[0][K] != sensor[0][K-1].
И соответственно, когда мы ее нашли в первом датчике, мы проверяем значение sensor[1][K]. Если оно равно 1, то выполняем также и сравнение sensor[1][K] == sensor[1][K-1]. Если оно true, то этот датичк сработал раньше, чем датчик 0 и нужно вести поиск по sensor[1][0, K] (на самом деле sensor[1][0, K) )
www.blinnov.com
Re[10]: О собеседованиях на 700к/месяц
От: so5team https://stiffstream.com
Дата: 27.06.23 10:08
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Дело в том, что мы не ищем 1 или 0. Мы ищем позицию K, где sensor[0][K] != sensor[0][K-1].

L>И соответственно, когда мы ее нашли в первом датчике, мы проверяем значение sensor[1][K]. Если оно равно 1, то выполняем также и сравнение sensor[1][K] == sensor[1][K-1]. Если оно true, то этот датичк сработал раньше, чем датчик 0 и нужно вести поиск по sensor[1][0, K] (на самом деле sensor[1][0, K) )

Соответственно, первоначальное описание, содержащие:

В первой последовательности бинарным поиском в интервале [0,M) находим индекс K первой единицы.
Проверяем значение, находящемся по этому индексу K в следующей последовательности


следовало бы переформулировать так:

В первой последовательности бинарным поиском в интервале [0,M) находим индекс K первой единицы.
Проверяем значение, находящемся по этому индексу (K-1) в следующей последовательности

.

ибо смысл проверять сперва sensor[i+1][K] и только затем, если там 1, делать сравнение c sensor[i+1][K-1], не видно. Можно же сразу сравнивать sensor[i][K] с sensor[i+1][K-1].
Re[9]: О собеседованиях на 700к/месяц
От: cppguard  
Дата: 27.06.23 10:30
Оценка:
Здравствуйте, Sharov, Вы писали:

S>В ml используется для линеаризации, например. Чем не вариант?


Речь шла о том, как расчитать косинус без доступа к math.h. Для этих целей TE не подходит.
Re[7]: О собеседованиях на 700к/месяц
От: cppguard  
Дата: 27.06.23 10:32
Оценка:
Здравствуйте, so5team, Вы писали:

S>Мне кажется, что вот такая последовательность должна быть хуже:

S>
S>0 0 ... 0 0 1
S>0 0 ... 0 0 1
S>.............
S>0 0 ... 0 0 1
S>

S>Ведь тогда на шагах со второго по последний нам придется делать одинаковые поиски со сложностью O(log(M-1)). Разве нет?

Можно и так. В любом случае, N+logM не получить.
Re[9]: О собеседованиях на 700к/месяц
От: cppguard  
Дата: 27.06.23 10:39
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Нет. Сумма асимптоматик (коей является О большое) — это max() (хотя бы тут.)


L>Тут сразу бросается в глаза, что


L>O(1)+O(2) = O(1)


Чувак, ты смешал в кучу коней и людей. Почитай КМП на тему того, как правильно считать сложность алгоритмов. По твоей логике insertion sort тоже должен иметь сложность O(N), потому что там O(N) + O(N-1) + ... + O(N-N+1).

L>Согласен, что это неинтуитивно, но можно хоть на питоне накорябать тест и проверить асимптоматику.


асимптоматика это то, что считается в голове или на бумаге. Нельзя запустить программу, увидеть там какие-то числа и сделать из этого вывод про сложность алгоритма.
Re[9]: О собеседованиях на 700к/месяц
От: syrompe  
Дата: 27.06.23 10:39
Оценка: +1
S>>Ох
S>>O(N*log(N)) получается как ни крути

L>Нет. Сумма асимптоматик (коей является О большое) — это max() (хотя бы тут.)

Из вашей же ссылки:

If the function f can be written as a finite sum of other functions, then the fastest growing one determines the order of f(n).

Ключевое выделил.



L>Тут сразу бросается в глаза, что

L>O(1)+O(2) = O(1)
Т.е. вы таки утверждаете что:
1+2+3+...+N=O(N)

Тогда сложность классического алгоритма сортировки вставками (да и пузырек тоже) O(N)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.