cookie

Мы используем файлы cookie для улучшения сервиса. Нажав кнопку «Принять все», вы соглашаетесь с использованием cookies.

avatar

Swift | Вопросы собесов

Разбираем вопросы собеседований на iOS / Swift Developer Сайт: easyoffer.ru Реклама: @easyoffer_adv

Больше
Рекламные посты
1 388
Подписчики
+824 часа
+277 дней
+31230 дней

Загрузка данных...

Прирост подписчиков

Загрузка данных...

🤔 Что такое опциональное связывание в Swift?Anonymous voting
  • Процесс проверки и развертывания опциональных значений
  • Добавление новых опций к существующим типам
  • Связывание методов с объектом во время выполнения
  • Автоматическое преобразование типов
0 votes
🤯 1
Фото недоступноПоказать в Telegram
– Помощь с pet-проектом – Составление roadmap – Проведение код-ревью и mock-собеседования – Помощь с трудоустройством Все это и многое другое может Ментор. Он обеспечит вам необходимый boost, ускорит и упростит вход в IT. 🔥 Здесь размещен список менторов, и многие из них предлагают бесплатную первую консультацию
Показать все...
Что такое дженерики ? Спросят с вероятностью 27% Дженерики (generics) — это мощная особенность многих современных языков программирования, которые позволяют создавать гибкие, повторно используемые функции и типы данных, работающие с любым типом. Улучшают читаемость и безопасность типов кода, позволяя избежать дублирования кода и создавать более абстрактные, обобщённые решения. Ключевые аспекты:Повторное использование кода: Благодаря дженерикам, можно написать код, который будет работать с любым типом данных, что уменьшает необходимость в написании однотипного кода для разных типов. ✅Типобезопасность: Дженерики позволяют создавать код, который может работать с любым типом, при этом сохраняя строгую проверку типов на этапе компиляции. Это уменьшает вероятность ошибок во время выполнения. ✅Гибкость: Дженерики делают код более адаптируемым и легко расширяемым для работы с новыми типами, не требуя изменений в существующем коде. Функции
func swapTwoValues<T>(_ a: inout T, _ b: inout T) {
    let temporaryA = a
    a = b
    b = temporaryA
}

var int1 = 1
var int2 = 2
swapTwoValues(&int1, &int2) // int1 становится 2, int2 становится 1

var string1 = "Hello"
var string2 = "World"
swapTwoValues(&string1, &string2) // string1 становится "World", string2 становится "Hello"
Дженерик типы Могут хранить элементы любого типа.
var numbers: Array<Int> = [1, 2, 3]
var strings: Dictionary<String, String> = ["Key": "Value"]
Дженерик протоколы Также можно использовать с протоколами с помощью ассоциированных типов.
protocol Container {
    associatedtype Item
    mutating func append(_ item: Item)
    var count: Int { get }
    subscript(i: Int) -> Item { get }
}
Дженерики являются ключевой особенностью Swift, позволяя создавать гибкий и мощный код, способный работать с различными типами данных без потери безопасности типов. 👉 Можно посмотреть примеры как отвечают люди на этот вопрос, или перейти к списку 823 вопросов на IOS разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Показать все...
👍 5 1
🤔 Какой метод для работы с массивами не существует в Swift?Anonymous voting
  • map()
  • filter()
  • reduce()
  • collect()
0 votes
🤔 Что такое `optional` в Swift?Anonymous voting
  • Параметр функции
  • Тип переменной, который может содержать `nil`
  • Коллекция
  • Метод массива
0 votes
👾 1
Что может быть ключом и значением для dictionary ? Спросят с вероятностью 27% Словарь (Dictionary) представляет собой коллекцию пар ключ-значение, где каждый ключ должен быть уникальным. Чтобы использовать какой-либо тип в качестве ключа словаря, этот тип должен соответствовать протоколу Hashable. Это требование обусловлено тем, что Swift использует хеш-таблицу для хранения элементов словаря, что обеспечивает быстрый доступ к его элементам. КлючиДолжны быть уникальными: Каждый ключ в словаре должен быть уникальным. При попытке добавить в словарь элемент с ключом, который уже существует в словаре, старое значение будет заменено на новое. ✅Должны соответствовать протоколу `Hashable`: Это означает, что тип ключа должен иметь способность быть правильно хешированным. Большинство базовых типов Swift (например, String, Int, Double и др.) уже соответствуют Hashable, поэтому их можно использовать в качестве ключей без дополнительных усилий. ЗначенияМогут быть любого типа: Значения в словаре могут быть любого типа, и они не обязаны соответствовать протоколу Hashable. ✅Могут повторяться: Разные ключи могут иметь одинаковые значения. Пример:
var personAge: [String: Int] = ["John": 30, "Sara": 25]
В этом примере ключами являются строки (String), представляющие имена людей, а значениями — целые числа (Int), представляющие их возраст. Тип String соответствует Hashable, что делает его подходящим в качестве ключа для Dictionary. Собственные типы в качестве ключей Вы также можете использовать собственные пользовательские типы в качестве ключей словаря, но для этого ваш тип должен соответствовать протоколу Hashable. Это включает в себя реализацию требуемых методов для сравнения на равенство (==) и хеширования (hash(into:)).
struct Person: Hashable {
    var name: String
    var id: Int
}

