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

channel icon
Разбираем вопросы собеседований на iOS / Swift Developer

Сайт: easyoffer.ru

Условия размещения

Цена за 48 часов в ленте 1750,00
Цена за 1 час закрепления N/A
Взаимопиар Нет
Дополнительные условия рекламы Отсутствуют
+4
1 907
подписчиков
-62
474
охват 1 публикации
0
~3
постов / день
-3,3%
24,9%
ERR % ?

Статистика

Последние публикации

Swift | Вопросы собесов
14 ноября 2024 г. 19:10
🤔🤔 Расскажи об MVVM

MVVM (Model-View-ViewModel) — это архитектурный паттерн, часто используемый в разработке UI-приложений, где Model управляет данными, View отвечает за представление, а ViewModel связывает данные с представлением. ViewModel содержит логику и данные, необходимые для отображения в View, и часто использует привязку данных, чтобы автоматически обновлять интерфейс при изменении данных. Этот паттерн помогает разделить логику приложения и интерфейс, облегчая поддержку и тестирование кода.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚📚 Базу знаний Базу знаний
Swift | Вопросы собесов
14 ноября 2024 г. 12:10
🤔 Что ближе к модулю у тебя?Что ближе к модулю у тебя?

Модуль в iOS-разработке представляет собой логически изолированную часть приложения, включающую все необходимые компоненты для выполнения определённой функции. Вот пример модуля User с использованием архитектурного шаблона VIPER:

🚩Пример структуры модуля `User`

- Modules
- User
- View
- UserView.swift
- UserViewController.swift
- Interactor
- UserInteractor.swift
- Presenter
- UserPresenter.swift
- Entity
- UserEntity.swift
- Router
- UserRouter.swift


🚩Пример кода для модуля `User`

UserView.swift
import UIKit

protocol UserViewProtocol: AnyObject {
var presenter: UserPresenterProtocol? { get set }
func showUserData(_ user: UserEntity)
}

class UserView: UIViewController, UserViewProtocol {
var presenter: UserPresenterProtocol?

override func viewDidLoad() {
super.viewDidLoad()
presenter?.viewDidLoad()
}

func showUserData(_ user: UserEntity) {
// Обновление UI с данными пользователя
}
}


UserInteractor.swift
protocol UserInteractorProtocol: AnyObject {
var presenter: UserPresenterProtocol? { get set }
func fetchUserData()
}

class UserInteractor: UserInteractorProtocol {
weak var presenter: UserPresenterProtocol?

func fetchUserData() {
let user = UserEntity(name: "John Doe", age: 30)
presenter?.didFetchUserData(user)
}
}


UserPresenter.swift
protocol UserPresenterProtocol: AnyObject {
var view: UserViewProtocol? { get set }
var interactor: UserInteractorProtocol? { get set }
var router: UserRouterProtocol? { get set }
func viewDidLoad()
func didFetchUserData(_ user: UserEntity)
}

class UserPresenter: UserPresenterProtocol {
weak var view: UserViewProtocol?
var interactor: UserInteractorProtocol?
var router: UserRouterProtocol?

func viewDidLoad() {
interactor?.fetchUserData()
}

func didFetchUserData(_ user: UserEntity) {
view?.showUserData(user)
}
}


UserEntity.swift
struct UserEntity {
let name: String
let age: Int
}


UserRouter.swift
protocol UserRouterProtocol: AnyObject {
static func createModule() -> UIViewController
}

class UserRouter: UserRouterProtocol {
static func createModule() -> UIViewController {
let view = UserView()
let presenter: UserPresenterProtocol & UserInteractorOutputProtocol = UserPresenter()
let interactor: UserInteractorProtocol = UserInteractor()
let router: UserRouterProtocol = UserRouter()

view.presenter = presenter
presenter.view = view
presenter.interactor = interactor
presenter.router = router
interactor.presenter = presenter

return view
}
}


Ставь 👍👍 и забирай 📚📚 Базу знаний Базу знаний
Swift | Вопросы собесов
13 ноября 2024 г. 19:10
🤔 Что такое ARC?

