Что такое примитивы в Swift и какие они бывают
Что проверяют
Знаете ли вы, что примитивов в привычном по другим языкам смысле в Swift нет: целые, дробные и логический тип это обычные структуры стандартной библиотеки. Вопрос быстро показывает, пришёл ли кандидат с чужой моделью в голове и не путает ли он типы значения со ссылочными.
Как отвечать
Начать стоит с поправки: базовые типы в Swift это структуры, то есть типы значения. У них есть свойства, методы и соответствие протоколам, а деления на примитивы и объекты с упаковкой, как в языках с виртуальной машиной, здесь нет.
Основные: Int размером в машинное слово плюс явные Int8, Int32, UInt и другие; Double и Float для чисел с плавающей точкой; Bool; Character, который представляет расширенный кластер графем, а не байт и не кодовую единицу; String как коллекцию символов.
Семантика значения означает, что присваивание копирует. Для строк и коллекций копирование ленивое, настоящая копия делается при первой записи, поэтому за неё платят не всегда.
Ещё две вещи, которые обычно ждут следом. Неявных числовых преобразований нет: целое и дробное складываются только через явное создание нужного типа. Отсутствие значения выражается опционалом, а не нулём и не специальной константой, и разворачивать его нужно осознанно.
Где спотыкаются
Называют строку примитивом и считают её ссылочной по привычке из других языков. Она структура: передали в функцию, изменили внутри, оригинал не поменялся, если параметр не помечен как изменяемый по ссылке.
Считают дробный тип пригодным для денег. Двоичная плавающая точка не представляет десятичные дроби точно, и сложение копеек накапливает ошибку. Деньги держат в целых минимальных единицах или в десятичном типе.
Путают символ и байт: берут длину строки, ожидая число байтов, и ломаются на эмодзи и составных символах. Длина в Swift считается по кластерам графем, а для байтов есть отдельное представление строки.