var peopleDictionary: [Person: String] = [Person(name: "John", id: 1): "Engineer"]
Здесь Person — это пользовательский тип, соответствующий Hashable, что позволяет использовать его в качестве ключа. Значения в этом словаре — строки, описывающие профессию человека. 👉 Можно посмотреть примеры как отвечают люди на этот вопрос, или перейти к списку 823 вопросов на IOS разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Показать все...
Фото недоступноПоказать в Telegram
⚡️В сети начали находить курсы и книги известных онлайн школ в открытом доступе Вот отсортированная база с тонной материала(постепенно пополняется): 🔗 БАЗА (3385 видео): (343 видео, 87 книги) — Java (176 видео, 32 книги) — Git (293 видео, 63 книги) — C# (352 видео, 89 книги) — С++ (167 видео, 53 книги) — PHP (227 видео, 83 книги) — SQL (163 видео, 29 книги) — Linux (363 видео, 122 книги) — Python (415 видео, 168 книги) — Frontend (143 видео, 33 книги) — Flask (167 видео, 43 книги) — Django (197 видео, 49 книги) — Разработка ботов (137 видео, 93 книги) — Data Science (113 видео, 82 книги) — GameDev (129 видео, 73 книги) — QA Скачивать ничего не нужно — все выложили в Telegram и на YouTube с доступом по ссылке
Показать все...
👾 2
🤔 Какой модификатор доступа в Swift является наиболее ограничивающим?Anonymous voting
  • public
  • internal
  • fileprivate
  • open
0 votes
Что такое MemoryLayout и как посчитать размер протокола ? Спросят с вероятностью 18% MemoryLayout — это утилита, предоставляемая стандартной библиотекой, которая позволяет получить информацию о размерах и выравнивании типов данных в памяти. Это особенно полезно при низкоуровневой работе с памятью или при оптимизации программы. Использование MemoryLayout Позволяет определить три ключевых аспекта типа данных: ✅Size: общий размер в байтах, который требуется типу данных в памяти. ✅Stride: размер, который занимает экземпляр типа в массиве, включая возможные паддинги для выравнивания. ✅Alignment: требование к выравниванию в памяти, то есть, к какому адресу памяти должен быть выровнен адрес начала данных. Пример использования MemoryLayout в Swift:
struct ExampleStruct {
    var a: Int
    var b: Bool
}

print("Size of ExampleStruct: \(MemoryLayout<ExampleStruct>.size)")
print("Stride of ExampleStruct: \(MemoryLayout<ExampleStruct>.stride)")
print("Alignment of ExampleStruct: \(MemoryLayout<ExampleStruct>.alignment)")
Размер протокола Может быть запутанным, так как протоколы сами по себе не занимают пространство; они определяют интерфейс, которому должны соответствовать типы данных. Протоколы в Swift не имеют прямого размера в памяти, так как они не являются конкретными данными, а скорее определяют "шаблон", который должны следовать объекты или структуры. Однако, если вы работаете с экземплярами типов, соответствующих протоколу, то может возникнуть вопрос о размере этих экземпляров. В случае использования типа Any или любого другого обобщенного типа, который может принимать значения любых типов, соответствующих протоколу, размер такой переменной будет определяться как размер указателя в данной системе (обычно это 8 байт на 64-битных системах). Пример определения размера типа, соответствующего протоколу:
protocol SomeProtocol {
    var num: Int { get set }
}

struct SomeStruct: SomeProtocol {
    var num: Int
}

print("Size of SomeStruct: \(MemoryLayout<SomeStruct>.size)")
В этом примере, размер SomeStruct, которая соответствует SomeProtocol, будет равен размеру его единственного свойства num типа Int. Размеры типов данных, соответствующих протоколу, зависят от их конкретной реализации, а сам протокол не имеет непосредственного "размера" в традиционном понимании. 👉 Можно посмотреть примеры как отвечают люди на этот вопрос, или перейти к списку 823 вопросов на IOS разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Показать все...

🔥 4
🤔 Какой оператор используется для безопасного разворачивания опционалов?Anonymous voting
  • !
  • ?
  • ??
  • ...
0 votes
🤔 11🤯 3👾 1
Выберите другой тариф

Ваш текущий тарифный план позволяет посмотреть аналитику только 5 каналов. Чтобы получить больше, выберите другой план.