Câu hỏi phỏng vấn iOS Developer

64 Các câu hỏi phỏng vấn iOS Developer được chia sẻ bởi các ứng viên

IOS Developer là người xây dựng, phát triển các ứng dụng cho các thiết bị di động và tương thích với hệ điều hành iOS. Với sự lớn mạnh của Apple hiện nay, nhu cầu tuyển dụng iOS Developer trở nên lớn hơn bao giờ hết. Để chuẩn bị cho một buổi phỏng vấn vị trí này, dưới đây là những câu hỏi phỏng vấn iOS Developer bạn tham khảo nhé. 

Câu hỏi phỏng vấn IOS Developer về chuyên môn

Mô tả vòng đời View Controller trong ứng dụng iOS

View Controller có nhiệm vụ tương tác với View và hệ thống, quản lý thay đổi từ View và thực hiện các cập nhật lên View. Vòng đời của View Controller bao gồm:

  • Load View: gọi khi khởi tạo 1 view controller
  • ViewDidLoad: Sau khi view controller được tạo và nạp vào bộ nhớ xong thì hàm này sẽ được gọi. Trong hàm này sẽ xử lý việc chuẩn bị data hay khởi tạo các giá trị trên màn hình
  • ViewDidAppear: được gọi khi view đã được hiển thị lên màn hình
  • ViewDidDisappear: gọi khi view được ẩn khỏi màn hình, chuyển sang màn hình khác

Các trạng thái thông thường của một ứng dụng iOS

Thông thường có 5 trạng thái mà một ứng dụng iOS có thể có:

  • Not Running: ứng dụng đang hoàn toàn không được chạy
  • Inactive: ứng dụng đang ở trạng thái mở nhưng có 1 ứng dụng khác đang chạy ưu tiên active bên trên như cuộc gọi, tin nhắn, ….
  • Active: ứng dụng đang mở hoạt động và người dùng có thể tương tác
  • Background: ứng dụng đang ở trạng thái chạy nền, thông thường là ứng dụng được mở từ trước đó, người dùng thoát ra sử dụng ứng dụng khác nhưng không tắt ứng dụng đi
  • Suspended: ứng dụng khi ở trạng thái nền một thời gian nếu bộ nhớ của thiết bị không đủ để duy trì việc chạy nền thì sẽ không thể xử lý thêm tác vụ nào từ ứng dụng và đưa nó về trạng thái treo

Swift là gì? Ưu điểm của nó với Objective-C

Swift là một ngôn ngữ lập trình hướng đối tượng được Apple phát triển cho iOS, macOS và một số nền tảng khác. Swift được phát hành từ năm 2014, nó có nhiều tính năng ưu việt hơn các ngôn ngữ khác nhờ việc chọn ra những ý tưởng nổi bật của các ngôn ngữ đã phát triển trước đó. So với Objective-C (ngôn ngữ ban đầu được Apple sử dụng cho lập trình iOS) thì:

  • Code trong Swift ngắn gọn và dễ đọc, dễ viết, dễ bảo trì hơn
  • Rút ngắn được thời gian phát triển
  • Có khả năng tương thích với Objective-C
  • Có các tính năng hiện đại hơn như kiểm tra kiểu dữ liệu, quản lý bộ nhớ tự động
  • Hỗ trợ lập trình hàm

Nêu sự khác biệt giữa 2 biến Strong và Weak?

Các biến là yếu tố không thể thiếu trong hoạt động lập trình các ứng dụng. Vì vậy câu hỏi so sánh và phân biệt các biến cũng sẽ thường bắt gặp trong quá trình phỏng vấn vị trí iOS developer.

Biến Strong khi trỏ đến đối tượng sẽ sở hữu đối tượng đó và làm retainCount của nó tăng thêm 1. Còn biến Weak khi trỏ đến đối tượng sẽ tham chiếu giá trị đó và không làm tăng retainCount của nó. Khi giá trị retainCount về 0 thì đối tượng sẽ bị hủy và biến Weak được reset về giá trị null.

Vậy biến Weak sử dụng trong trường hợp nào?

Sau khi bạn đã phân biệt 2 biến Strong và Weak, rất có thể nhà tuyển dụng sẽ muốn đào sâu về những trường hợp ứng dụng 2 biến này. Qua đó họ sẽ xác định được iOS developer hiểu biết tường tận hay chỉ tìm hiểu sơ bộ về những vấn đề này.

