Мок-собеседование iOS разработчика

YOUTUBE · 01.12.2025 09:01

Ключевые темы и таймкоды

Опыт работы

0:00
  • Интервьюер задает вопросы о опыте работы Данилы, который составляет около семи месяцев.
  • Данила работал на трех проектах: личный кабинет автора музыки, умный домофон и экран на эрее мвв.

Архитектура и Свифт

3:05
  • Данила обсуждает различные архитектуры, которые он использовал в своей работе, включая вайпер и мвм.
  • Он объясняет, что архитектура помогает разделить проект на модули и слои, что упрощает работу с большим проектом.
  • Он также упоминает, что в вайпере много файлов и протоколов, что может быть сложно для понимания.
  • В то же время, архитектура позволяет быстрее находить места, которые нужно поправить, и упрощает ориентирование в проекте.

Обсуждение типов данных в Swift

8:24
  • Обсуждение сахарности Swift, которая позволяет сокращать замыкания.
  • Обсуждение различий между валю-тайпами и референс-тайпами, включая их хранение в разных областях памяти (стек и куча).

Отличия между валю-тайпами и референс-тайпами

11:39
  • Валю-тайпы не поддерживают рекурсивное поведение, так как они не могут содержать поле с типом этой же структуры.
  • Коллекции являются валю-тайпами, но они могут иметь динамическое поведение.

Примеры использования валю-тайпов и референс-тайпов

15:30
  • Валю-тайпы не могут хранить сами себя, но они могут содержать референс-тайпы.
  • Если валю-тайп содержит референс-тайп, он также будет храниться в куче.

Примеры использования референс-тайпов

17:48
  • При изменении исходного объекта, значение второго объекта также меняется.
  • Массивы и структуры копируют только ссылку на объект, а не его значение.

Структуры и ссылки

19:30
  • Обсуждение структур и ссылок, включая их использование в классах и методах.
  • Упоминается механизм подсчета ссылок и его использование для отслеживания количества ссылок на объект.

Мемори-релики и капчерлист

24:52
  • Обсуждение проблемы "зомби-объектов", когда объект освобождается из памяти, но его счетчик ссылок остается ненулевым.
  • Упоминается использование па дефолта для борьбы с этим явлением.

Многопоточность и синхронность

28:05
  • Обсуждение многопоточности и синхронности, включая их использование в контексте выполнения задач.
  • Упоминаются жизненные примеры, иллюстрирующие разницу между синхронным и асинхронным общением.

Способы работы с многопоточностью

30:19
  • Упоминаются различные способы работы с многопоточностью, включая использование сторонних библиотек и оберток на g-сети.
  • Обсуждаются различные апи для работы с задачами, включая таски и тайск.

Очереди и потоки

31:34
  • Обсуждается понятие очереди и потока, их взаимосвязь и использование в программировании.
  • Упоминается, что главная очередь всегда работает в главном потоке, и что асинхронные задачи могут выполняться на главной очереди.

Классификация очередей

34:24
  • Рассматриваются различные виды очередей, включая серию и параллельные очереди.
  • Обсуждается проблема читателя-писателя, когда два потока пытаются обратиться к одному ресурсу, и как это может быть решено с помощью барьеров и других инструментов.

Респендер чейнс

37:10
  • Объясняется процесс обработки событий в приложении, начиная с нажатия пользователем на экран и заканчивая вызовом методов на каждой из вюх.
  • Упоминается, что этот процесс проходит через цепочку от контроллера до вьюх, и что каждая вюха вызывает метод кен перформ-экшн для обработки события.

Анимация и рендер-сервер

39:06
  • Вопрос о том, как анимация влияет на рендер-сервер.
  • Ответ: анимация не должна влиять на рендер-сервер, так как она происходит на отдельном лейере.

Приоритеты и контент-хагинг

42:19
  • Вопрос о разнице между контент-хагингом и контент-резистом с приоритетом.
  • Ответ: контент-хагинг - это нежелание увеличиваться, а контент-резист - это нежелание уменьшаться.

Решение системы уравнений

45:02
  • Вопрос о том, как контент-резистенс и контент-хаген влияют на систему уравнений, которая решает размер вьюхи.
  • Ответ: они могут влиять на конечный фрейм, но не на систему уравнений.

Изменение коэффициентов

47:44
  • Вопрос о том, как изменить коэффициенты в системе уравнений для решения проблемы с лагами.
  • Ответ: можно изменить коэффициенты, но это может привести к другим проблемам.

Обсуждение архитектуры и солит

50:03
  • Собеседник обсуждает архитектуру и солит, но не может вспомнить конкретные принципы.
  • Он предлагает обсудить другие темы, такие как инверсия зависимости и ее контроллер.

Общие рекомендации для интервью

56:12
  • Собеседник дает общие рекомендации для интервью, включая не подчеркивать свои слабости и не говорить о том, что не работал с определенными технологиями.
  • Он также подчеркивает важность тестирования и модульности в архитектуре.

Обсуждение архитектуры и Swift

1:00:17
  • Собеседник обсуждает архитектуру и Swift, но не упоминает про стебл.
  • Он также обсуждает массивы и их количество, но не углубляется в детали.

Многопоточность и анимация

1:03:26
  • Собеседник обсуждает многопоточность и анимацию, но не упоминает о барьерах и группах.
  • Он также обсуждает респондер чейн и ранлуп, но не углубляется в детали.

Респондер чейн и таблицы

1:06:38
  • Собеседник обсуждает респондер чейн и таблицы, но не упоминает о рендер-сервере и фрейм бафере.
  • Он также обсуждает тени оф. скрин рендеринг и проблемы с версткой, но не углубляется в детали.

Заключение

1:10:29
  • Собеседник делает вывод, что собеседник, вероятно, подходит для работы на уровне медла, но не джуниора.
  • Он также предлагает подписаться на его канал и обратиться к нему лично для проведения интервью.