ARC (Automatic Reference Counting) — это система управления памятью, используемая в Swift и Objective-C, которая автоматически управляет жизненным циклом объектов. ARC отслеживает, сколько ссылок (или "счетчиков ссылок") указывает на объект, и освобождает его из памяти, когда счетчик достигает нуля. Это помогает предотвратить утечки памяти, хотя циклические ссылки всё равно могут требовать ручного разрыва.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚📚 Базу знаний Базу знаний
Swift | Вопросы собесов
13 ноября 2024 г. 17:39
IT-аутсорсинг для бизнеса: будни и лайфхакиIT-аутсорсинг для бизнеса: будни и лайфхаки

Ищете надежного партнера в IT?
Подписывайтесь на наш канал и узнавайте больше об аутсорсинге системного администрирования!
Мы делимся опытом, рассказываем о решенных кейсах и показываем будни нашей команды.
Погрузитесь в мир, где профессионалы берут на себя все IT-вопросы, а ваш бизнес растет без технических проблем.

Присоединяйтесь и убедитесь сами, как мы делаем IT простым и надежным!

ПодписатьсяПодписаться

#реклама
О рекламодателе
Swift | Вопросы собесов
13 ноября 2024 г. 17:39
Swift | Вопросы собесов
13 ноября 2024 г. 17:39
Swift | Вопросы собесов
13 ноября 2024 г. 12:10
🤔 Если внутри класса добавить object и companion object, какая между ними разница?Если внутри класса добавить object и companion object, какая между ними разница?

🚩Обычный объект внутри класса

Когда вы добавляете обычный объект внутри класса, вы создаете именованный объект, который является экземпляром анонимного класса. Он может содержать свойства и методы, и он создается один раз при создании экземпляра внешнего класса.
class MyClass {
let instanceProperty = "Instance Property"

struct MyObject {
static let objectProperty = "Object Property"

static func objectMethod() {
print("This is an object method")
}
}
}

// Использование
let myClassInstance = MyClass()
print(MyClass.MyObject.objectProperty) // Доступ к свойствам и методам объекта через имя объекта
MyClass.MyObject.objectMethod()


Companion Object (компаньон-объект)
Companion object позволяет определить статические члены класса. Эти члены доступны без создания экземпляра класса. Вы можете использовать companion object для хранения статических методов и свойств, которые могут быть вызваны напрямую через имя класса.
class MyClass {
let instanceProperty = "Instance Property"

companion object {
let companionProperty = "Companion Property"

func companionMethod() {
print("This is a companion object method")
}
}
}

// Использование


🚩Основные различия

🟠Доступность
Обычный объект: Доступ к свойствам и методам обычного объекта осуществляется через его имя. Companion Object: Доступ к свойствам и методам компаньон-объекта осуществляется через имя класса.

🟠Использование в контексте экземпляров класса
Обычный объект: Не привязан к конкретному экземпляру класса и создается один раз для всего класса. Companion Object: Также не привязан к конкретному экземпляру класса и создается один раз для всего класса, но служит для определения статических членов класса.

🟠Неявное имя
Обычный объект: Требует явного имени для доступа. Companion Object: Имеет неявное имя Companion, если не указано другое имя. Это позволяет получить доступ к его членам без явного указания имени.

🚩Пример использования и различий

class MyClass {
val instanceProperty = "Instance Property"

object MyObject {
val objectProperty = "Object Property"

fun objectMethod() {
println("This is an object method")
}
}

companion object {
val companionProperty = "Companion Property"

fun companionMethod() {
println("This is a companion object method")
}
}
}

// Доступ к свойствам и методам объекта через имя объекта
println(MyClass.MyObject.objectProperty)
MyClass.MyObject.objectMethod()

// Доступ к свойствам и методам компаньон-объекта через имя класса
println(MyClass.companionProperty)
MyClass.companionMethod()


Ставь 👍👍 и забирай 📚📚 Базу знаний Базу знаний
Swift | Вопросы собесов
12 ноября 2024 г. 19:10
🤔 В чем разница между MVC и MVVM

