Yandex / Яндекс
1-й этап
Заголовок раздела «1-й этап»- на вход последовательность единиц и нулей, найти возможную максимально длинную последовательность единиц которая может получиться если из массива убрать 1 ноль;
go/slices-arrays - дерево где в каждом узле буква, нужно вернуть 2 вершины у которых в листьях одинаковый набор уникальных букв;
algorithms/data-structures - Есть очень большое число в виде строки - «23148728156921356234». Нужно умножить его на int цифру 0-9;
go/strings-runes - Есть массив чисел [1, 2, 3, 4, 6, 7, 9] нужно свернуть его в интервалы -> [1-4, 6-7, 9];
go/slices-arrays - Есть интервалы времен двух пользователей которые играют в онлайн игру. Задача - найти пересечения по времени когда эти пользователи могли бы поиграть вместе:
algorithms/general
Задача: (код без описания) misc/general
Заголовок раздела «Задача: (код без описания) misc/general»intervals1=[4-8, 11-13, 15-20]intervals2=[6-9, 12-17]answer: [6-8, 12-13, 15-17]2-й этап
Заголовок раздела «2-й этап»- Реализовать RPN-калькулятор (обратная польская нотация). Нужно написать функцию которая на вход принимает строку а на выходе отдает результат. Пример выражения - «3 4 + 2 _ 1 +»
go/strings-runes - Реализовать функцию которая из текста выпиливает смайлики:
go/strings-runes
Задача: (код без описания) misc/general
Заголовок раздела «Задача: (код без описания) misc/general»:):-))))):-((((:(Задача: Требуется написать алго с учетом эффективной работы со строками. go/strings-runes
Заголовок раздела «Задача: Требуется написать алго с учетом эффективной работы со строками. go/strings-runes»- Написать функцию которая определяет является ли входная строка палиндромом или нет. Скипать все не алфавитные символы, не смотреть на регистр.
3-й этап: 1.
# Написать функцию, где:
# вход - подается список таплов, в тапле (start_date: int, end_date: int)
# выход - вернуть максимальное число гостей в конкретный день
# [(1, 4), (2, 5), (2, 3), (3, 4) (12, 13)] ->3 # Дан массив целых чисел, нужно найти непустой подотрезок# (непрерывную подпоследовательность)# с заданной суммой target, либо сказать, что это невозможно.# findTarget([9, -6, 5, 1, 4, -2], 10) ->(2, 4)Допустим, нам нужно передать данные из некоторого источника некоторому потребителю. При этом источник отдает данные небольшими пачками, а потребитель оптимальнее работает с крупными батчами (реальный пример - поставка данных из очередей типа Kafka в базу Clickhouse). Также, источник умеет сохранять прогресс чтения и по мере обработки данных потребителем этот прогресс нужно обновлять, чтобы в случае рестарта процесса не перечитывать все с нуля/с произвольной позиции.
Допустим, источник и потребитель описываются интерфейсами Producer и Consumer.
Задача: Требуется реализовать функцию func Pipe(p Producer, c Consumer) error, которая: go/errors-panic
Заголовок раздела «Задача: Требуется реализовать функцию func Pipe(p Producer, c Consumer) error, которая: go/errors-panic»- читает данные из источника и передает их потребителю. Считаем, что источник условно бесконечный;
- при чтении формирует буфер, максимальный размер которого задается константой MaxItems и передает данные потребителю только когда буфер близок к заполнению;
- после обработки данных потребителем, вызывает для них метод Commit, передавая в него cookies в той последовательности, в которой они были получены от источника;
- в случае возникновения ошибок - функция должна завершиться. Если ошибка возникла на вызове Commit - больше никакие данные не должны быть закоммичены (т.к. в противном случае нарушится очередность коммитов).
type Producer interface { // Next returns: // - batch of items to be processed // - cookie to be commited when processing is done // - error Next() (items []any, cookie int, err error) // Commit is used to mark data batch as processed Commit(cookie int) error}
const MaxItems = 9999
type Consumer interface { Process(items []any) error}
func Pipe(p Producer, c Consumer) error {}Системный дизайн
Заголовок раздела «Системный дизайн»Представим что есть готовый поисковик, где пользователь вводит длинный запрос и система отдает поисковую выдачу. Компания хочет к этому поиску добавить поисковые советы в виде списка из нескольких вариантов, которые должны появляться по мере ввода текста запроса. Необходимо спроектировать такую систему.