Расскажите о вашем опыте в iOS-разработке.

Ответ

Имею 4+ года коммерческого опыта в разработке нативных iOS-приложений на Swift. Работал над проектами от стартапов до enterprise-решений с полным циклом: от проектирования до публикации в App Store.

Ключевые компетенции:

  • Архитектура: Глубокий практический опыт с MVVM, Clean Swift, знание VIPER. Фокус на создании тестируемого и поддерживаемого кода.
  • UI: UIKit (Auto Layout, кастомные анимации) и SwiftUI.
  • Асинхронность и данные: Combine, async/await, работа с Core Data, Realm.
  • Сеть: URLSession, Alamofire, опыт с GraphQL (Apollo).
  • Инструменты: Оптимизация производительности и памяти с помощью Instruments, настройка CI/CD.

Пример кода (MVVM с Combine):

class UserViewModel: ObservableObject {
    @Published private(set) var users: [User] = []
    private let service: NetworkServiceProtocol
    private var cancellables = Set<AnyCancellable>()

    init(service: NetworkServiceProtocol = NetworkService()) {
        self.service = service
    }

    func fetchUsers() {
        service.fetchUsers()
            .receive(on: DispatchQueue.main)
            .sink(
                receiveCompletion: { completion in
                    // Обработка ошибок
                },
                receiveValue: { [weak self] users in
                    self?.users = users
                }
            )
            .store(in: &cancellables)
    }
}

Работал в Agile-командах, активно участвовал в код-ревью и написании технической документации.

Ответ 18+ 🔞

Да что ж такое, блядь! Опять эти резюме, как будто роботы писали, сука. Ну ладно, слушай сюда, раз уж надо себя продать, как последнюю мартышлюшку на рынке.

Имею, типа, за плечами четыре с гаком года, где я на Swift'е эти ваши айфонские приложения клепал. От мелких стартапов, где мы сраные прототипы на коленке собирали, до этих ваших enterprise-монстров, где уже всё по взрослому: от идеи до заливания в App Store, где модераторы — пидары налетели и всё отклонить норовят.

Что я там умею, блядь:

  • Архитектура: Ну, MVVM — это как родной, на нём собаку съел. Clean Swift и VIPER тоже в зубах перетёр. Главное — чтобы код не превращался в говногорку, которую потом только выкидывать. Люблю, когда его тестировать можно, а не молиться, чтобы сработало.
  • UI: На UIKit'е, блядь, уже все эти constraint'ы во снах снились. И на SwiftUI уже переползаю, хоть он местами ещё тот подарок, ебать мои старые костыли.
  • Всякая асинхронная хуйня: Combine, async/await — чтобы всё не висло, как говно в проруби. С данными работал: и в Core Data лазил, и в Realm.
  • Сеть: От простого URLSession до Alamofire. С GraphQL (через Apollo) тоже сталкивался, интересная штука, хоть и непривычная сначала.
  • Инструменты: Ну а как без Instruments-то, блядь? Когда приложение жрёт память, как не в себя, или тормозит — тут только его и спасатель. И CI/CD настраивал, чтобы не тыкать каждый раз в Xcode, как обезьяна.

Вот, глянь, кусочек кода, чтобы не на словах было (MVVM + Combine):

class UserViewModel: ObservableObject {
    @Published private(set) var users: [User] = []
    private let service: NetworkServiceProtocol
    private var cancellables = Set<AnyCancellable>()

    init(service: NetworkServiceProtocol = NetworkService()) {
        self.service = service
    }

    func fetchUsers() {
        service.fetchUsers()
            .receive(on: DispatchQueue.main)
            .sink(
                receiveCompletion: { completion in
                    // Обработка ошибок
                },
                receiveValue: { [weak self] users in
                    self?.users = users
                }
            )
            .store(in: &cancellables)
    }
}

Работал в этих ваших Agile-командах, где каждое утро стендап — как допрос с пристрастием. Код-ревью устраивал так, что некоторые коллеги волнение ебать чувствовали, но зато потом спасибо говорили. И документацию эту скучную тоже писал, потому что без неё через полгода сам ни хуя не вспомнишь, как это работает.