Подборка объединяет вопросы, отмеченные на этапах интервью в Avito. Здесь можно понять структуру технической проверки и заранее повторить связанные темы. В подборке чаще встречаются темы: mobile, go, frontend.
При шардировании данные разделяются между несколькими базами данных (шардами) для масштабирования и повышения производительности. Основные подходы к организации разделения данных:
В Go отсутствуют классические классы и наследование, как в C++ или Java. Вместо этого используется композиция через встроенные типы и интерфейсы. Основные особенности ООП в Go:
Для просмотра процессов и их потребления ресурсов в Linux часто используют команду top или более современную htop (если установлена). Они показывают список процессов с информацией по CPU, памяти, времени работы и др.
В Go структура данных Map реализована как хеш-таблица, и время поиска элемента обычно близко к O(1). Однако на временную сложность влияют несколько факторов:
Если в таблице orders нет ни одной записи, запрос SELECT SUM(amount) FROM orders; вернёт NULL, а не 0. Это связано с тем, что агрегатные функции, такие как SUM, возвращают NULL, если нет строк для агрегации.