Có 2 trường hợp lập trình viên nên sử dụng biến Weak là: 2 class có các đối tượng reference đến nhau và 2 class có quan hệ cha con. Lúc này, lập trình viên sẽ dùng biến weak với 1 class để tránh leak memory.

So sánh các collection Array, Set và Dictionary trong Swift

Collection là những kiểu dữ liệu tập hợp, trong Swift có 3 dạng chính là Arrays, Sets và Dictionary. 

  • Array (Mảng) : sử dụng để lưu trữ dữ liệu cùng kiểu và sắp xếp có thứ tự. Do cần có thứ tự nên các phần tử trong mảng có thể trùng lặp nhau.
  • Set (Bộ): cũng được sử dụng để lưu trữ các dữ liệu có cùng kiểu nhưng không quan tâm đến thứ tự sắp xếp trong đó. Khác với Array, các phần tử trong Set không được phép trùng lặp
  • Dictionary (Từ điển): lưu trữ dữ liệu bằng cặp key – value, các key bắt buộc không trùng lặp nhau, tuy nhiên value thì có thể trùng lặp.

Các bước để phát hành ứng dụng iOS trên AppStore

Bước đầu tiên, bạn cần đăng ký chương trình nhà phát triển của Apple (Apple Developer Program) để có thể phát hành ứng dụng lên chợ Appstore

Sau khi có tài khoản, bạn cần tạo các file và thiết lập cho tài khoản và ứng dụng của mình, bao gồm:

  • AppID: xác minh ứng dụng của bạn, nó là duy nhất
  • Các thông tin cơ bản về ứng dụng: từ tên, mô tả, các ảnh chụp màn hình, các thông tin để phía Apple kiểm duyệt, … bạn cần cung cấp để mọi người biết đến ứng dụng của bạn
  • Certificate: chứng chỉ được cấp bởi Apple đảm bảo việc ứng dụng của bạn được chấp nhận bởi các thiết bị sử dụng iOS
  • Provisioning: như một hồ sơ đăng ký giúp ứng dụng của bạn xác định danh tính, bảo mật thông tin và giúp bạn có thể build được ứng dụng lên Appstore

ARC là gì?

Với câu hỏi này, nhà tuyển dụng muốn kiểm tra xem lập trình viên IOS có thực sự am hiểu về phương pháp lập trình trong iOS không. Bạn chỉ cần trả lời ngắn gọn và chính xác về khái niệm này là được.

ARC là từ viết tắt của Automatic Reference Counting, nghĩa là “Tự động đếm số lượng tham chiếu”. Đây là một hệ thống quản lý tự động được tích hợp sẵn trong ngôn ngữ lập trình Swift. Nó có vai trò tự động chèn thêm các đoạn code được chỉ định vào đối tượng và đưa ra quyết định khi nào đối tượng không cần thiết sử dụng các đoạn code nữa.

Bạn đã làm việc với các framework iOS nào?

Tôi đã làm việc với các framework như UIKit, Core Data, Core Animation và Alamofire. Tôi cũng có kiến thức về SwiftUI và Combine và đã sử dụng chúng trong các dự án nhỏ.

Kinh nghiệm “ đậu" phỏng vấn vị trí IOS Developer

Kiến thức là phần quan trọng trong buổi phỏng vấn mà bạn cần chuẩn bị kỹ càng, tuy nhiên đó chưa phải là tất cả để bạn vượt qua buổi phỏng vấn với số điểm tuyệt đối. Trong buổi phỏng vấn đôi khi còn phụ thuộc vào nhiều yếu tố khác nữa, hãy xem bạn cần chú ý những điều gì để có sự hoàn hảo trong buổi phỏng vấn sắp tới. 

Sự tự tin

Có một câu nói rất hay và nổi tiếng về sự tự tin là : “Tự tin là điều kiện đầu tiên để làm được những điều lớn lao". Câu nói này quả thực không sai, chỉ cần bạn có sự tự tin với những gì bạn có, với những gì bạn làm chẳng có khó khăn nào cản trở được ý chí của bạn cả. Việc chuẩn bị tâm lý trước phỏng vấn cũng giúp bạn tự tin nhiều hơn, điều này rất có lợi đến việc trả lời câu hỏi.

Lựa chọn trang phục phù hợp

