Bộ câu hỏi phỏng vấn Swift phần 1

Có bao nhiêu loại Collection trong Swift?


Trong swift, có 2 loại Collection đó là ArrayDictionary.

  • Array: bạn có thể tạo 1 Array của 1 loại dữ liệu hoặc 1 Array của nhiều loại dữ liệu
//Example for single type array is,
var cardName : [String] = [Robert,Lisa,Kevin]

// Swift can infer [String] so we can also write it as:

var cardNames = [Robert,Lisa,Kevin] // inferred as [String]
  • Dictionary: gần giống như Hash trong các ngôn ngữ lập trình khác, 1 Dictionary cho phép bạn lưu các cặp key-value và truy xuất value bằng key.
var cards = [Robert: 22,Lisa: 24, and “Kevin: 26]

Khái niệm Optional trong Swift là gì?


Optional là một khái niệm mới trong ngôn ngữ lập trình Swift. Với việc sử dụng optional, Swift được Apple giới thiệu là ngôn ngữ “an toàn” hơn so với ngôn ngữ Objective-C trước đó.

Optional có 2 loại: ?! , ví dụ:

var str: String =Hello bacon” // OK
str = nil // biên dịch lỗi

var str: String? =Hello bacon” // OK
str = nil // OK

với ?, giá trị của str có thể là nil hoặc là 1 String.

var i: Int? = 0;
i = i + 1;
//compiler error

var i: Int? = 0;
i = i! + 1;
// ok

với !, để chắc chắn rằng i luôn luôn có giá trị.

Nêu các đặc tính của Switch?


  • Hỗ trợ tất cả các loại dữ liệu.
  • Khi match 1 case, chương trình sẽ xử lý case đó và không tiếp tục kiểm tra các case khác, nên không cần phải thêm 'break' ở cuối mỗi đoạn code trong 1 case.
  • Lệnh switch phải được khai báo đầy đủ tất cả các giá trị có thể có của biến.
  • Không có fallthrough trong switch nên break là không bắt buộc trong swift.

Kể ra những loại Integer có trong Swift?


Swift cung cấp các loại integer unsignedsigned ở dạng 8, 16, 32, 64 bit. Ví dụ: UInt8, Int32.

Xem xét đoạn code bên dưới " let op1: Int = 1... " và cho biết kết quả?


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

Lỗi ở đâu và tại sao? Fix như thế nào?

Trả lời: Swift không định nghĩa bất kỳ loại ép kiểu ngầm nào, thậm chí với cả các kiểu dữ liệu giống giống nhau (ví dụ: UIntInt).

Fix:

var result = Double(op1) + Double(op2) + op3

Sự khác nhau giữa Swift và Objective-C?


| Swift | Objective-C | | --- | --- | --- | | Biến và hằng số được khai báo trước khi sử dụng. | Trong objective-c, bạn phải khai báo biến là NSString và hằng số là int. | | Phải dùng từ khóa 'let' để khai báo hằng số và 'var' để khai báo biến. | Đoạn code phải kết thúc bằng dấu chấm phẩy. | | Không cần dùng dấu chấm phẩy để kết thúc đoạn code. | Trong objective-c, bạn phải chọn giữa NSMutableString và NSString cho string cần chỉnh sửa. | | Trong swift, bạn có thể dễ dàng ghép nối chuỗi nhanh chóng và tạo chuỗi mới từ sự kết hợp các hằng số, chữ, biến và biểu thức. | Đối với các class, bạn phải tạo interface riêng (.h) và file thực thi riêng (.m) | | Swift không yêu cầu tạo 1 interface riêng biệt như Objective-C. Bạn có thể định nghĩa các lớp trong 1 file (.swift) | Objective-C không cho phép khai báo các method tương tự như trong swift. | | Swift cho phép bạn định nghĩa các method trong class, structure hoặc enumeration. | | Bạn phải dùng methd 'addObject' của NSMutable để thêm 1 item vào 1 mảng. | | Trong Swift, bạn có thể dùng toán tử "+=" để thêm 1 item. | |

Liệt kê ra các Control Transfer Statements (lệnh chuyển điều khiển) được dùng trong Swift?


  • Continue
  • Break
  • Fallthrough
  • Return

de-initializer là gì, và chúng được viết như thế nào trong Swift?


Một de-initializer được khai báo ngay lập tức trước khi một class instance được de-allocated. Bạn dùng de-initializer với từ khóa deinit. De-initializer không dùng dấu ngoặc đơn và không nhận bất kỳ tham số nào.

deinit  {
    // perform the deinitialization
}

Các tính năng chính của Swift?


  • Loại bỏ toàn bộ các class không an toàn (classes of unsafe code)
  • Các biến luôn được khởi tạo trước khi dùng.
  • ArrayInteger được kiểm tra cho vấn đề overflow.
  • Memory được quản lý tự động.
  • Swift sử dụng 'switch' thay cho câu điều kiện 'if'

Xem xét đoạn code bên dưới "var array1 = [1, 2, 3, 4, 5]..." và cho biết kết quả?


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

Giá trị của 'len' là bao nhiêu? Giải thích?

len = 5, bởi vì mảng trong swift là loại giá trị ( như structs ) chứ không phải là loại tham chiếu ( như classes). Các loại giá trị trong swift:

  • structs (incl. arrays và dictionaries)
  • enumerations
  • loại dữ liệu (boolean, integer, float, etc.)
Avatar Techmely Team
VIẾT BỞI

Techmely Team