ENIGMA AI
ENIGMA AI
Собеседование 11 мин чтения

Собеседование в Авито: этапы, вопросы и как подготовиться

Собеседование в Авито: этапы, вопросы и как подготовиться

Авито — крупнейшая платформа объявлений в России и один из топовых технических работодателей. Сотни миллионов объявлений, десятки миллионов пользователей в месяц, сложнейшие задачи по поиску, ранжированию и антифроду.

Рассказываю, как устроен найм в Авито и как к нему подготовиться.

Почему Авито

Технологический масштаб:

  • 100M+ объявлений
  • 50M+ уникальных пользователей в месяц
  • Собственный поисковый движок
  • ML для ранжирования и модерации
  • Антифрод-системы

Культура:

  • Сильная инженерная культура
  • Автономные команды
  • Внутренние tech-митапы и образование
  • Work-life balance (редкость для Big Tech)

Технологии:

  • Go (основной язык)
  • PHP (легаси, постепенно уходит)
  • Kubernetes, Kafka, ClickHouse
  • Собственные ML-платформы

Процесс найма

Авито известен одним из самых структурированных процессов найма в России:

  1. Скрининг с рекрутером (20-30 минут)
  2. Техническое интервью (1.5 часа)
  3. Алгоритмическая секция (1 час)
  4. System Design (для Senior, 1 час)
  5. Финальное интервью с командой

Срок: 3-4 недели. Авито не торопится, но и не затягивает.

Этап 1: HR-скрининг

Стандартный созвон для первичной оценки.

Вопросы:

  • Расскажите о себе и опыте
  • Что знаете об Авито?
  • Почему хотите к нам?
  • Какое направление интересно?
  • Зарплатные ожидания

Направления в Авито:

  • Core (объявления, поиск, профили)
  • Vertical (авто, недвижимость, работа)
  • Monetization (реклама, продвижение)
  • Trust & Safety (антифрод, модерация)
  • Platform (инфраструктура, инструменты)

Выбирайте то, что ближе к вашему опыту.

Этап 2: Техническое интервью

Глубокая проверка знаний. Формат — видеозвонок, 1.5 часа.

Backend-разработчик

Go (must have):

  • Concurrency: горутины, каналы, WaitGroup, errgroup
  • Как работает планировщик Go (M:N threading)?
  • Context: зачем нужен, как правильно использовать
  • Паттерны: worker pool, fan-out/fan-in, pipeline
  • Особенности GC в Go
  • Интерфейсы: композиция, embedding
  • Testing: table-driven tests, mocks, benchmarks
  • Profiling: pprof, trace

Базы данных:

  • PostgreSQL: индексы, EXPLAIN ANALYZE, партиционирование
  • Как работает MVCC?
  • Уровни изоляции транзакций — примеры аномалий
  • Репликация: streaming replication, logical replication
  • ClickHouse: колоночное хранение, когда использовать
  • Redis: типы данных, persistence, cluster

Поиск (важно для Авито!):

  • Как устроен полнотекстовый поиск?
  • Inverted index — принцип работы
  • TF-IDF, BM25 — базовое понимание
  • Elasticsearch vs PostgreSQL FTS

Распределённые системы:

  • CAP-теорема с примерами
  • Консенсус: Raft, Paxos (базово)
  • Eventual consistency — как работать?
  • Распределённые транзакции: 2PC, Saga

Kafka:

  • Consumer groups, партиции, offset
  • Гарантии доставки: at-least-once, exactly-once
  • Как обеспечить порядок сообщений?
  • Что делать с отравленными сообщениями?

Frontend-разработчик

JavaScript:

  • Event loop детально
  • Прототипы и наследование
  • Closures, execution context
  • Промисы: реализация, async/await
  • Module systems: CommonJS, ES Modules

React:

  • Fiber architecture
  • Reconciliation algorithm
  • Hooks: правила, кастомные хуки
  • Состояние: Context, Redux, Zustand
  • Server Components (базово)

Производительность:

  • Bundle optimization
  • Tree shaking
  • Code splitting
  • Виртуализация списков

TypeScript:

  • Generics: constraints, inference
  • Utility types: Partial, Pick, Omit, Record
  • Discriminated unions
  • Type guards

Mobile

Android:

  • Jetpack: ViewModel, LiveData, Room, Navigation
  • Coroutines: scope, structured concurrency
  • Memory leaks: как находить и исправлять
  • Gradle: build optimization

iOS:

  • SwiftUI vs UIKit
  • Combine: Publishers, Subscribers
  • Memory management: retain cycles
  • App architecture: MVVM, VIPER, TCA

Этап 3: Алгоритмы

Одна из самых важных секций в Авито. 1 час, 2 задачи.

Что важно:

  • Авито любит задачи средней сложности (Medium)
  • Фокус на практических сценариях
  • Важна не только корректность, но и коммуникация

Темы:

  • Arrays, strings (two pointers, sliding window)
  • Hash tables
  • Binary search
  • Trees, graphs (BFS, DFS)
  • Dynamic programming (базовое)
  • Greedy algorithms