Một trang phục đẹp sẽ gây được chú ý của  hà tuyển dụng, có khi còn giúp bạn lọt top những ứng viên ấn tượng trong mắt nhà tuyển dụng ý chứ. Còn gì tuyệt vời hơn nếu như bạn kết hợp những bộ trang phục với vị trí mà mình ứng tuyển. Với một chiếc áo sơ mi voi9ứ một chiếc quần jean cá tính mang phong cách mạnh mẽ rất phù hợp với một lập trình viên.

Chú ý cách giao tiếp

Giao tiếp thể hiện sự tôn trọng của bạn với nhà tuyển dụng, vậy nên hãy cố gắng đưa ra những câu trả lời cho đúng mực nhất. Hãy thể hiện mình là một người trưởng thành để nâng cao sự chuyên nghiệp của bản thân hơn

Câu hỏi phỏng vấn iOS Developer & Cách trả lời

Dưới đây là 3 câu hỏi phỏng vấn iOS Developer hàng đầu và cách trả lời chúng:

Câu hỏi #1: Lập trình iOS là gì? Ngôn ngữ, công cụ sử dụng

Lập trình iOS là việc xây dựng và phát triển các ứng dụng có thể chạy trên các thiết bị sử dụng hệ điều hành iOS, cụ thể là iPhone, iPad, iPod. Apple cung cấp IDE Xcode và iOS SDK cho việc lập trình iOS bằng ngôn ngữ Objective-C hay Swift; ngoài ra chúng ta cũng có thể phát triển ứng dụng iOS bằng các nền tảng cross-platform khác như React Native hay Flutter. iOS SDK được Apple phát hành miễn phí cho lập trình viên, mặc dù vậy nó chỉ hỗ trợ chạy trên nền MacOS cũng thuộc hệ sinh thái Apple.

Để ứng dụng iOS đến được với người dùng, các nhà phát hành cần đăng ký tài khoản Apple Developer và publish nó lên kho chợ ứng dụng AppStore. Tính đến nay có khoảng 2 triệu ứng dụng được phát hành trên nền tảng chợ ứng dụng này.

Câu hỏi #2: Swift là gì? Ưu điểm của nó với Objective-C

Swift là một ngôn ngữ lập trình hướng đối tượng được Apple phát triển cho iOS, macOS và một số nền tảng khác. Swift được phát hành từ năm 2014, nó có nhiều tính năng ưu việt hơn các ngôn ngữ khác nhờ việc chọn ra những ý tưởng nổi bật của các ngôn ngữ đã phát triển trước đó. So với Objective-C (ngôn ngữ ban đầu được Apple sử dụng cho lập trình iOS) thì:

  • Code trong Swift ngắn gọn và dễ đọc, dễ viết, dễ bảo trì hơn
  • Rút ngắn được thời gian phát triển
  • Có khả năng tương thích với Objective-C
  • Có các tính năng hiện đại hơn như kiểm tra kiểu dữ liệu, quản lý bộ nhớ tự động
  • Hỗ trợ lập trình hàm

Câu hỏi #3: Các bước để phát hành ứng dụng iOS trên AppStore

Bước đầu tiên, bạn cần đăng ký chương trình nhà phát triển của Apple (Apple Developer Program) để có thể phát hành ứng dụng lên chợ Appstore

Sau khi có tài khoản, bạn cần tạo các file và thiết lập cho tài khoản và ứng dụng của mình, bao gồm:

  • AppID: xác minh ứng dụng của bạn, nó là duy nhất
  • Các thông tin cơ bản về ứng dụng: từ tên, mô tả, các ảnh chụp màn hình, các thông tin để phía Apple kiểm duyệt, … bạn cần cung cấp để mọi người biết đến ứng dụng của bạn
  • Certificate: chứng chỉ được cấp bởi Apple đảm bảo việc ứng dụng của bạn được chấp nhận bởi các thiết bị sử dụng iOS
  • Provisioning: như một hồ sơ đăng ký giúp ứng dụng của bạn xác định danh tính, bảo mật thông tin và giúp bạn có thể build được ứng dụng lên Appstore

Sau khi chuẩn bị hết các thứ ở trên, chúng ta tiến hành build và phát hành ứng dụng thông qua AppStore. Apple cũng cung cấp sẵn các tính năng giúp nhà phát hành kiểm thử ứng dụng nội bộ (trên một nhóm các testers được chỉ định) hoặc phát hành các bản dùng thử alpha, beta,…

