Tổng hợp 500+ câu hỏi phỏng vấn Swift
Tổng hợp những câu hỏi phỏng vấn Swift mới nhất, chính xác nhất theo từng cấp bậc!
Câu hỏi phỏng vấn Swift
Hãy xem các câu hỏi chúng tôi đã tổng hợp và cùng ôn luyện lại nhé!
Trong Swift, Swift là một ngôn ngữ lập trình mã nguồn mở được phát triển bởi Apple. Nó được thiết kế để xây dựng các ứng dụng cho các hệ điều hành của Apple như macOS, iOS, watchOS và tvOS. Swift có cú pháp đơn giản và dễ đọc, giúp cho việc lập trình trở nên dễ dàng và nhanh chóng hơn.
Swift được sử dụng để phát triển ứng dụng di động, ứng dụng đa nền tảng, ứng dụng máy tính và các dự án mã nguồn mở. Nó cung cấp các tính năng mạnh mẽ như an toàn kiểu dữ liệu, xử lý lỗi tốt hơn, code ngắn gọn, hiệu suất cao và khả năng tương thích với ngôn ngữ Objective-C. Điều này giúp Swift trở thành một ngôn ngữ lập trình phổ biến cho việc phát triển ứng dụng trên các nền tảng Apple.
Một số tính năng cơ bản của Swift bao gồm:
-
An toàn kiểu dữ liệu: Swift sử dụng kiểm tra kiểu tại thời điểm biên dịch để giúp ngăn chặn lỗi kiểu dữ liệu phổ biến và giúp phát hiện lỗi một cách nhanh chóng.
-
Tự động quản lý bộ nhớ: Swift sử dụng ARC (Automatic Reference Counting) để quản lý bộ nhớ, giúp tránh lỗi gọi dữ liệu đã bị giải phóng.
-
Cú pháp gần gũi: Swift có cú pháp sát với ngôn ngữ tự nhiên, phù hợp với người mới học lập trình.
-
Tính toán an toàn: Swift hỗ trợ các phép toán an toàn và tự động kiểm tra tràn số, giúp tránh những lỗi nghiêm trọng.
-
Hỗ trợ đa nền tảng: Swift có thể chạy trên nhiều hệ điều hành khác nhau, bao gồm iOS, macOS, watchOS và tvOS, giúp cho việc phát triển ứng dụng linh hoạt.
-
Xử lý lỗi tiên tiến: Swift hỗ trợ xử lý lỗi theo cách mà người lập trình có thể quy định một cách linh hoạt và dễ dàng xử lý các tình huống lỗi.
-
Tương thích với Objective-C: Swift có thể tương tác và sử dụng thư viện của Objective-C, giúp cho việc di chuyển từ mã nguồn Objective-C sang Swift dễ dàng hơn.
Trong Swift, sự khác biệt giữa var và let là:
-
var: được sử dụng để khai báo một biến có thể thay đổi giá trị sau khi đã khởi tạo. Điều này có nghĩa là bạn có thể gán một giá trị mới cho biến var sau khi nó đã được khởi tạo. Ví dụ:
var count = 5 count = 10 // Gán giá trị mới cho biến var
-
let: được sử dụng để khai báo một hằng số, tức là một biến mà sau khi đã khởi tạo không thể thay đổi giá trị của nó. Ví dụ:
let name = "John" name = "Mike" // Lỗi! Không thể gán giá trị mới cho hằng số let
Sự khác biệt giữa var và let cho phép bạn quản lý dữ liệu trong mã Swift của mình. Trong một số trường hợp, bạn có thể muốn sử dụng let khi bạn không muốn giá trị của biến thay đổi, và sử dụng var khi bạn muốn thay đổi giá trị của biến.
Swift được cho là an toàn hơn Objective-C vì có các tính năng và quy tắc thiết kế mới để đảm bảo mã Swift được viết an toàn hơn và tránh các buộc lỗi phổ biến trong Objective-C. Một số lý do chính bao gồm:
-
Kiểm tra kiểu tĩnh: Swift sử dụng kiểm tra kiểu tĩnh mạnh mẽ hơn để đảm bảo chính xác từng phép gán và tham số truyền vào hàm. Điều này giúp tránh lỗi kiểu dữ liệu phổ biến trong Objective-C.
-
Quản lý bộ nhớ tự động: Swift sử dụng ARC (Automatic Reference Counting) để quản lý bộ nhớ tự động, giúp ngăn chặn các lỗi quản lý bộ nhớ như lỗi không đúng thời điểm giải phóng bộ nhớ, lỗi truy cập vào bộ nhớ đã giải phóng, hay lỗi retain cycle.
-
Xử lý an toàn Optionals: Swift tách rời giữa giá trị có thể null và giá trị không thể null bằng cách sử dụng kiểu dữ liệu Optional. Điều này giúp tránh các lỗi truy cập vào giá trị null và giúp biên dịch đề xuất cách xử lý an toàn cho giá trị Optional.
-
Error handling: Swift hỗ trợ việc xử lý lỗi thông qua đặc tả và xử lý các lỗi theo cách rõ ràng hơn. Điều này giúp mã Swift trở nên dễ đọc và dễ hiểu hơn, đồng thời giảm bớt khả năng xảy ra lỗi.
-
Tính toán an toàn: Swift kiểm soát việc tràn số tử động và chia cho 0 thông qua sự giám sát kiểu.
Tổng cộng, Swift được thiết kế để kiểm soát và tránh lỗi phổ biến trong quá trình phát triển ứng dụng, từ đó đảm bảo mã được viết an toàn hơn và ít khả năng xảy ra lỗi hơn so với Objective-C.
Swift khác biệt so với các ngôn ngữ lập trình khác theo các cách sau:
-
Tốc độ: Swift được thiết kế để chạy nhanh và hiệu quả. Nó sử dụng một công nghệ gọi là "chuyển đổi xác suất" để tối ưu hóa việc biên dịch và thực thi mã. Điều này giúp Swift có tốc độ chạy nhanh hơn so với các ngôn ngữ lập trình truyền thống như Objective-C.
-
An toàn kiểu dữ liệu: Swift có kiểm soát kiểu dữ liệu mạnh mẽ tức là bạn phải xác định chính xác kiểu dữ liệu cho mỗi biến và hàm. Điều này giúp phát hiện lỗi kiểu dữ liệu trong quá trình biên dịch thay vì trong quá trình thực thi. Điều này giúp giảm thiểu các lỗi liên quan đến kiểu dữ liệu và làm cho mã Swift an toàn hơn.
-
Cú pháp đơn giản: Swift có cú pháp dễ đọc và dễ hiểu. Nó loại bỏ một số điểm hạn chế của Objective-C, làm cho việc viết mã trở nên đơn giản hơn và thân thiện với người mới học lập trình. Cú pháp của Swift rất gần gũi với cú pháp của các ngôn ngữ lập trình khác như Python và JavaScript.
-
Hỗ trợ cho tính toán song song: Swift hỗ trợ tính toán song song thông qua sự kết hợp giữa tối ưu hóa biên dịch và sử dụng các kiểu dữ liệu để chia nhỏ tác vụ và thực hiện tính toán hoàn toàn song song trên nhiều lõi CPU.
-
Tích hợp tốt với các công cụ và thư viện: Swift được phát triển bởi Apple, vì vậy nó tích hợp một cách tốt với các công cụ và thư viện Apple. Swift có thể sử dụng các thư viện và API của iOS và macOS một cách dễ dàng, giúp tạo ra ứng dụng di động và máy tính dễ dàng hơn.
-
Hướng tới mã nguồn mở: Swift được Apple cung cấp dưới dạng mã nguồn mở, cho phép cộng đồng phát triển thêm, kết hợp và cải thiện ngôn ngữ này. Mã nguồn mở giúp Swift phát triển nhanh chóng và cải tiến theo ý kiến từ các nhà phát triển trên toàn cầu.
Swift là một ngôn ngữ lập trình phát triển bởi Apple dành cho việc phát triển ứng dụng trên các nền tảng của họ như iOS, macOS, watchOS và tvOS. Swift được thiết kế để thay thế cho Objective-C, ngôn ngữ truyền thống được sử dụng trong việc phát triển ứng dụng trên các nền tảng của Apple.
Lập trình Swift được sử dụng để phát triển ứng dụng di động cho iPhone, iPad và Apple Watch, cũng như phát triển ứng dụng trên máy tính chạy macOS. Swift cung cấp cú pháp đơn giản và dễ đọc, hỗ trợ nhiều tính năng mạnh mẽ như tính toán số học, quản lý bộ nhớ tự động, xử lý chuỗi và nhiều thư viện và API mạnh mẽ khác để phát triển các ứng dụng đa dạng và phức tạp.
Trong Swift, có thể khai báo biến bằng cách sử dụng từ khóa "var" theo sau là tên biến và kiểu dữ liệu mong muốn, sau đó gán giá trị cho biến. Ví dụ:
var age: Int = 25
var name: String = "John Doe"
var isStudent: Bool = true
Đồng thời, Swift cũng hỗ trợ kiểu dữ liệu tự suy luồng (type inference). Khi khai báo biến mà không xác định rõ kiểu dữ liệu, Swift sẽ tự động suy ra kiểu dữ liệu từ giá trị gán cho biến. Ví dụ:
var weight = 70.5 // Swift suy luồng kiểu dữ liệu Double vì giá trị là số thực
var isMale = false // Swift suy luồng kiểu dữ liệu Bool vì giá trị là kiểu đúng/sai
Lưu ý rằng, biến được khai báo với từ khóa "var" có thể thay đổi giá trị sau khi được gán.
Trong Swift, let và var là từ khoá để khai báo một hằng số (constant) và một biến (variable). Sự khác nhau giữa let và var trong Swift là:
- let được sử dụng để khai báo một hằng số và giá trị của nó không thể được thay đổi sau khi được gán. Ví dụ:
let pi = 3.14
pi = 3.14159 // Sẽ gây lỗi, không thể gán giá trị mới cho hằng số đã khai báo
- var được sử dụng để khai báo một biến và giá trị của nó có thể thay đổi sau khi được gán. Ví dụ:
var count = 0
count = 1 // Giá trị của biến count có thể thay đổi
Vấn đề quan trọng là khi khai báo một hằng số bằng let, Swift sẽ tự động suy kiến kiểu dữ liệu của hằng số đó. Trong khi đó, khi khai báo một biến bằng var, ta phải xác định rõ kiểu dữ liệu của biến đó.
Sự lựa chọn giữa let và var phụ thuộc vào việc ta có cần thay đổi giá trị của biến hay không. Nếu ta biết giá trị sẽ không thay đổi sau khi gán, ta nên sử dụng let để khai báo một hằng số và ngược lại, nếu ta muốn thay đổi giá trị, ta nên sử dụng var để khai báo một biến.
Trong Swift, bạn có thể tạo một hàm bằng cách sử dụng từ khóa "func" di theo bởi tên của hàm, danh sách các tham số và kiểu dữ liệu của chúng, và kiểu trả về của hàm.
Ví dụ, dưới đây là một cách tạo một hàm đơn giản trong Swift để tính tổng của hai số nguyên:
func sum(a: Int, b: Int) -> Int {
return a + b
}
Như bạn có thể thấy, từ khóa "func" được sử dụng để bắt đầu viết một hàm mới. Sau đó là tên của hàm (ở đây là "sum") và danh sách tham số (ở đây là "a" và "b") được đặt trong cặp ngoặc đơn. Mỗi tham số có kiểu dữ liệu của nó được chỉ định sau tên của nó. Cuối cùng, kiểu trả về của hàm (ở đây là Int) được chỉ định sau ký tự "->". Hàm trên trả về tổng của hai số nguyên được truyền vào.
Để tạo một struct trong Swift, bạn cần sử dụng từ khóa "struct" theo sau là tên của struct và một cặp dấu ngoặc nhọn chứa các thuộc tính và phương thức của struct.
Ví dụ, dưới đây là cách tạo một struct đơn giản để lưu trữ thông tin của một người:
struct Person {
var name: String
var age: Int
var address: String
func introduce() {
print("Hi, my name is \(name). I'm \(age) years old and I live in \(address).")
}
}
Trong ví dụ trên:
- Từ khóa "struct" được sử dụng để khai báo một struct mới.
- Tên của struct là "Person".
- Trong cặp dấu ngoặc nhọn, chúng ta khai báo ba thuộc tính: "name" có kiểu String, "age" có kiểu Int và "address" có kiểu String.
- Ngoài ra, chúng ta cũng có khai báo một phương thức là "introduce" để in ra thông tin người đó.
Sau khi tạo struct "Person" như trên, bạn có thể tạo đối tượng từ struct đó và truy cập vào các thuộc tính và phương thức như sau:
var person = Person(name: "John", age: 25, address: "New York")
print(person.name) // "John"
person.introduce() // "Hi, my name is John. I'm 25 years old and I live in New York."
Trên đây là cách tạo và sử dụng một struct trong Swift.
Câu lệnh if-else trong Swift được sử dụng để thực hiện một nhánh code nếu một điều kiện được đáp ứng và một nhánh code khác nếu điều kiện không được đáp ứng. Cú pháp cơ bản của câu lệnh if-else trong Swift như sau:
if điều_kiện { // Thực hiện code nếu điều_kiện đúng } else { // Thực hiện code nếu điều_kiện sai }
Ví dụ:
let age = 20
if age >= 18 { print("Bạn đã đủ tuổi để được lái xe") } else { print("Bạn chưa đủ tuổi để được lái xe") }
Trong ví dụ trên, nếu tuổi (age) lớn hơn hoặc bằng 18, câu lệnh in "Bạn đã đủ tuổi để được lái xe" sẽ được thực thi. Ngược lại, nếu tuổi không đủ, câu lệnh in "Bạn chưa đủ tuổi để được lái xe" sẽ được thực thi.
Trong Swift, class và struct đều là kiểu dữ liệu cơ bản để định nghĩa các đối tượng. Tuy nhiên, chúng có những điểm khác biệt cơ bản trong cách hoạt động và tính năng mà chúng cung cấp.
-
Tính chất tham chiếu và tham trị:
- Class là kiểu tham chiếu, điều này có nghĩa là khi gán một instance của class vào biến khác, cả hai biến này sẽ trỏ đến cùng một vùng nhớ. Các thay đổi được thực hiện trên một biến sẽ ảnh hưởng đến biến khác.
- Struct là kiểu tham trị, điều này có nghĩa khi gán một instance của struct vào biến khác, một bản sao hoàn toàn mới của struct sẽ được tạo ra. Các thay đổi trên một biến không ảnh hưởng đến biến khác.
-
Kế thừa:
- Class hỗ trợ kế thừa, điều này có nghĩa class có thể kế thừa thuộc tính và phương thức từ một class khác.
- Struct không hỗ trợ kế thừa. Một struct không thể kế thừa từ một struct khác hoặc từ class.
-
Tính năng:
- Class hỗ trợ các tính năng phong phú như kế thừa, tính đa hình, giải phóng bộ nhớ tự động thông qua ARC (Automatic Reference Counting).
- Struct không hỗ trợ các tính năng phong phú này nhưng có thể triển khai các giao thức (protocols) để thực hiện đa kế thừa.
Trong Swift, thông thường chúng ta sử dụng struct cho những đối tượng nhỏ gọn, không cần tính năng kế thừa và thực hiện theo cơ chế tham trị. Trong khi đó, class thường được sử dụng cho các đối tượng lớn hơn, cần tính năng kế thừa và thực hiện theo cơ chế tham chiếu.
Trong Swift, ta có thể tạo một hằng số bằng cách sử dụng từ khóa "let". Ví dụ, để tạo một hằng số có tên là "pi" và giá trị là 3.14159, ta có thể làm như sau:
let pi = 3.14159
Sau khi tạo hằng số này, giá trị của nó sẽ không thể thay đổi trong suốt quá trình thực thi chương trình.
Trong Swift, bạn có thể tạo một optional type bằng cách sử dụng dấu chấm hỏi (?) sau kiểu dữ liệu.
Ví dụ, để tạo một optional integer, bạn có thể viết như sau:
var optionalInt: Int?
optionalInt = 5
Trong ví dụ trên, optionalInt là một biến có kiểu dữ liệu là optional Int. Nó có thể chứa một giá trị integer, hoặc không có giá trị (nil).
Để sử dụng giá trị được lưu trữ trong optional type, bạn cần mở gói giá trị bằng cách sử dụng dấu chấm than (!) sau tên biến. Ví dụ:
if let unwrappedInt = optionalInt {
// Giá trị được lưu trữ trong optionalInt tồn tại và đã được mở gói thành unwrappedInt
print(unwrappedInt)
} else {
// optionalInt không có giá trị (nil)
print("optionalInt is nil")
}
Trong ví dụ trên, nếu optionalInt chứa một giá trị, giá trị đó sẽ được gán vào biến unwrappedInt. Nếu optionalInt là nil, câu lệnh trong khối else sẽ được thực thi.
Để truy cập vào thành phần của một optional type trong Swift, bạn có thể sử dụng một số phương pháp unwrap khác nhau như sau:
- Forced Unwrapping: Đây là cách đơn giản nhất và ngắn gọn nhất để truy cập vào giá trị bên trong optional. Để unwrap optional type, bạn chỉ cần sử dụng dấu "!" sau optional. Ví dụ:
let optionalValue: Int? = 5
let unwrappedValue: Int = optionalValue!
Việc sử dụng forced unwrapping có thể gây ra lỗi nếu optional đang có giá trị nil. Chúng ta nên chắc chắn rằng optional có giá trị trước khi sử dụng forced unwrapping.
- Optional Binding: Optional binding giúp kiểm tra và unwrap optional một cách an toàn. Bằng cách sử dụng optional binding, bạn có thể kiểm tra xem optional có giá trị hay không và gán giá trị bên trong optional cho một biến hay hằng số tạm thời (temporary constant). Ví dụ:
let optionalValue: Int? = 5
if let unwrappedValue = optionalValue {
// Giá trị trong optional không nil
print(unwrappedValue)
} else {
// Giá trị trong optional là nil
print("Optional value is nil")
}
- Implicitly Unwrapped Optionals: Loại optional này được khai báo bằng cách sử dụng dấu "!" thay vì dấu "?". Implicitly unwrapped optionals cho phép truy cập vào giá trị bên trong mà không cần unwrap. Tuy nhiên, nếu optional đang có giá trị nil và bạn truy cập vào giá trị bên trong, sẽ xảy ra runtime error. Ví dụ:
let optionalValue: Int! = 5
let unwrappedValue: Int = optionalValue
Đây là những cách truy cập vào thành phần của một optional type trong Swift. Bạn nên cẩn thận sử dụng unwrap để đảm bảo rằng optional không có giá trị nil trước khi truy cập vào giá trị bên trong.
Top 15 câu hỏi phỏng vấn swift quan trọng dành cho ... - Devwork
6 days ago Nov 29, 2022 · Trong ngành IT, Swift là một trong những ngôn ngữ lập trình đang phát triển mạnh mẽ nhưng còn khá mới lạ và chưa quá phổ biến rộng rãi trên cộng đồng. Tuy nhiên hiện tại Swift đang được coi trọng bởi những hỗ trợ mà nó đem lại cho các nhà phát triển. Vì vậy tìm hiểu …
15 câu hỏi phỏng vấn Swift hàng đầu và câu trả lời
1 week ago Oct 19, 2024 · 2) Giải thích cách định nghĩa biến trong ngôn ngữ Swift? 3) Dấu "?" trong Swift có ý nghĩa gì? 4) Hãy nêu những tính năng của Lập trình Swift? 5) Hãy cho biết sự khác biệt …
Tổng hợp 500+ câu hỏi phỏng vấn Swift - Phong-Van.com
5 days ago Tổng hợp 500+ câu hỏi phỏng vấn Swift - Phong-Van.com. ... Top 89 câu hỏi phỏng vấn swift. KUNGFU TECH vietnam. ... Top 89 câu hỏi phỏng vấn Swift. Bộ lọc: … 291. Top 20+ câu hỏi …
Câu hỏi phỏng vấn intern iOS Developer và đáp án - Viblo
1 week ago Beginer: Thoải mái với người mới làm quen Swift. Bạn đã từng đọc 1 hoặc 2 quyển sách, và sử dụng Swift trong ứng dụng của chính bạn. Intermediate: Dành cho những người đã từng làm …
Bộ câu hỏi phỏng vấn Swift dành cho lập trình viên
1 week ago Tổng hợp 89 câu hỏi phỏng vấn swift từ fresher đến senior dành cho lập trình viên. Top 89 câu hỏi phỏng vấn swift. KUNGFU TECH vietnam. ... Top 89 câu hỏi phỏng vấn Swift. Bộ lọc: …
Các câu hỏi phỏng vấn Swift - Phỏng vấn IT - PhongvanIT.com
1 week ago 63 câu hỏi phỏng vấn Swift. 1. Khái niệm Optional trong Swift là gì? basic. 1.569 lượt xem. 2. Có bao nhiêu loại Collection trong Swift? basic.
Câu hỏi phỏng vấn nhà phát triển Swift và iOS hàng đầu cho năm …
2 days ago Được lựa chọn kỹ lưỡng và lựa chọn cho năm 2021, đây là những điều khoản và câu hỏi mà bạn cần biết cho vai trò nhà phát triển iOS của mình! ID ứng dụng danh sách / ID ứng dụng gói ID …
Top 64 câu hỏi phỏng vấn và trả lời bạn cần ... - Viblo
1 day ago Top 64 câu hỏi phỏng vấn và trả lời bạn cần biết trước khi đi phỏng vấn. Cuối cùng bạn cũng được gọi đi phỏng vấn sau một khoảng thời gian "rải" CV ở nhiều nơi. Chúc mừng bạn! Tuy …
ios developer: câu hỏi phỏng vấn thường gặp - VietnamWorks
2 days ago Câu hỏi liên quan khác. Các câu hỏi thường gặp khi phỏng vấn vị trí Lập trình viên Frontend. Các câu hỏi thường gặp khi phỏng vấn vị trí Lập trình Viên Cơ sở Dữ Liệu. Các câu hỏi thường …
Top 54 câu hỏi phỏng vấn thường gặp và cách trả lời hay nhất
4 days ago 3 days ago · Top 54 câu hỏi phỏng vấn thường gặp và cách trả lời hay nhất - Phần 1. Chuyên mục : Phỏng vấn - 2024-11-15 18:30:02 - 296388 lượt xem. Tổng hợp các câu hỏi phỏng vấn …
[Phần 1] 30 câu hỏi phỏng vấn thường gặp và cách trả lời
1 week ago Aug 6, 2020 · Một thành tựu mà bạn tự hào nhất. Một trong những cách trả lời tốt nhất cho câu hỏi này là áp dụng phương pháp STAR: Tình huống – Nhiệm vụ – Hành động – Kết quả. Chia …
Top 30+ câu hỏi phỏng vấn Magento phổ biến - ITviec Blog
1 week ago Nov 12, 2024 · Kể tên các loại hình ảnh trong Magento. Có 4 loại hình ảnh trong Magento: Hình ảnh cơ bản (Base image): Hình ảnh cơ bản (Base image) là hình minh họa chính trên trang …
Top 20+ câu hỏi phỏng vấn PHP phổ biến - ITviec Blog
1 week ago Nov 12, 2024 · Top 20+ câu hỏi phỏng vấn PHP phổ biến. Khi chuẩn bị cho một buổi phỏng vấn liên quan đến PHP, việc nắm vững các câu hỏi thường gặp là điều vô cùng quan trọng. Các …
Used Ford Transit Cargo Van for Sale in - TrueCar
6 days ago Transit Cargo Van T-250 148" Hi Rf 9070 GVWR AWD. $37,995. Great Price. 29k mi. 12 mi away. View details for 2023 Ford Transit Cargo Van, T-250 148" Hi Rf 9070 GVWR AWD. …
The 10 Best Nursing Homes in Bergen County, NJ for 2024
1 week ago 304 S. Van Dien Ave, Ridgewood, NJ 07450. 3.7 (8 reviews) "STAFF WAS COMPETENT ,CAPABLE. AND CARING..." READ MORE. Get Pricing Learn More. ... The staff is top notch. …
Hire Movers in North Bergen, NJ. Compare the Top 40 Local …
5 days ago Always Reliable Moving Specialist. 4.9 1,634 verified reviews. Mount Vernon, NY. 4,689 moves with HireAHelper. Here at Always Reliable Moving Specialist our number one priority is the …
44 Nursing Homes Communities in Bergen County, NJ (with Reviews)
5 days ago 304 S. Van Dien Ave, Ridgewood, NJ 07450. Call 1-855-287-5093 for details. Get Pricing Learn More. Compare. CareOne at New Milford ... but very comfortable at the same time. The staff …
FAQs - Câu hỏi thường gặp về phỏng vấn?
Những câu hỏi thường gặp để phản ánh chính sách và quy trình cụ thể của bạn hoặc để phù hợp với mục đích cụ thể của phỏng vấn.