Một số câu hỏi ôn tập iOS

Begin

Câu 1

1
2
3
4
5
6
7
struct Question {
  var level: Int = 1
}

var question1 = Question()
var question2 = question1
question2.level = 2

Giá trị của question1.level sẽ như nào? Nếu Question là class thì có gì khác không? Tại sao?

Câu 2

1
2
3
4
5
var view1 = UIView()
view1.alpha = 0.5

let view2 = UIView()
view2.alpha = 0.5 // compile error?

Dòng code view2.alpha có báo lỗi không? tại sao?

Câu 3

1
2
3
4
5
var animals = ["fish", "cat", "chicken", "dog"]
animals.sort { (one: String, two: String) -> Bool in
    return one < two
}
print(animals)

Bạn đang dùng swift mà, hãy làm đoạn code trên ngắn gọn hơn nữa.

Câu 4

Ta tạo 2 class như và 2 instance của nó như sau

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
class Book {
    var title: String
    var author: String
    
    init(title: String, author: String) {
        self.title = title
        self.author = author
    }
}

class Box {
    var book: Book?
    
    init(book: Book?) {
        self.book = book
    }
}

var book = Book(title: "to mock a mockingbird", author: "Raymond Smullyan")
let box1 = Box(book: book)
let box2 = Box(book: book)

Sau đó ta thay đổi title cuốn sách ở box2

1
box2.book?.title = "to mock a mockingbird 2"

Đoạn code trên không báo lỗi, tuy nhiên khi kiểm tra lại giá trị box1.book.title ta thấy nó cũng thay đổi. Điều gì đã xảy ra và làm thế nào để có thể fix?

Câu 5

Optional là gì?

Câu 6

Sự khác biệt giữa classstruct

Câu 7

Generic giải quyết vấn đề gì?

Intermediate

Câu 1

Sự khác nhau giữa nil.none?

Câu 2

Tạo class và struct như sau:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
public class NoteClass {
    private(set) var title: String = "unknow"
    public func setTitle(_ title: String) {
        self.title = title
    }
}

let noteClass = NoteClass()
noteClass.setTitle("Monday")

public struct NoteStruct {
    private(set) var title: String = "unknow"
    public mutating func setTitle(_ title: String) {
        self.title = title
    }
}

let noteStruct = NoteStruct()
noteStruct.setTitle("Monday") // error!

Lỗi xảy ra ở dòng code cuối cùng. Hãy giải thích tại sao và cách fix?

Câu 3

1
2
3
4
5
6
7
8
9
var animal = "cat"

let closure = { [animal] in
    print("I love \(animal)")
}

animal = "dog"

closure()

Đoạn code trên in ra cái gì? Tại sao?

Câu 4

Ở objc bạn có thể định nghĩa const:

1
const int number = 0;

Với swift thì:

1
let number = 0

Có gì khác nhau giữa 2 cách trên không?

Câu 5

Sự khác nhau giữa static functionclass function

Câu 6

Sự khác nhau giữa weakunowned

Advance

Câu 1

1
2
3
4
5
6
public final class NoteClass {
    var title: String
    init(_ title: String) {
        self.title = title
    }
}

Để tạo đối tượng ta có thể viết

1
let note: NoteClass = NoteClass("write better code")

Ta có thể viết như này được không? Làm như nào?

1
let note: NoteClass = "write better code"

Câu 2

Đoạn code này có lỗi gì?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
struct User {
    // ...
}

func login(user: User?) {
    guard let user = user else {
        print("There is no kitten")
    }
    print(user)
}

Có 3 cách để giải quyết lỗi trên, nêu cả 3 cách.

Câu 3

Đoạn code sau bị lỗi, giải thích tại sao?

1
2
3
4
enum List<T> {
    case none
    case node(T, List<T>)
}

Làm thế nào để fix?

Tạm dừng ở đây nhỉ? Đáp án mọi người tự mò để ôn tập nhé :D.