Site icon AppTractor

50 вопросов и ответов для собеседования iOS-разработчиков: часть 2

← Предыдущая часть

26. Что такое фасад (шаблон проектирования)?

Шаблон фасад обеспечивает единый интерфейс для сложной подсистемы. Вместо того, чтобы показывать пользователю набор классов и их API, вы открываете только один простой унифицированный API, делегирующий запросы соответствующим объектам системы.

27. Что такое шаблон декоратор?

Шаблон декоратор динамически добавляет поведение и обязанности к объекту без изменения его кода. Это альтернатива подклассу, где вы изменяете поведение класса, обертывая его другим объектом.

В Objective-C есть две очень распространенные реализации этого шаблона: категория и делегирование. В Swift есть также две очень распространенные реализации этого шаблона: расширения и делегирование.

28. Что такое шаблон адаптер?

Адаптер позволяет классам с несовместимыми интерфейсами работать вместе. Он обертывается вокруг объекта и предоставляет стандартный интерфейс для взаимодействия с этим объектом.

29. Что такое шаблон наблюдатель?

В наблюдателе один объект уведомляет другие объекты о любых изменениях состояния.

Cocoa реализует шаблон наблюдателя двумя способами: уведомлениями и наблюдением за ключевыми значениями (Key-Value Observing, KVO).

30. Что такое шаблон хранитель?

Хранитель сохраняет ваши данные в каком-либо месте, затем внешнее состояние может быть восстановлено без нарушения инкапсуляции; то есть частные данные остаются частными. Одним из специальных применений хранителя в Apple — это архивирование, с другой стороны, iOS использует хранитель как часть State Restoration.

31. Объясните MVC?

32. Объясните MVVM?

Независимое отображение вашего представления и его состояния в UIKit. Модель представления вызывает изменения в модели и обновляет себя, и так как мы имеем связь между моделью и моделью представления, первая обновляется соответствующим образом.

Ваша модель представления фактически возьмет вашу модель, и сможет отформатировать информацию, которая будет отображаться в вашем представлении.

Существует более известная структура под названием RxSwift. Она содержит RxCocoa, которая является реактивными расширениями для Cocoa и CocoaTouch.

33. Сколько различных аннотаций доступно в Objective-C?

34. Какие существуют ограничения JSON/PLIST?

35. Какие существуют ограничения SQLite?

36. Какие преимущества у Realm?

37. Сколько существует API для определения местоположения с эффективной работой аккумулятора?

Их три:

38. Каково главное преимущество Swift?

Несколько главных плюсов Swift:

39. Объясните Generic в Swift?

Generic создают код, который не требует особых типов данных. не пропустите статью.

40. Объясните lazy в Swift?

Начальное значение ленивых свойств вычисляется только тогда, когда свойство вызывается в первый раз. Бывают ситуации, когда ленивые свойства оказываются очень удобны разработчикам.

41. Что такое defer?

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

42. Как передать переменную в качестве ссылки?

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

43. Почему лучше использовать функции высшего порядка?

Функции высшего порядка — это функции, которые берут другую функцию в качестве параметра или возвращают функцию как результат. Swift определяет эти функции как CollectionType.

Самой базовой функцией высшего порядка является filter.

44. Что такое параллелизм?

Параллелизм разделяет пути выполнения вашей программы, чтобы они могли работать одновременно. Основные термины:

45. Что такое Grand Central Dispatch (GCD)?

GCD — это библиотека, которая предоставляет низкоуровневый и объектный API для одновременного запуска задач при управлении потоками за кулисами. Терминология:

46. Читатели-писатели?

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

47. NSOperation — NSOperationQueue — NSBlockOperation?

NSOperation добавляет немного дополнительных расходов по сравнению с GCD, но при его использовании мы можем добавить зависимость между различными операциями и повторное использование, отменить или приостановить их.

NSOperationQueue позволяет создавать пул потоков и использовать его для параллельного выполнения NSOperations. Операционные очереди не являются частью GCD.

NSBlockOperation позволяет создавать NSOperation из одного или нескольких замыкающих выражений. NSBlockOperations может иметь несколько блоков, которые выполняются одновременно.

48. KVC — KVO?

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

KVO означает наблюдение за ключевыми значениями и позволяет контроллеру или классу наблюдать за изменением значения свойства. В KVO объект может запросить уведомление о любых изменениях конкретного свойства: когда это свойство изменяет значение, наблюдатель автоматически уведомляется.

49. Объясните методы сопоставления с образцом в Swift?

50. Какие существуют преимущества Guard?

Есть два больших преимущества guard. Во-первых, это избегание большого числа утверждений if let, встроенных друг в друга. Во-вторых, это быстрый выход из функции, используя break или return.

Exit mobile version