interview:developer:ios:start

This is an old revision of the document!


iOS Developer Interview

Consider the following code:

var array1 = [1, 2, 3, 4, 5]
var array2 = array1
array2.append(6)
var len = array1.count

What's the value of the len variable, and why?

Consider the following code:

let op1: Int = 1
let op2: UInt = 2
let op3: Double = 3.34
var result = op1 + op2 + op3

Where is the error and why? How can it be fixed?

Consider the following code:

class Master {
    lazy var detail: Detail = Detail(master: self)
    
    init() {
        println("Master init")
    }
    
    deinit {
        println("Master deinit")
    }
}

class Detail {
    var master: Master
    
    init(master: Master) {
        println("Detail init")
        self.master = master
    }
    
    deinit {
        println("Detail deinit")
    }
}

func createMaster() {
    var master: Master = Master()
    var detail = master.detail
}
    
createMaster()

What is the bug and how does it affect memory? How can it be fixed?

Consider the following UITableViewCell constructor:

init(style: UITableViewCellStyle, reuseIdentifier: String?)

What is the purpose of the reuseIdentifier? What is the advantage of setting it to a non-nil value?

class MainViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        print("MainViewController :", "viewDidLoad")
    }
    
    override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()
        print("MainViewController :", "viewWillLayoutSubviews")
    }
    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        print("MainViewController :", "viewDidLayoutSubviews")
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        print("MainViewController :", "viewWillAppear")
    }
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        print("MainViewController :", "viewDidAppear")
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        print("MainViewController :", "viewWillDisappear")
    }
    
    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        print("MainViewController :", "viewDidDisappear")
    }
    
    deinit {
        print("MainViewController :", "deinit")
    }
}

class ViewControllerTwo: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        print("ViewControllerTwo :", "viewDidLoad")
    }
    
    override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()
        print("ViewControllerTwo :", "viewWillLayoutSubviews")
    }
    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        print("ViewControllerTwo :", "viewDidLayoutSubviews")
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        print("ViewControllerTwo :", "viewWillAppear")
    }
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        print("ViewControllerTwo :", "viewDidAppear")
    }
    
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        print("ViewControllerTwo :", "viewWillDisappear")
    }
    
    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        print("ViewControllerTwo :", "viewDidDisappear")
    }
    
    deinit {
        print("ViewControllerTwo :", "deinit")
    }
}
  • Write down the log results at 3 different cases
    • Start MainViewController
    • Push to ViewControllerTwo form MainViewController
    • User press back button from ViewControllerTwo
  • interview/developer/ios/start.1502380075.txt.gz
  • Last modified: 2017/08/10 23:47
  • by don.lee