Câu hỏi phỏng vấn

iOS Developer được hỏi... 05/06/2023

Mô tả vòng đời View Controller trong ứng dụng iOS

1 câu trả lời

View Controller có nhiệm vụ tương tác với View và hệ thống, quản lý thay đổi từ View và thực hiện các cập nhật lên View. Vòng đời của View Controller bao gồm:

  • Load View: gọi khi khởi tạo 1 view controller
  • viewDidLoad: Sau khi view controller được tạo và nạp vào bộ nhớ xong thì hàm này sẽ được gọi. Trong hàm này sẽ xử lý việc chuẩn bị data hay khởi tạo các giá trị trên màn hình
  • viewDidAppear: được gọi khi view đã được hiển thị lên màn hình
  • viewDidDisappear: gọi khi view được ẩn khỏi màn hình, chuyển sang màn hình khác
iOS Developer được hỏi... 05/06/2023

Các trạng thái thông thường của một ứng dụng iOS

1 câu trả lời

Thông thường có 5 trạng thái mà một ứng dụng iOS có thể có:

  • Not Running: ứng dụng đang hoàn toàn không được chạy
  • Inactive: ứng dụng đang ở trạng thái mở nhưng có 1 ứng dụng khác đang chạy ưu tiên active bên trên như cuộc gọi, tin nhắn, ….
  • Active: ứng dụng đang mở hoạt động và người dùng có thể tương tác
  • Background: ứng dụng đang ở trạng thái chạy nền, thông thường là ứng dụng được mở từ trước đó, người dùng thoát ra sử dụng ứng dụng khác nhưng không tắt ứng dụng đi
  • Suspended: ứng dụng khi ở trạng thái nền một thời gian nếu bộ nhớ của thiết bị không đủ để duy trì việc chạy nền thì sẽ không thể xử lý thêm tác vụ nào từ ứng dụng và đưa nó về trạng thái treo
iOS Developer được hỏi... 05/06/2023

Mô hình MVC trong ứng dụng iOS được thể hiện như thế nào?

1 câu trả lời

MVC là mẫu thiết kế phần mềm gồm 3 thành phần Model View Controller, iOS sử dụng MVC làm phương pháp chính để phát triển ứng dụng, trong đó:

  • View: UIView và các lớp con của nó
  • Controller: UIViewController và các lớp con của nó
  • Model: các đối tượng dữ liệu, lớp NSManagedObject và các lớp con

Apple khuyến khích lập trình viên sử dụng mô hình MVC để phát triển ứng dụng iOS. Ngoài MVC thì có một vài mẫu thiết kế khác cũng được áp dụng trong lập trình iOS như MVVM, MVP, VIPER, …

iOS Developer được hỏi... 05/06/2023

Phân biệt Strong pointer và Weak pointer

1 câu trả lời

Pointer hay con trỏ là một cách truy cập trực tiếp vào memory (bộ nhớ) để tương tác với dữ liệu; trong Objective-C hay Swift đều hỗ trợ các phương thức làm việc với con trỏ.

Strong pointer là một con trỏ được sử dụng để trỏ đến một đối tượng và đồng thời sở hữu đối tượng đó; ngược lại thì Weak pointer không sở hữu đối tượng đó. Hay nói cách khác thì Strong pointer sẽ quyết định đến sự tồn tại của đối tượng.

Trong iOS, có 1 khái niệm là retainCount thể hiện số lượng con trỏ sở hữu đối tượng đó. Nếu một đối tượng không thuộc sở hữu của con trỏ nào thì đối tượng đó sẽ bị hủy (giải phóng bộ nhớ). Strong pointer khi trỏ đến 1 đối tượng sẽ làm tăng retainCount lên 1 đơn vị, ngược lại thì Weak pointer sẽ không làm tăng retainCount. Khi đối tượng mà weak pointer trỏ đến bị hủy, lúc này giá trị của weak pointer sẽ bị set về null.

iOS Developer được hỏi... 05/06/2023

Các thành phần trong kiến trúc IOS?

1 câu trả lời