MVC (Model-View-Controller) и MVVM (Model-View-ViewModel) — это архитектурные шаблоны для организации кода, но они различаются подходом к связи компонентов. В MVC контроллер управляет взаимодействием между моделью и представлением, а представление напрямую зависит от контроллера, что упрощает структуру, но может усложнять тестирование. В MVVM модель представления (ViewModel) связывается с представлением через механизм привязки данных, что делает его более удобным для двусторонней связи и улучшает тестируемость и поддерживаемость, особенно в приложениях с пользовательским интерфейсом, например, на Android или WPF.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚📚 Базу знаний Базу знаний
Swift | Вопросы собесов
12 ноября 2024 г. 13:48
Помощь в трудоустройстве в IT-сфере!Помощь в трудоустройстве в IT-сфере!

В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специалистов. Теперь любой желающий может попробовать себя в IT с полного нуля и начать обучение бесплатно!

Узнайте про дальнейшее трудоустройство в ведущие IT-компании для восполнения кадрового дефицита.

Для этого нужно:

- Перейти по ссылке
- Заполнить анкету и ответить на вопросы (занимает менее 3 минут)
- На основании ваших ответов вы сразу узнаете, подходит ли вам сфера IT и сможете ли вы в ней работать

Перейти на сайтПерейти на сайт

#реклама 16+
urban-university.ru

О рекламодателе
Swift | Вопросы собесов
12 ноября 2024 г. 13:48
Swift | Вопросы собесов
12 ноября 2024 г. 13:48
Swift | Вопросы собесов
12 ноября 2024 г. 13:48
Swift | Вопросы собесов
12 ноября 2024 г. 13:48
Swift | Вопросы собесов
12 ноября 2024 г. 13:48
Swift | Вопросы собесов
12 ноября 2024 г. 13:48
Swift | Вопросы собесов
12 ноября 2024 г. 13:48
Swift | Вопросы собесов
12 ноября 2024 г. 13:48
Swift | Вопросы собесов
12 ноября 2024 г. 13:48
Swift | Вопросы собесов
12 ноября 2024 г. 12:10
🤔 Что такое companion object?Что такое companion object?

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

🚩Companion Object

Используется для определения статических членов класса. Они могут быть вызваны без создания экземпляра класса.
class MyClass {
companion object {
fun staticMethod() {
println("This is a static method")
}
}
}

// Вызов метода без создания экземпляра класса
MyClass.staticMethod()


🚩Аналог в Swift

В Swift статические члены класса (свойства и методы) определяются с использованием ключевого слова static. Статические члены принадлежат самому классу, а не его экземплярам.
class MyClass {
static func staticMethod() {
print("This is a static method")
}
}

// Вызов метода без создания экземпляра класса
MyClass.staticMethod()


🚩Свойства и методы класса

Также можно использовать ключевое слово class для определения методов класса, которые могут быть переопределены в подклассах.
class MyClass {
class func classMethod() {
print("This is a class method")
}
}

class SubClass: MyClass {
override class func classMethod() {
print("This is an overridden class method")
}
}

// Вызов метода без создания экземпляра класса
MyClass.classMethod() // Output: This is a class method
SubClass.classMethod() // Output: This is an overridden class method


Ставь 👍👍 и забирай 📚📚 Базу знаний Базу знаний
Swift | Вопросы собесов
12 ноября 2024 г. 10:35
Репост:
Твое резюме на HeadHunter — ОК, если ты видишь это.

HeadHunter сравнивает ключевые навыки в твоем резюме и в вакансии и в момент отклика отображает, насколько % ты соответствуешь требованиям.

Специальный бейджик «Подходит по навыкам на 100%» отображается, если соответствие составляет более 60%.

Если при просмотре вакансий ты видишь такой бейджик, это значит, что список навыков в твоем резюме качественно составлен.

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

О том, как правильно указывать ключевые навыки и оптимизировать свое резюме я уже рассказывал в этом видео