Примеры задач:

Задача 1: Поиск дубликатов объявлений

Дан массив объявлений (title, description).
Найти потенциальные дубликаты — объявления, 
где совпадает >80% слов в описании.

Задача 2: Оптимальная цена

Дан массив цен на товар за последние N дней.
Найти лучший день для покупки и продажи 
(максимизировать прибыль, продажа после покупки).

Задача 3: Группировка категорий

Дано дерево категорий объявлений.
Найти все объявления в категории и всех подкатегориях.

Задача 4: Ранжирование

Даны объявления с рейтингами и датой публикации.
Отсортировать по формуле: score = rating * decay(days_old).

Советы:

  1. Проговаривайте мысли вслух
  2. Начните с brute-force, потом оптимизируйте
  3. Обсудите edge cases до написания кода
  4. Тестируйте на примерах

Этап 4: System Design

Для Senior+ позиций. 1 час на проектирование системы.

Типичные задачи:

  • Система поиска объявлений
  • Сервис модерации контента
  • Система рекомендаций
  • Антифрод-система
  • Мессенджер между пользователями
  • Система аналитики просмотров

Пример: Поиск объявлений

Требования:

  • 100M объявлений
  • 10K запросов в секунду
  • Релевантность + свежесть
  • Фильтры: цена, город, категория

Компоненты:

  1. API Gateway

    • Rate limiting
    • Аутентификация
  2. Search Service

    • Парсинг запроса
    • Построение query для индекса
  3. Index

    • Elasticsearch кластер
    • Шарды по городам/категориям
  4. Ranker

    • ML-модель для ранжирования
    • Учёт свежести, качества, CTR
  5. Cache

    • Redis для популярных запросов
    • TTL = 5 минут
  6. Indexer Pipeline

    • Kafka для новых/обновлённых объявлений
    • Near real-time индексация (<1 мин)

Что обсудить:

  • Как обновлять индекс при изменении объявления?
  • Как ранжировать по релевантности И свежести?
  • Что делать с опечатками в запросах?
  • Как масштабировать при росте?

Этап 5: Финал

Знакомство с командой и менеджером.

Что оценивают:

  • Культурный fit
  • Soft skills
  • Мотивация
  • Способность работать автономно

Вопросы:

  • Расскажите о сложном техническом решении
  • Как работаете с неопределённостью?
  • Как даёте и принимаете фидбек?
  • Что важно в команде?

Ваши вопросы:

  • Какие главные технические челленджи?
  • Как устроены процессы в команде?
  • Какой онбординг?
  • Как выглядит рост?

Особенности Авито

1. Инженерная культура Авито известен сильной технической культурой. Code review обязательно, документация ценится, технический долг обсуждается открыто.

2. Автономия команд Команды сами принимают технические решения. Это значит больше ответственности, но и больше свободы.

3. Go-first Почти весь новый backend на Go. PHP постепенно уходит. Знание Go — must have.

4. Поиск и ML Много задач связано с поиском, ранжированием, рекомендациями. Если есть опыт в IR/ML — большой плюс.

5. Условия Конкурентная зарплата, RSU, ДМС со стоматологией, гибкий график. Офисы в Москве и Санкт-Петербурге, удалёнка возможна.

Типичные ошибки

  • Не знать продукт (посмотрите Авито как пользователь)
  • Слабый Go (это основной язык, его спросят глубоко)
  • Молчать на алгоритмах (думайте вслух!)
  • Не задавать вопросы на System Design
  • Недооценивать финальное интервью

План подготовки

Неделя 1: Теория

  • Дни 1-2: Go (concurrency, patterns, testing)
  • Дни 3-4: PostgreSQL, Redis, ClickHouse
  • Дни 5-6: Distributed systems, Kafka
  • День 7: Elasticsearch, поиск

Неделя 2: Практика

  • Дни 1-3: LeetCode (20 задач Medium)
  • Дни 4-5: System Design (поиск, рекомендации)
  • День 6: Мок-интервью
  • День 7: Изучение продуктов Авито

Страховка на собеседовании

Знание есть, но стресс мешает? ENIGMA AI работает в реальном времени:

  • Распознаёт вопросы интервьюера
  • Показывает подсказки и примеры
  • Помогает вспомнить синтаксис
  • Невидим при демонстрации экрана

Это не замена подготовке, а страховка от ступора.

Попробовать ENIGMA AI →

Полезные ресурсы

Go:

  • Effective Go (официальный гайд)
  • Go by Example
  • Блог Авито Tech на Хабре

Поиск и IR:

  • Introduction to Information Retrieval (Stanford)
  • Elasticsearch: The Definitive Guide

System Design:

  • Designing Data-Intensive Applications
  • System Design Interview (Alex Xu)

Алгоритмы:

  • LeetCode (Medium, темы: arrays, hash tables, trees)
  • NeetCode roadmap

Авито — это сильная команда, интересные задачи и культура, где инженеры принимают решения. Подготовьтесь — и станьте частью этого.

Похожие статьи

Все статьи