Các thành phần trong kiến trúc IOS gồm có:

  • Cocotouch: hổ trợ các thư viện tương tác giao diện, và sự kiện như UIKit, MapKit, GameKit,EventKit,…
  • Media: quản lý việc truy xuất đa phương tiện như CoreAudio, QuaztCore, CoreImage,…
  • Core Services: gồm các thư viện hổ trợ truy xuất xuống Kernal như CoreLocation, CoreTelephony, AddressBook …
  • Core OS: nhiệm vụ quản lý bộ nhớ, tuyến trình, tập tin hệ thống, truy xuất các thành phần phần cứng.
iOS Developer được hỏi... 05/06/2023

App Bundle trong iOS là gì?

1 câu trả lời

Khái niệm App Bundle được sử dụng cho cả iOS và Android, đây là thư mục chứa toàn bộ source code và resource của ứng dụng được tự động tạo ra khi bạn thực hiện việc đóng gói để chuẩn bị upload ứng dụng lên store. 

Với iOS, Apple tổ chức thư mục bundle chứa trong đó các thư mục con được xác định rõ cấu trúc theo nền tảng và loại gói. Để đọc được nội dung bundle theo cấu trúc thì các tệp thực thi cần sử dụng đối tượng gói (bundle object) để xác định vị trí tài nguyên bên trong gói của ứng dụng hoặc cũng có thể đọc từ các gói khác (thường được Apple cung cấp sẵn trong các framework, plugins của mình).

iOS Developer được hỏi... 07/06/2023

Fast Enumeration là gì?

1 câu trả lời

Đây là một tính năng giúp hỗ trợ duyệt từng phần tử trong một mảng dữ liệu mà không cần biết tổng số phần tử đang có, sử dụng cấu trúc forin

iOS Developer được hỏi... 05/06/2023

Khi gọi autorelease trên một đối tượng sẽ có điều gì xảy ra?

1 câu trả lời

Khi autorelease trên một đối tượng sẽ có các hiện tượng sau:

  • Giá trị retain count sẽ bị giảm đi một đơn vị lúc thích hợp.
  • Đối tượng sẽ được đưa vào autorelease pool trong tuyến trình hiện tại
  • Tuyến trình chính sẽ tạo một autorelease pool lúc bắt đầu gọi hàm, và hủy pool lúc kết thúc việc gọi hàm.
iOS Developer được hỏi... 05/06/2023

Các trạng thái có thể có của một ứng dụng iOS ?

1 câu trả lời

Các trạng thái có thể xảy ra bao gồm:

  • Not Running
  • Inactive: ứng dụng đang chạy nhưng không nhận bất kỳ sự kiện nào, xảy ra khi người dùng lock màn hình, hoặc ứng dụng đang chạy mà có tin nhắn, hoặc cuộc gọi đến.
  • Active (Foreground): ứng dụng đang chạy và xử lý các sự kiện từ người dùng và hệ thống.
  • Suspended: ứng dụng chạy ở chế độ nền và không xử lý bất kỳ tác vụ nào, xảy ra khi hệ thống không đủ bộ nhớ, được tự động quản lý bởi iOS và không có thông điệp phản hồi khi ứng dụng chuyển sang trạng thái này.
  • Background: ứng dụng chạy ở chế độ nền, và có thể tiếp tục xử lý một số tác vụ, ví dụ nhận sự kiện khi người dùng thay đổi vị trí.
iOS Developer được hỏi... 05/06/2023

So sánh việc phát triển ứng dụng iOS bằng Objective-C/Swift và các cross platform mobile

1 câu trả lời

Phát triển ứng dụng iOS bằng Objective-C hay Swift (là những ngôn ngữ được Apple giới thiệu dành riêng cho iOS) được gọi là Native- hay phát triển bằng chính ngôn ngữ gốc.

Ngược lại với nó là sử dụng các cross platform (đa nền tảng) như React Native, Flutter, Xamarin, … để viết source code bằng các ngôn ngữ khác như JavaScript, Dart, C#, … và build thành các ứng dụng có thể chạy được trên nhiều nền tảng mobile khác nhau trong đó có cả iOS. 

Việc phát triển ứng dụng iOS bằng native đương nhiên được hỗ trợ tốt nhất từ Apple và iOS SDK, luôn được cập nhật tính năng trong phiên bản hệ điều hành sớm hơn cùng tài liệu đầy đủ. Ứng dụng build ra từ Native luôn được đánh giá cao hơn về hiệu năng, khả năng tương thích cũng như thiết kế đồng bộ với phiên bản iOS mới nhất.

