: Những câu hỏi phỏng vấn việc làm thường gặp & cách trả lời hay nhất bằng tiếng Anh và tiếng Việt

1. What is Object-oriented programming (OOP)? (Lập trình hướng đối tượng là gì?)
* Mục đích: Ứng viên phải hiểu được khái niệm lập trình hướng đối tượng OOP, các đặc trưng của OOP. Vì đây là khái niệm căn bản nên bắt buộc ứng viên phải trả lời trôi chảy và đầy đủ. Và thêm câu hỏi "Tại sao phải dùng OOP vào lập trình?" nhằm đánh giá độ hiểu biết về khái niệm và vận dụng nó vào lập trình.
* Chiến lược: Đầu tiên quyết là ứng viên nắm được khái niệm OOP? Sau đó là các đặc trưng OOP để nhằm kiểm tra kiến thức mở rộng của ứng viên. Và đánh giá độ sâu kiến thức của ứng với câu hỏi vận dụng OOP vào lập trình. 
* Bối cảnh: Ngôn ngữ máy => Hợp ngữ => Ngôn ngữ lập trình cấp cao. Hầu hết các ngôn ngữ lập trình hiện đại đều hướng đối tượng: Java, C#, Python, Swift, Objective-C, Kotlin...


Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Việt:
- 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.

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Anh:
+ What is OOP: This is a pattern programming which is based on the concept of classes and objects.
- What is Object: It is an instance which is used by computer.
- What is Class: It is a pattern to create same type objects.
- The features of OOP:
+ Everything is Object
+ An application is modelling as a collection of objects which are working altogether.
+ Objects can be duplicated
+ Objects convey abstraction.
- Why is it OOP ?
+ Having a lean connection between data and functions of an object. It it allows us focusing on the real problems rather than the detail.
+ Data and functions are encapsulated in an object. it can hide necsessary data, or it is only accessed through functions.
2. What is memory management? (Quản lý bộ nhớ là gì?)
* Mục đích: Đánh giá độ hiểu biết của ứng viên về quản lý bộ nhớ của chương trình. Còn nhằm mục đích đánh giá độ hiểu bết tiết kiệm bộ nhớ khi lập trình cho ứng dụng, tránh gây lãng phí tài nguyên bộ nhớ.
* Chiến lược: Trả lời được câu hỏi chính đã đưa ra sau đó là các câu hỏi mở rộng sẽ nêu ở bên dưới.

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Việt:
- Quản lý bộ nhớ là: quy tắc lập trình để quản lý vòng đời của các đối tượng và giải phóng chúng khi không còn dùng.
- ARC (Automatic Reference Counting) là gì: là một tính năng quản lý bộ nhớ của trình biên dịch cung cấp các tham chiếu tự động cho Objective-C và Swift.
- Phân biệt Value Type/ Reference Type: Value Type - mỗi thể hiện giữ một bản sao duy nhất của dữ liệu như: Struct, Enum, Tuple. Reference Type - mỗi thể hiện chia sẻ cùng một vùng nhớ của dữ liệu, thường được định nghĩa là một lớp.
- Memory Leak là gì: là một phần của bộ nhớ bị chiếm giữ và không còn được sử dụng lại. Và thế là bộ nhớ tăng lên đến một lúc nào đó sẽ gây ra tình trạng hết bộ nhớ.

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Anh:
- Memory Management: The programming norms which are to manage the life cycle of objects, and release them until they are no longer used.
- What is ARC ( Automatic Reference Counting): It is a feature to manage momory of compilers providing automatic reference for Objective-C and Swift.
- Distinguish Value Type/Reference Type: Value Type- Each of instance keeps a one and only one clone of data such as : Struct, Enum, Tuple. Rference Type - Each of instance share a same area momory of data, which is often defined as a class.
- What is Memory leak: It is a part of memory which is accounted for and no longer used. Henceforth, memory is increasing until It has no memory left.
3. What is Grand Central Dispatch (GCD)? (GCD là gì?)
* Mục đích: Hiểu được khái niệm GCD. Phân biệt được Serial Queue với Concurent Queue.
* Chiến lược: Mở đầu với khái niệm căn bản trong Threading Programming của iOS là công nghệ GCD. Sao đó phải giải thích được GCD dùng để làm gì? => Dùng để thực thi mã lệnh đồng thời trên phần cứng đa lỗi bằng cách gửi công việc đến hàng đợi dược quản lý bởi hệ thống. Câu hỏi mở rộng kiến thức của ứng viên với việc phân biệt Serial Queue với Concurent Queue.

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Việt:
- GCD là gì: là một tính năng quan trọng được giới thiệu ở iOS 4. Nó dùng để phân phối tính toán trên nhiều lỗi ở bất kỳ luồng nào và nó được tối ưu hoá để sử dụng cho các thiết bị chạy đa lõi.
- Dispatch Queue là gì: là một lớp trừu tượng trên hàng đợi GCD cho phép thực hiện các tác vụ không đồng bộ và đồng thời trong ứng dụng.
- Serial Queue vs Concurent Queue:
+ Serial Queue: chỉ thực hiện nhiệm vụ tại một thời điểm.
+ Concurent Queue: cho phép thực hiện nhiều vụ cùng một lúc.

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Anh:

