iOS Интервью вопросы с ответами

В этой статье мы рассмотрим некоторые распространенные вопросы, которые задают во многих интервью.

В. Что такое ключевое слово defer в Swift?

defer — это оператор, который используется для выполнения кода непосредственно перед передачей управления программой за пределы области, в которой появляется оператор.

пример defer

В приведенном выше примере вывод будет таким:

Изображение будет удалено…

Фамилия удалена…

  • Если в одной и той же области действия появляется несколько операторов отсрочки, порядок их появления является обратным порядку их выполнения.

Вывод будет таким:

  • defer не фиксирует ссылку или текущее значение переменной.

На выходе будет «Лютер Кинг» 2 раза.

  • Мы не можем прервать выполнение отложенного выполнения или использовать return, continue или break внутри блока отложенного выполнения.

. . .

В. Что такое CustomStringConvertible?

Это протокол, позволяющий типу предоставлять собственные текстовые описания. Каждое значение в Swift является конвертируемым.

Типы, соответствующие протоколу CustomStringConvertible, могут предоставлять собственное представление для использования при преобразовании экземпляра в строку. Инициализатор String(описание:) является предпочтительным способом преобразования экземпляра любого типа в строку. Если переданный экземпляр соответствует CustomStringConvertible, инициализатор String(describing:) и функция print(_:) используют свойство пользовательского описания экземпляра.

Прямой доступ к свойству описания типа или использование CustomStringConvertible в качестве универсального ограничения не рекомендуется.

Давайте посмотрим на примере, как использовать этот протокол:

Без протокола соответствия

Вывод будет:

Человек(имя: «Алекс Джон», адрес: «Калифорния», возраст: 25)

Соответствует протоколу

Вывод будет:

Алексу Джону 25 лет, он живет в Калифорнии.

Предпочитаете способ печати пользовательского описания экземпляра, например:

print(String(описание: Алекс))

Примечание. Необходимо согласовать протокол «CustomStringConvertible» для работы с пользовательским выводом «description».

. . .

В. В чем разница между массивом и набором?

  • Массив — это набор упорядоченных значений, а Set — набор уникальных значений.
  • Массив полезен, когда для вас важен порядок, а Set полезен, когда вам нужно убедиться, что значение появляется в Set один раз.

Пример:

Как видно из приведенного выше примера, мы инициализировали массив и набор строковых значений.

В выводе мы можем заметить, что порядок Set не такой, как мы инициализировали. Набор является неупорядоченной коллекцией, поэтому он может давать вам другой порядок результата всякий раз, когда вы к нему обращаетесь.

Кроме того, мы инициализировали Set с некоторыми повторяющимися элементами, такими как «Джон». Итак, на выходе мы получаем уникальные значения. Даже если вы напечатаете счетчик коллекции Set с повторяющимися значениями, он вернет счетчик как количество уникальных элементов.

Примечание. Вы не можете получить доступ к элементу в наборе с помощью оператора «индекс». как имена с набором [0]. Вы должны перебирать элементы, чтобы получить доступ к определенному элементу.

В приведенном выше примере мы пытаемся добавить больше элементов в массив и установить. В массиве мы можем использовать функции insert() и append() для добавления элементов. Но в Set мы можем использовать только функцию insert().

Примечание. Значения, хранящиеся в наборе, должны соответствовать протоколу Hashable, чтобы гарантировать, что каждое значение появится в наборе один раз.

Когда вы вставляете элемент в набор, он возвращает кортеж (inserted, memberAfterInsert). Мы можем убедиться, что элемент был вставлен или нет, используя флаг «вставлен».

Чтобы удалить элемент из набора, мы можем просто вызвать функцию remove(member:) и вернуть значение, которое было удалено. Возвращает nil, если значение не существует в наборе.

Сила сетов:

Мы также можем выполнять некоторые другие функции над наборами, которые недоступны в массиве, некоторые полезные функции:

  • union(): для объединения двух наборов без повторяющихся значений.
  • пересечение (): чтобы получить общие элементы в двух наборах.

. . .

Дополнительные вопросы будут добавлены в ближайшее время в этой статье.

Напишите свой вопрос в поле для комментариев, на который вы хотите получить ответ.