Tuy vậy thì việc phát triển ứng dụng cross platform đem lại cho chúng ta lợi ích về mặt thời gian phát triển, chi phí xây dựng ứng dụng cũng như sự đồng bộ về giao diện của ứng dụng trên nhiều nền tảng. Vì vậy lựa chọn phát triển ứng dụng iOS bằng hướng nào thường phụ thuộc vào định hướng sản phẩm của nhà phát triển cũng như các ràng buộc về thời gian và chi phí dự án.

iOS Developer được hỏi... 03/06/2023

Bạn sẽ viết test trước hay code trước?

1 câu trả lời

Test Driven Development (TDD) là một xu hướng quan trọng khi chỉ ra lý do nên viết test trước khi code. Vì vậy ở câu hỏi phỏng vấn iOS này, bạn nên cho nhà tuyển dụng thấy bản thân không chỉ học tập xu hướng mà còn hiểu rõ bản chất cũng trình bày những lợi ích trong kinh nghiệm cá nhân.

Việc viết test trước sẽ giúp lập trình viên hình dung một cách chi tiết và cụ thể kế hoạch phát triển (develop), bên cạnh đó mặc dù sẽ khó khăn ở giai đoạn đầu nhưng tiết kiệm được nhiều thời gian gỡ lỗi (unbug) và có thêm nhiều hướng tiếp cận và giải quyết vấn đề theo hướng từ ngoài vào trong.

iOS Developer được hỏi... 03/06/2023

Generics là gì?

1 câu trả lời

Generics là một tính năng mà cho phép lập trình viên có thể định nghĩa và truy cập vào các classes, menthods, properties bằng cách sử dụng các kiểu dữ liệu khác nhau mà không thay đổi cách thức hoạt động của hệ.

Có rất nhiều cách để đặt tên cho kiểu tham số trong Generic nhưng để dễ dàng làm việc nhóm thì đây là quy ước thường dùng:

  • T - Type (Kiểu dữ liệu bất kỳ thuộc Wrapper class: String, Integer, Long, Float,…)
  • E – Element (phần tử – đặc trưng trong Collection Framework)
  • K – Key (khóa)
  • V – Value (giá trị)
  • N – Number (kiểu số: Integer, Double, Float, …)
iOS Developer được hỏi... 03/06/2023

Sự khác biệt giữa bộ nhớ Stack và bộ nhớ Heap là gì?

1 câu trả lời

Stack là cấu trúc bộ nhớ nhập trước xuất trước (FIFO) đơn giản. Stack luôn được sử dụng để lưu trữ hai loại dữ liệu sau: phần tham chiếu của các biến cục bộ và tham số của kiểu tham chiếu, và các biến cục bộ và tham số phương thức có kiểu giá trị.

Bộ nhớ Heap chứa các đối tượng không được xếp ngẫu nhiên được lưu trữ trong bộ nhớ. Ưu điểm là nó cho phép các đối tượng được phân bổ hoặc giải phóng theo thứ tự ngẫu nhiên. Điều này sẽ yêu cầu người lập trình sử dụng các hàm thu gom rác để giải phóng bộ nhớ.

iOS Developer được hỏi... 06/06/2023

Dependency Injection trong Swift là gì?

1 câu trả lời

Dependency Injection là một kĩ thuật gán glass vào một đối tượng thay vì dựa vào class để tạo giá trị cho các đối tượng đó.

Mỗi class sẽ được biểu diễn bằng từng giao diện và sẽ thực hiện chạy bên ngoài class đó. Có 3 yếu tố cần lưu ý khi làm việc với Dependency Injection, đó là:

  • Injector: một ví dụ của dependency khi thực hiện trên client.
  • Dependency: là một nhiệm vụ yêu cầu client để hoạt động chính xác.
  • Client: một object nơi sự phụ thuộc được thực hiện.

Đây là một khung do Apple cung cấp xử lý nhiều luồng. Nó được sử dụng khi lập trình viên muốn làm việc trên một công việc không đồng bộ. Ví dụ: nếu muốn tìm nạp dữ liệu từ API, bạn có thể sử dụng GCD để thực hiện các tác vụ tìm nạp không đồng bộ.

iOS Developer được hỏi... 03/06/2023

So sánh các collection Array, Set và Dictionary trong Swift

1 câu trả lời