- What is GCD: it is an important feature which is introduced in IOS 4. It is used on distributing calculation on many bugs on any thread and it is ultilized for using for devices using multi-thread.
- What is Dispatch Queue: It is an abstract class on queue GDC which allows execute asyncronous task in the same time in the application.
- Serial Queeu vs Concurent Queue:
+ Serial Queue: it only execute 1 task at the time.
+ Concurent Queue: It allows executes many task at the same time.
4. What is MVC? (MVC là gì?)
* Mục đích: Hiểu được khái niệm MVC. Những hạn chế của MVC. Nêu thêm được những mẫu thiết kế khác như MVVM, VIPER...
* Chiến lược: Cũng bằng cách mở đầu với khái niệm căn bản với mẫu thiết kế phần mềm MVC đã được Apple chọn như mẫu hình lập trình cho ứng dụng iOS. Tiếp đến là nhận biết xem ứng viên hiểu như thế nào về MVC qua các thành phần có trong iOS. Và câu hỏi dùng để mở rộng thêm kiến thức với việc chỉ ra những thuận lợi và bất lợi của việc dùng MVC. Nêu ra được những mẫu hình thiết kế trong họ MVC như MVVM, MVP...

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Việt:
- MVC là gì: là viết tắt của cụm từ Model View Controller. Là mẫu thiết kế phần mềm được Apple chọn làm phương pháp chính để phát triển ứng dụng iOS.
- Trong ứng dụng iOS các thành phần được thể hiện thông qua:
+ UIView và các lớp con của nó được xem như là View
+ UIViewController và các lớp con của nó được xem như là Controller
+ Các đối tượng dữ liệu, lớp NSManagedObject và các lớp con được xem như là Model.
- Các thuận lợi khi dùng MVC: được Apple khuyến khích sử dụng. Đơn giản trong việc tích hợp.
- Các hạn chế khi dùng MVC: Khi phát triển một ứng dụng lớn, khối lượng code xử lý trong lớp Controller là rất lớn. Do đó sẽ khó theo dõi code, khó debug, tốn nhiều thời gian để bảo trì.
- Các mẫu thiết kế khác: MVVM, MVP, VIPER...

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Anh:
- What is MVC: It is abbreviation of "Model View Controller". It is the pattern in application development which is chosen by Apply as the main method to develop IOS applications.

- In IOS applications, components are expressed through:
+ UIView and their child classes are treated as VIew
+ UIViewController and their child classes are treated as Controller
+ Data objects, NSManagedObject class and their child classes are treated as Model.
- The advantages of MVC: Apple recommends use MVC. It is simple in integration.
- The dis advantages of MVC: when developing a huge application, the quantity code which are handled in Controller class are significant huge. It leads to difficult in following code, debugging and taking most time in maintenance

