ЛАЙВКОДИНГ НА СОБЕСАХ В OZON, YANDEX, СБЕР

preview_player
Показать описание

0:00 Начало
0:33 Задача 1 Сбера
1:49 Задача 2 Сбера
3:19 Задача 1 Озона
5:03 Задача 2 Озона
6:20 Задача 3 Озона
10:00 Задачи Яндекса
11:56 Как готовиться
Рекомендации по теме
Комментарии
Автор

В первой задаче можно не бежать по всему массиву, а сразу возвращать true если встретили дубликат (проверяем по объекту или сету). Особенно эффективно будет в длинных массивах типа [1, 1, 2, 3, 4, 5, 6, ..., n]

ReAgent
Автор

Музыка - уши вянут... В остальном спасибо, было познавательно

aceracer
Автор

Для первой задачи в питоне есть интересное решение. Пусть дается список из чисел. Мы оборачиваем список в множество (set()), и сравниваем кол-во элементов в изначальном списке и в множестве. Если их кол-во одинаково, то все значения уникальны, если нет, то встречается хотя бы 1 число которое встретилось несколько раз)

kxma-ot
Автор

По яндексу:
1. Странно что не сказали про количество собесов, по идее рекрутёр должен уметь отвечать на этот вопрос. Я когда устраивался у меня было 4 алгоритмических собеса + несколько встреч с командами, без испытаний. Про количество собесов мне заранее рекрутёр сказал
2. По задачам: всё что было разобрано это примерно easy на литкоде. В Яндексе на собесе обычно дают 2 задачи: первая как в видео, вторая сложнее: примерно понятно как решить медленно, как решить быстро нужно подумать и требуется именно быстрое решение.

Источник: работаю в Яндексе и провожу собесы

vittos
Автор

1 задача лучше решается через set, так как для проверки ответа можно не пробегаться по циклу длиной n, а сравнить количество элементов в set'е с размером массива. Также во многих реализациях Set потребляет меньшее количество памяти чем Map.
2 задача решается за O(log n). Заезженная задача, где n-ое число Фибоначчи представляется как (1; 0) или (0; 1) элемент матрицы (1, 1; 1, 0) в n-ой степени. Возведение в n-ую степень делается за O(log n) очевидным рекурсивным алгоритмом, отсюда и асимптотика для этой задачи. (Реализация показанная в видео просто ужаснейшая, ибо избавится от ифов можно сделав "a, b = 1, 0" и "for i := 0; i < n; i++". А про то как избавиться от переменной "c" я вообще молчу: b = a + b, a = b - a)
3 задача также легче решается через Set, кроме того думаю следует добавить условие что m * n <= 2^32, ибо массив может уйти в бесконечный цикл. Также хочется отметить просто ужасную асимптотику, есть алгоритм с честной асимптотикой O(n*m), который построен на заполнении массива n*m числами рассортированными по возрастанию путём взятия каждого следующего числа на диапазоне от предыдущего числа до максимального значения - m*n + i - 1, где i индекс элемента массива. Делаем это за O(n*m). После чего случайным образом переставляем элементы в массиве (Например тасовкой Фишера) также за O(n*m).
4 задача алгоритм более чем нормальный.
5 задача алгоритм более чем нормальный, реализация очень странная. Захардкоженный switch case - просто ужас, можно было сделать например так:
for i := 0; ; i++ {
p := i
pwd := ""
while (p > 0) {
pwd += alphabet[p % len(alphabet)]
p /= len(alphabet)
if (p == 1) {
if (dummyHash(pwd) == hash) {
return pwd
}
}
}
if (dummyHash(pwd) == hash) {
return pwd
}
}
Здесь есть костыль в виде if (p == 1) {...}, который сильно уменьшает код, от него можно легко избавиться добавлением ведущих нулей как это сделано в ролике.
6 задача - сортируем массив. Храним в переменной A значение первого числа в текущем диапазоне, в переменной B значение предыдущего элемента в массиве. Проходим по массиву, когда встречаем два подряд идущих числа отличающихся более чем за 1, выводим переменную и предыдущий элемент массива (от рассматриваемого), если они не совпадают, а в переменную A записываем рассматриваемый элемент (переменную B и так обновляем на каждой итерации), после прохождения массива повторяем действие, если бы встретили два элемента отличающихся более чем на 1.
7 задача - Создаём очередь, записываем туда корень дерева. Пока очередь не пуста достаём оттуда элемент, выводим его, а его потомков записываем в очередь.

eZermelo
Автор

третью задачу решил за 5 минут (3.5 часа), вторую за 2 минуты (с 3 попытки с интервалом в 4 часа), первую задачу решил не правильно.

codeline
Автор

6:00 нифига как сложно. Решается она так
func concatN(lists [][]int) []int {
n := 0
for _, list := range lists {
n += len(list)
}
res := make([]int, 0, n)
for _, list := range lists {
res = append(res, list...)
}
return res
}

OOOJohnJ
Автор

давай в некст раз без кринжа на фоне, особенно под х2-3 смотреть это жесть

ssscar
Автор

Я бы в первой задаче запустил сортировку, а потом прошел по списку...

АлександрМусин-ря
Автор

Яндекс может пригодиться только в одном случаи - для строчки резюме в портфолио джуна.)))

NS-grwm
Автор

Видео не бесполезное. Но я ожидал другого. Не про решение задачек на алогоритмы и структуры данных, а по-подробнее именно про сам формат лайвкодинга. Например, сам участвовал в яндексовом, где использовался фактически самый простой редактор теста на их специально сайте, в котором ничего нет: ни подсветки синтаксиса, ни компилятора, ничего. Умение решать задачи конечно же важно. Но, как я понял, не менее важно на ходу в слух проговаривать и обосновывать свои рассуждения, также в слух провести дебаг своего решения)), порассуждать опять же в слух про краевые случаи, не бояться переспрашивать интервьюера, если что-то непонятно и т.п. Скорее всего, всё это как-то оценивается.

areksei
Автор

Задача с повторами решается за один проход, нет? просто чекаем мапу, если там есть значение с таким ключом то тру, если нет - добавляем

vasinas
Автор

За "х" "у" "i" like😂

_SCROOGE
Автор

Я думал, что задания на собеседовании будут сложнее, ну, там, создать своё красно-черное дерево, найти кратчайший путь по данной матрице инцидентности, нарисовать в консоли вращающийся бублик и т.д. А так, очень интересный тренажёр для мозгов. Спасибо.

chap_
Автор

Мне эта задача на стажера фронтенд попалась)

ДенисКан-бы
Автор

Это на какой грейд такие задачки давали?

gettingITjob
Автор

в сбере ток 2 алоса дали?
какие еще вопросы спрашивали
после этих задач хочется в сбер

rsp
Автор

а что решение первой задачи с озона приняли? я бы не принял. Такие задачи решаются бэктрекингом, а рандом это супер наглый костыль)

vdrmkr
Автор

1, 2 задания чисто ЕГЭ по информатике)

artemkayeah
Автор

че серьезно? Лит код для отбора кадров?
остановите плонету, я уйду

unicoxrtj
visit shbcf.ru