Collection là những kiểu dữ liệu tập hợp, trong Swift có 3 dạng chính là Arrays, Sets và Dictionary. 

  • Array (Mảng): sử dụng để lưu trữ dữ liệu cùng kiểu và sắp xếp có thứ tự. Do cần có thứ tự nên các phần tử trong mảng có thể trùng lặp nhau.
  • Set (Bộ): cũng được sử dụng để lưu trữ các dữ liệu có cùng kiểu nhưng không quan tâm đến thứ tự sắp xếp trong đó. Khác với Array, các phần tử trong Set không được phép trùng lặp
  • Dictionary (Từ điển): lưu trữ dữ liệu bằng cặp key – value, các key bắt buộc không trùng lặp nhau, tuy nhiên value thì có thể trùng lặp.
iOS Developer được hỏi... 03/06/2023

Phân biệt các hàm: viewDidAppear, viewDidUnload, viewWillAppear, viewWillDisappear, viewDidLoad, viewDidDisappear?

1 câu trả lời

  • Hàm viewDidAppear được gọi khi view đã hiển thị xong.
  • Hàm viewDidLoad được gọi đầu tiên khi view được khởi tạo.
  • Hàm viewWillAppear được gọi khi view bắt đầu được hiển thị.
  • Hàm viewWillDisappear được gọi khi bắt đầu chuyển sang view khác.
  • Hàm viewDidDisappear được gọi sau khi đã chuyển sang view khác.
iOS Developer được hỏi... 03/06/2023

Cho biết hàm nào được gọi khi application chuyển sang chạy background, và hàm nào được gọi khi chuyển lên chạy foreground.

1 câu trả lời

  • Hàm chuyển sang background: applicationDidEnterBackground (Trong AppDelegate class)
  • Hàm chuyển lên foreground: applicationWillEnterForeground (Trong AppDelegate class)
iOS Developer được hỏi... 03/06/2023

Cho biết thành phần trong kiến trúc IOS?

1 câu trả lời

Các thành phần trong kiến trúc IOS gồm có:

  • Cocotouch: hổ trợ các thư viện tương tác giao diện, và sự kiện như UIKit, MapKit, GameKit,EventKit,…
  • Media: quản lý việc truy xuất đa phương tiện như CoreAudio, QuaztCore, CoreImage,…
  • Core Services: gồm các thư viện hổ trợ truy xuất xuống Kernal như CoreLocation, CoreTelephony, AddressBook …
  • Core OS: nhiệm vụ quản lý bộ nhớ, tuyến trình, tập tin hệ thống, truy xuất các thành phần phần cứng.
iOS Developer được hỏi... 06/06/2023

Cho biết @dynamic có ý nghĩa gì ?

1 câu trả lời

  • Đóng vai trò là hệ thống không tự phát sinh hàm getter/setter cho các biến lớp.
  • Là hệ thống không cảnh báo chưa khai báo hàm getter/setter cho các biến lớp lúc biên dịch.
iOS Developer được hỏi... 03/06/2023

Lập trình hướng đối tượng (OOP) là gì?

1 câu trả lời

OOP là gì: Là một mô hình lập trình dựa trên khái niệm các lớp và các đối tượng.

Đối tượng là gì: Là một thực thể được sử dụng bởi máy tính, là “cái mà ứng dụng muốn đề cập đến”.

Lớp là gì: là một khuôn mẫu để tạo ra các đối tượng cùng kiểu.

Các đặc trưng của OOP:

  • Trong OOP mọi thứ đều là đối tượng.
  • Trong OOP, vấn đề (chương trình) được mô hình hóa như là tập hợp của các đối tượng hoạt động cộng tác với nhau.
  • Trong OOP, các đối tượng có thể được “nhân hóa”.
  • Trong OOP, đối tượng thể hiện sự trừu tượng hóa

Tại sao phải OOP:

  • Liên kết chặt chẽ giữa dữ liệu và thao tác (hàm) của một đối tượng => Cho phép ta tập trung vào bản chất của vấn đề hơn là các chi tiết bên trong vấn đề.
  • Các dữ liệu và hàm được “bao gói” trong một đối tượng => Có thể che dấu được những dữ liệu cần thiết, hoặc chỉ cho phép truy xuất thông qua các hàm.
Đang xem 1 - 20 trong 64 câu hỏi phỏng vấn