- Other design patterns: MVVC, MVP, VIPER...
5. What is unit testing? (Unit Testing là gì?)
* Mục đích: Hiểu được khái niệm Unit Testing là gì. Tại sao phải dùng unit testing vào dự án.
* Chiến lược: Bằng việc hiểu khái niệm cơ bản của Unit Testing. Và cũng đi kèm với câu hỏi là tại sao phải dùng nó vào dự án? Nêu ra những lợi ích của việc dùng Unit Testing. Câu hỏi vận dụng như hiểu về các framework XCTest và XCUITest trong dự án iOS.

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Việt:
- Unit testing là gì: Là một kỹ thuật kiểm thử sử dụng module riêng lẻ để kiểm tra các vấn đề gặp phải của chính các nhà phát triển. Nó liên quan đến tính chính xác của module chức năng.
- Các điểm thuận lợi khi dùng unit testing:
+ Giảm khiếm khuyết trong các tính năng mới được phát triển hoặc giảm lỗi khi thay đổi chức năng hiện có.
+ Giảm chi phí phát triển vì đã phát hiện sớm.
+ Cải thiện thiết kế và cho phép tái cấu trúc mã tốt hơn.
- XCTest và XCUITest là gì: Là một framework để viết kiểm thử đơn vị, kiểm thử hiệu năng, kiểm thử giao diện người dùng trong dự án Xcode hoặc iOS.

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Anh:
- What is unit testing: It is a testing technique using individual module to test/verify developer's problems. It relates to the accuracy of feature module.
+ Unit testing's advantages:
+ Reducing defectives in newly feature or reducing bugs/ problems when changing current feature.
+ Reduce Cost development.
+ Improving design and allowing re-constructing code in a better way.
- What is XCTest XCUITest: It is a framework to write unit testing, verify performance, verify GUI ( Graphic User Interface ) in XCode Project or IOS.

Các câu hỏi phỏng vấn tìm việc làm thường gặp khác

1. Giới thiệu sơ lược về bản thân bạn? (Could you briefly Introduce yourself?)
Hầu hết nhà tuyển dụng đều dùng câu hỏi này để bắt đầu câu chuyện với ứng viên. Mục đích câu hỏi này là để đánh giá phong thái và cách trình bày của ứng viên. Lúc này, tùy thuộc vào câu trả lời của ứng viên mà nhà tuyển dụng sẽ đánh giá đây có phải là một ứng viên phù hợp hay không và đưa ra các câu hỏi tiếp theo để đánh giá kỹ năng, tính cách và kinh nghiệm làm việc.

Tip: Để trả lời tốt câu hỏi này, bạn cần đưa ra khái quát những thông tin về cá nhân có liên quan, hữu ích cho vị trí mà mình ứng tuyển như: công việc hiện tại, trình độ học vấn, mục tiêu sự nghiệp,… Bạn nên cân nhắc giới thiệu bản thân theo trình tự thời gian quá khứ, hiện tại và tương lai cũng như gói gọn trong tối đa 2 phút. Chia sẻ ngắn về sở thích, tính cách cũng là một cách thu hút nhà tuyển dụng, tuy nhiên cũng không nên nói quá nhiều về những vấn đề này với nhà tuyển dụng.

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Việt:
"Trước khi giới thiệu về bản thân mình, em/tôi xin gửi lời cảm ơn chân thành tới anh/chị khi đã tạo cơ hội cho em/tôi để được trao đổi về vị trí ứng tuyển của quý công ty. Em chào anh/ chị, tên em là Mai, họ tên đầy đủ của em là Trịnh Thị Tuyết Mai. Em là sinh viên mới ra trường của Trường đại học X, trong thời gian làm sinh viên em đã từng tham gia một số công việc bán thời gian nhưng không thật sự ấn tượng, vì các công việc em làm khá đơn giản, tuy vậy thông qua chúng em học được tính kiên nhẫn và tỉ mỉ. Thông qua các hoạt động này, em có kinh nghiệm hơn trong việc nắm bắt tâm lý người khác, có thêm những kỹ năng như quan sát, có khả năng chịu áp lực cao. Và em tin những điều này sẽ có ích đối với vị trí này. Qua tìm hiểu kỹ về vị trí công việc và môi trường làm việc bên mình cũng như những kinh nghiệm và sở trường em đang có, em thực sự mong muốn được có cơ hội được làm việc cùng anh chị tại công ty Y với vị trí nhân viên tư vấn khách hàng."

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Anh:
"Before I introduce myself, I would like to thank you very much for giving me / me the opportunity to talk about the position of your company. / sister, my name is Mai, my full name is Trinh Thi Tuyet Mai. I am a fresh graduate of University X, when I was a student, I used to have some part-time jobs but none is not really significant, because the work I did was quite simple. Nonetheless I learned to be patient and meticulous. Through these jobs, I have more experience in interpersonal skills, observation, and high pressure tolerance. I believe these will be useful for this position through understanding carefully about the job position and working environment For me, I really want to have the opportunity to work with you at company Y as a client consultant. "