Вернуться в каталог собеседований

Собеседование на Middle iOS разработчика. Артур Игбердин & Илья Шаповалов

Публичное мок-собеседование Middle+ iOS-разработчика с вопросами по памяти и ARC, лайвкодингом и архитектурным рефакторингом. В конце участники обсуждают слабые ссылки в коллекциях и получают обратную связь по решениям.

Devrush
  • Опубликовано на YouTube:
  • Просмотры на YouTube: 9,1 тыс.
  • Лайки на YouTube: 201
Открыть на YouTube

Таймлайн

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

Это публичное мок-собеседование на позицию Middle+ iOS-разработчика: Артур Игбердин интервьюирует ментора Илью Шаповалова. Они разбирают опыт Ильи с macOS-разработкой и кастомным меню, затем проходят память, value/reference types, ARC/MRC, autorelease, unowned-ссылки и retain cycles. Практическая часть включает удаление чётных чисел из массива без дополнительного массива, рефакторинг View Controller с DI и unit-тестами, а также слабое хранение объектов в массиве через WeakBox; в конце интервьюер даёт обратную связь по выполнению заданий.

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

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

  • Подготовьте краткий рассказ о проектной задаче: Илья объясняет реализацию кастомного меню для macOS, его декларативную конфигурацию и требования к повторному использованию.
  • Повторите устройство памяти и Swift-типы: стек, куча, сегменты данных/текста, value и reference types, а также случаи boxing и размещения значений в heap.
  • Уметь объяснять ARC, retain/release/autorelease и искать retain cycles на практике через Memory Graph, Leaks в Instruments и `deinit`-логи.
  • Для удаления чётных элементов из массива in-place нельзя бездумно идти `for`-циклом по исходным индексам: после удаления элементы сдвигаются, возможны пропуски и выход за границы; обсуждается `while` с контролируемым индексом.
  • Учитывайте стоимость удаления из массива: при сдвиге элементов худшая временная сложность обсуждаемого решения — O(n²), а дополнительная память — O(1).
  • При рефакторинге View Controller обсуждаются разделение создания и настройки view, `final`/`static` там, где это уместно, внедрение зависимостей для сервиса и логгера и проверка поведения unit-тестами.
  • Обычный массив удерживает экземпляры классов сильными ссылками; для слабого хранения объектов обсуждается обёртка `WeakBox` и необходимость отдельно очищать устаревшие обёртки.

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