Вернуться в видеотеку

iOS Engineering System Design Interview "Analytics Service" | Антон Калюжный | iOS Ukraine #2

Разбор проектирования iOS Analytics Service в формате мок-интервью System Design. После основной схемы — Q&A о маршрутизации, офлайне, тестировании, именовании событий и подготовке к интервью.

Источник: iOS Ukraine

Открыть на YouTube

Таймлайн

Коротко о видео

Запись мок-интервью по System Design для iOS: участник проектирует переиспользуемый сервис аналитики, который отправляет события и ошибки в несколько провайдеров, включая Firebase Analytics, Mixpanel и Flurry. Центральный Analytics Center скрывает детали SDK за единым протоколом, поддерживает инициализацию сервисов, маршрутизацию и фильтрацию событий, а также офлайн-буферизацию. В Q&A обсуждают тестируемость, декораторы для офлайн-логики, кроссплатформенное API, соглашения об именах событий и подготовку к интервью Facebook.

Затронутые темы

Что взять на заметку

  • На System Design-интервью сначала уточняйте границы задачи: число аналитических провайдеров, необходимость переиспользуемого/Open Source-компонента, типы данных и офлайн-режим.
  • Спрячьте конкретные SDK за протоколом AnalyticsService с едиными операциями инициализации и отправки событий; Analytics Center может хранить набор таких реализаций и рассылать им событие.
  • Опишите событие как отдельную сущность с именем и параметрами; для предотвращения опечаток используйте типизированные фабрики, enum или структуры вместо произвольных строк по всему приложению.
  • В предложенном решении при отсутствии сети событие вместе с timestamp сохраняется локально в JSON-файл и отправляется позднее; UserDefaults автор считает неподходящим хранилищем для этой задачи.
  • Не помещайте в аналитические события e-mail, номер телефона и другие персональные данные; вопрос шифрования локального буфера зависит от состава данных и требований безопасности.
  • Для отправки разных событий в разные системы добавьте правила допустимых событий или отдельный routing/filtering-сервис; офлайн-буфер и фильтрацию можно вынести в декораторы над общим протоколом.
  • Для тестов не привязывайте весь код к singleton: создавайте отдельный Analytics Center и подключайте debug-реализацию сервиса, которая фиксирует полученные события.

Рекомендуем посмотреть

1 ч 39 мин
MobileMiddle

Моковое собеседование на Middle iOS - разработчика | Solvery & CoffeeCode

Разбор публичного мок-интервью Middle iOS-разработчика с практическими задачами по тестированию, Swift, алгоритмам и проектированию чата. Интервьюер комментирует, какие сигналы и уточнения важны на техническом собеседовании.

2 ч 19 мин
Mobile

Публичное Собеседование iOS | Alex Ozun, Роман Тысячник | iOS Ukraine #2

Публичный разбор iOS-технического интервью: от фундаментального Swift и UIKit до тестирования, отладки и практик проведения собеседований. Формат включает комментарии интервьюера к ответам кандидата и финальную Q&A-сессию.

2 ч 13 мин
MobileJunior

Собеседование iOS разработчика | Вопросы Джуниору: Основы Swift, UIKit, Архитектура

Публичная запись собеседования junior iOS-разработчика с вопросами по Swift и UIKit, практической UI-задачей и обсуждением архитектуры. После интервью автор подробно комментирует ответы кандидата и зоны роста.