В продолжении статьи Топ 20 вопросов на iOS собеседовании. Уровень Junior рассмотрим вопросы на собеседовании iOS разработчика уровня Middle. Как и в прошлый раз, рассмотрим возможный вариант ответа на каждый вопрос. Перед тем, как приступите к изучению вопросов, обратим внимание на следующий факт: нельзя однозначно определить уровень разработчика как Junior/Middle/Senior. На одних собеседованиях вопросы на … Продолжить чтение «Топ 20 вопросов на iOS собеседовании. Уровень Middle»
Проблемы многопоточности в Swift
При работе с многопоточностью перед вами всегда будут вставать вопросы: по какому принципу нужно переключаться между задачами и в каком порядке они должны выполняться? В этой статье мы поговорим о шести проблемах многопоточности: Race condition, Priority inversion, Deadlock, Livelock, Starvation и Data Race. Race condition (Состояние гонки) Итак, проблема Состояние гонки — ситуация, возникающая, когда … Продолжить чтение «Проблемы многопоточности в Swift»
Жизненный цикл объекта в Swift
У всех объектов в Swift есть свой собственный жизненный цикл (Object lifecycle). Он хорошо задокументирован в исходном коде. Жизненный цикл состоит из пяти состояний: Live, Deiniting, Deinited, Freed и Dead. Состояние Live При создании объекта он переходит в состояние Live. В этом состоянии счетчик ссылок выставлен минимум в 1. Например, у нашего объекта есть сильная … Продолжить чтение «Жизненный цикл объекта в Swift»
Что такое Side table (Боковая таблица)?
Похожий вопрос редко встречается на собеседованиях, но это не значит, что тему стоит оставлять неизученной. Разберем понятие Боковая таблица или Side Table. Вкратце, Side Table — механизм, с помощью которого реализуются слабые ссылки. Не каждый объект содержит слабые ссылки, следовательно, и боковые таблицы, иначе это было бы расточительно. Вместо того чтобы напрямую указывать на объект, … Продолжить чтение «Что такое Side table (Боковая таблица)?»
Механизм Copy-on-Write
В этой статье рассмотрим механизм Copy-on-Write и когда его можно использовать. Ранее мы уже рассматривали Reference Type и Value Type. Так вот, Value Type имеют семантику копирования — это когда вы присваиваете или передаете в качестве параметра функции экземпляр типа Value Type, то данные этого экземпляра будут скопированы. В итоге получится два одинаковых экземпляра, но … Продолжить чтение «Механизм Copy-on-Write»
NSOperation или Grand Central Dispatch
Распространенный вопрос на собеседованиях: чем отличается NSOperation от GCD? Когда использовать GCD, а когда NSOperation? Начнем с определений: GCD — это низкоуровневый API на основе C, который напрямую взаимодействует с уровнем Unix системы. NSOperation и NSOperationQueue являются классами Objective-C. NSOperation — оболочка GCD. Если вы используете NSOperation, то вы неявно используете Grand Central Dispatch. Преимущество GCD Преимущества NSOperation Когда использовать GCD … Продолжить чтение «NSOperation или Grand Central Dispatch»