Học lập trình iOS

Giống như nhiều sinh viên mới ra trường khác, tôi cũng từng vô cùng lúng túng và bối rối khi đi nộp CV và phỏng vấn vào các công ty phần mềm, một câu trả lời sai thôi cũng sẽ gây ảnh hưởng không nhỏ tới kết quả và sự tự tin của bạn.

Do vậy, tôi quyết định sưu tầm lại và chia sẻ cho các bạn một số những câu hỏi phổ biến từ kinh nghiệm đi phỏng vấn tại các công ty của tôi trước đó và từ nhiều nguồn trên mạng. Bộ câu hỏi này khá cơ bản và dành cho đối tượng là các bạn sinh viên lập trình iOS mới ra trường hay các bạn học viên lớp iOS tại Techmaster. 

1 )  Hiện tượng Memory leak là gì?

Memory leak là quá trình thâm hụt dần dần của bộ nhớ khả dụng của hệ thống, nó xảy ra khi một chương trình lặp đi lặp lại không trả lại bộ nhớ nó đã chiếm dụng trong quá trình sử dụng. Trong lập trình hướng đối tượng, Memory leak xảy ra khi một đối tượng được lưu trong bộ nhớ nhưng không truy cập được bởi code hiện tại/

2 )  Định nghĩa App Thining

Đây là tính năng mà người dùng các thiết bị có bộ nhớ 8 hay 16 GB được hưởng lợi nhiều nhất. App Thinning giúp tự động tối ưu dung lượng các ứng dụng tải về và bỏ qua các phần thừa nhằm tiết kiệm bộ nhớ. 
Chẳng hạn, bạn đang sở hữu iPhone 5, mỗi khi tải ứng dụng từ App Store, vốn được thiết kế để chạy trên nhiều dòng máy khác nhau, App Thinning sẽ phát hiện và chọn tải những thành phần đủ để phần mềm chạy, từ đó tiết kiệm đáng kể không gian lưu trữ.

3) Auto-layout là gì?

Auto Layout là cơ chế tự động tính toán size và vị trí của tất các view nằm trong ứng dụng của bạn, nó dựa trên một hệ thống điều kiện gọi là constraint đặt trên từng view.

4 ) Định nghĩa GCD(Grand Central Dispatch) và cách sử dụng?

GCD là một API phổ biến của Apple được sử dụng để hỗ trợ việc xử lý tác vụ đồng thời trên các phần cứng đa lõi của iOS và OSx. Ví dụ như khi ứng dụng lấy dữ liệu từ một API, thao tác này sẽ được thực thi tại một thread "ngầm" (background thread), nhằm giảm tải công việc cho thread "chính" (main thread). Qua đó làm tăng performance của ứng dụng và làm nó trở nên mượt hơn.

Tham khảo các khóa học lập trình online, onlab, và thực tập lập trình tại TechMaster

5 ) Trình bày một số ưu điểm của Swift so với Objective-C

  • Cú pháp ngắn gọn dễ đọc hơn
  • Dễ dàng maintain 
  • An toàn hơn với cơ chế Optional
  • Mã nguồn mở
  • Swift hỗ trợ các thư viện dynamic
  • Swift is a future you can influence.

Các bạn có thể vào  link này để tìm hiểu chi tiết hơn.

6 ) Phân biệt Synchronous và Asynchronous trong GCD

2 thuật ngữ này mô tả việc 1 function khi hoàn tất công việc của nó thì liên quan đến các task khác - mà nó yêu cầu GCD xử lý - như thế nào. 1 function đồng bộ chủ trả về khi task mà nó yêu cầu đã đuược hoàn thành. Còn function ko đồng bộ thì trả về ngay lập tức, nó vẫn yêu cầu task phải được thực hiện nhưng ko chờ đợi task đó làm xong. Vì vậy, function bất đồng bộ sẽ không block thread hiện tại *

7 ) Tại sao lại phải tạo một weak reference khi sử dụng self trong block?

Để tránh hiện tượng retain cycles và memory leak.

8 ) MVC là gì ?

MVC là viết tắt của Model – View – Controller. Là một kiến trúc phần mềm hay mô hình thiết kế được sử dụng trong kỹ thuật phần mềm. Nói cho dễ hiểu, nó là mô hình phân bố source code thành 3 phần, gồm Model-View-Controller, mỗi thành phần có một nhiệm vụ riêng biệt và độc lập với các thành phần khác.

Controller

Giữ nhiệm vụ nhận điều hướng các yêu cầu từ người dùng và gọi đúng những phương thức xử lý chúng… Chẳng hạn thành phần này sẽ nhận request từ url và form để thao tác trực tiếp với Model.

Model

Đây là thành phần chứa tất cả các nghiệp vụ logic, phương thức xử lý, truy xuất database, đối tượng mô tả dữ liệu như các Class, hàm xử lý…

View

Đảm nhận việc hiển thị thông tin, tương tác với người dùng, nơi chứa tất cả các đối tượng GUI như textbox, images… Hiểu một cách đơn giản, nó là tập hợp các form hoặc các file HTML.

9) Delegate là gì ?

Delegate là một pattern rất phổ biến trong công việc truyển dữ liệu giữa các View. Cơ chế hoạt động của nó là View B ủy quyền cho View A thực thi một hành động nào đó, View A sau khi nhận dữ liệu View.B trả về, sẽ dismiss View B và thực thi hành động mà view B đã ủy quyền trước đó

10)  NSNotificationCenter là gì và nó hoạt động như thế nào ?

NSNotificationCenter là một cơ chế nghe-gọi mà Apple phát triển từ Observer Pattern trong thư viện Cocoa . Ý tưởng ở đây là Bên A từ một thao tác sẽ gửi thông điệp tới bên B qua một protocol, từ đố dữ liệu sẽ được truyền qua thông điệp tới bên B và bên B sẽ xử lý. 

Khóa học lập trình di động tại Techmaster:

Để cài đặt MacOSX lên phần cứng không phải Apple liên hệ chuyên gia cài Hackintosh:

  • Nguyễn Minh Sơn: 01287065634
  • Huỳnh Minh Sơn: 0936225565
  • Website: caidatmacos.com