Создание ошибки без импортов внешних пакетов
Объявите собственный тип с методом Error() string. Встраивание nil-интерфейса error создаёт значение, но его метод небезопасно вызывать.
Читать ответПодготовка к интервью
881 вопрос с собеседований в Ozon
Что проверяют на интервью
Подборка объединяет вопросы, отмеченные на этапах интервью в Ozon. Здесь можно понять структуру технической проверки и заранее повторить связанные темы. В подборке чаще встречаются темы: database, backend, sql.
Каталог
Объявите собственный тип с методом Error() string. Встраивание nil-интерфейса error создаёт значение, но его метод небезопасно вызывать.
Читать ответМожно сгенерировать случайную перестановку диапазона [0, n): это гарантирует уникальность за O(n), без циклов повторного подбора.
Читать ответИспользуйте DISTINCT по user_id и SKU, а покупки фильтруйте относительно первого бана. Однофамильцев нельзя объединять только по имени.
Читать ответЕсли после третьего append capacity(x) больше 3, оба среза покажут [0 1 2 4]. Точный рост capacity язык не гарантирует.
Читать ответБудут выведены пары a 1, b 2 и c 3, но порядок строк не определён. range по map не гарантирует порядок вставки или сортировку.
Читать ответzip проходит до длины более короткого среза и создаёт для каждого индекса отдельную пару. Сложность — O(min(len(a), len(b))).
Читать ответОбычно будет напечатано 6: две трёхсекундные задержки идут последовательно. Второй worker вызывается лишь после получения результата первого выражения чтения.
Читать ответСначала определите дату первого бана, затем суммируйте только покупки раньше неё и отберите SUM(price)>5000. Группируйте по id, чтобы не объединить однофамильцев.
Читать ответОберните map в структуру с mutex и защищайте все обращения. Для строк возвращаемое значение не требует глубокой копии, а bool отличает отсутствие ключа от пустой строки.
Читать ответСоедините покупки с пользователями, отфильтруйте время покупки раньше блокировки и удалите повторные пары user_id–product_id. Схема в условии отсутствует, поэтому имена полей нужно явно согласовать.
Читать ответСначала определите диапазон: без него задача неоднозначна. Простой вариант возвращает случайную перестановку чисел от 0 до n−1 — все значения в ней различны.
Читать ответХраните в хеш-таблице уже встреченные значения и их индексы. Для каждого числа ищите need−number до добавления текущего элемента, чтобы не использовать один индекс дважды.
Читать ответ