Тех собес на middle-senior IOS Developer в ****

Доступно с премиум-подпиской

Оформите премиум-подписку, чтобы получить доступ к:

  • Фильтрации по компаниям
  • Названиям компаний в интервью
  • Видеозаписям собеседований в категории IOS Developer

Посмотреть видео в категории

(2024-07-22)

— Общие вопросы:

1. Как бы вы назвали классы для моделей данных и для классов, которые содержат бизнес-логику (properties и functions)? 2. Объясните разницу между class и struct. 3. Как обрабатывать ошибки в сервисе, если он возвращает Result (success или failure)?ли failure)?

— Работа с UI и данными:

1. Как правильно обрабатывать асинхронные операции и обновлять UI из фонового потока? 2. Как вы обеспечиваете безопасный доступ к элементу массива по индексу, чтобы избежать ошибок? 3. Каким образом вы бы реализовали регистрацию UITableViewCell и её переиспользование? 4. Почему важно делать ссылку на self слабой (weak или unowned) при работе с замыканиями, чтобы избежать утечек памяти? 5. Как убедиться, что loadView отрабатывает только один раз при создании контроллера?нтроллера?

— Работа с кодом:

1. Что такое CodingKeys и для чего он используется? 2. Для чего класс помечают как final?al`?

— Задача: Проведите код-ревью, найдите и исправьте ошибки в коде.

import UIKit
import Foundation

class ProductService {    func loadProducts(callback: @escaping ([Product]?, Error?) -> Void) {        DispatchQueue.global(qos: .background).async {            let products: [Product] = // …get products from network            callback(products, nil)        }    }}
class Product: Decodable {    let first_name: String}
class ProductViewController: UIViewController, UITableViewDataSource {    let tableView = UITableView()    var products: [Product] = []
text📋override func viewDidLoad() {
    let service = ProductService()
    
    //setup tableView code
    
    service.loadProducts { (products, error) in
        if products != nil {
            self.products = products!
            self.tableView.reloadData()
        }
    }
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = UITableViewCell()
    cell.textLabel?.text = products[indexPath.row].first_name
    return cell
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return products.count
}

}