: 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. Lập trình hướng đối tượng là gì? (Explain OOP Concepts?)
Mục đích: tìm hiểu ứng viên về các kỹ thuật cơ bản có trong lập trình, ở đây là lập trình hướng đối tượng (OOP), những khái niệm nền tảng trong lập trình Android.

Chiến lược trả lời: trả lời đầy đủ khái niệm lập trình hướng đối tượng, giải thích được từng nguyên tắc có trong lập hướng đối tượng và nêu lên các ứng dụng của việc lập trình hướng đối tượng trong Android.

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Việt:
"OOP (Object-Oriented Programming) là một kỹ thuật lập trình dùng để thiết kế chương trình sử dụng các lớp (classes) và đối tượng (objects). Hoạt động dựa trên các nguyên tắc trừu tượng hóa (abstraction), đóng gói (encapsulation), kế thừa (inheritance) và đa hình (polymorphism).
Giải thích các nguyên tắc:
- Lớp (class): là một nhóm các đối tượng tương tự. Nó là một thực thể logic và không phải thực thể vật lý.
- Đối tượng (object): Một đối tượng có thể được định nghĩa là một thể hiện của một lớp và có thể có nhiều thể hiện của một lớp trong một chương trình.
- Trừu tượng hoá (abstraction): là thực hiện rút ra những đặc điểm, tính năng thiết yếu và ẩn đi các chi tiết nền.
- Đóng gói (encapsulation): là một kỹ thuật bao bọc dữ liệu và code, các biến của một lớp luôn bị ẩn khỏi các lớp khác. Nó chỉ có thể được truy cập bằng cách sử dụng các phương thức của lớp hiện tại của họ.
- Kế thừa (inheritance): là một khái niệm trong đó một đối tượng được thừa kế các thuộc tính và hành vi của đối tượng cha. Nó tạo ra mối quan hệ cha-con giữa hai lớp.
- Đa hình (polymorphism): là đề cập đến khả năng của một biến, đối tượng hoặc chức năng được đảm nhận nhiều hình thức.

Ứng dụng trong Android: việc xây dựng layout dựa trên các component có trong Android như TextView, EditText, ImageView,... tất cả các component này điều có một số đặt tính chung được thừa kế từ lớp cha là lớp View."

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Anh:
"OOP ( Object-Oriented Programming ) is a method programming to design an application which is used classes and objects. The operation based on these 4 principles: abstraction, encapsulation, inheritance and poymorphism
Principles explanation:
- Class: a group of definition for the data format and available procedures for a given type or class of object. It is a logic entity, not phisically one.
- Object: An object can be defined as a representative of a class ( instance ). A class can have lots of instances in an application.
- Abstraction: Abstraction is the process of hiding the internal detail of an application from the outer world. Abstraction is used to describe things in simple terms
- Encapsulation: A method covering data and source codes, those variables of a class are always hiden out of other classes. They are only accessed by using methods ( functions ) in their class.
- Interitance: A concept which a class is inherited attributes and bahaviors from parent class. it creates a relationship between classes.
- Polymorphism: The concept that objects of different types can be accessed through the same interface. Each type can provide its own, independent implementation of this interface
Use in Android: Building layouts is based on components in Android such as TextView, EditText, ImageView. All of these components have some attributes inherited from parent class which is View class.
2. Activity và vòng đời của nó là gì? (What is Activity and its lifecycle?)
Mục đích: tìm hiểu ứng viên về các thành phần cơ bản có trong hệ thống Android và đặt biệt Activity là một trong những thành phần quan trọng nhất để xây dựng nên một ứng dụng Android.

Chiến lược trả lời: ứng viên cần trả lời đầy đủ bản chất của một Activity trong Android, hiểu được vòng đời của một Activity và ứng dụng được vòng đời của Activity trong lập trình Android như thế nào.

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Việt :
"Activity là một lớp trong Android cung cấp một cửa sổ, ở đó ứng dụng sẽ dựng các thành phần giao diện hiển thị dữ liệu cho người dùng.
Vòng đời của một Activity:
- Sau khi được kích hoạt, lần lượt các callback onStart(), onCreate(), onResume() sẽ được hệ thống gọi đến. Sau khi gọi những phương thức trên, thì Activity được xem như là đang chạy (Activity Running)
- Nếu có một Activity nào khác chiếm quyền hiển thị, thì Activity hiện tại sẽ rơi vào trạng thái onPause(). Nếu Activity khác làm cho Activity hiện tại không còn nhìn thấy được thì onStop() sẽ được gọi ngay sau đó.
- Nếu Activity đã rơi vào trạng thái onPause() mà người dùng sau đó quay về Activity cũ thì onResume() sẽ được gọi. Còn nếu Activity rơi vào trạng thái onStop() thì onRestart() sẽ được gọi.
- Và cuối cùng, nếu người dùng chủ động như ấn back hoặc tắt ứng dụng thì hàm onDestroy() sẽ được gọi và kết thúc vòng đời của một Activity.
Ứng dụng trong Android: hàm onCreate() chỉ được OS gọi một lần duy nhất, vì vậy chúng ta có thể khởi dữ liệu hoặc giao diện dùng cho sau này. Ngoài ra, tham số savedInstanceState là trạng thái trước đó của một Activity, chúng ta có thể sử dụng để khôi phục lại dữ liệu của Activity."

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Anh:
"Activity is a class in Android providing a layer in which application will build UI components to display data to users.
The life cycle of an activity:
- Callback onStart(), onCreate(), onResume() will be called respectively after they are activated. After calling those methods, Activity will be treated like a running activity.
- If an activity granted a rights for displaying, the current acitivity will be changed to onPause() status. If an activity put current activity on hidden state, onStop() will be called right after.
- If an activity is already in onPause() and users come back to this activity, callBack onResume() will be called. In addition, if an acitivity is in onStop(), callBack onRestart() will be called.
- Finally, if users actively click back button or turn off the application, callBack onDestroy() will be called and finished the life cycle of the activity.

Uses in android: callBack onCreate() is only called 1 time by OS, so we are able to create default data or UI which are used for future. Furthermore, the param savedInstanceState is the state which is last of an acitivy, it can be used to recover the data of activity.
3. Kiến trúc MVP & MVVM là gì? (What is MVP & MVVM architecture?)
Mục đích: giúp tìm hiểu ứng viên kiến thức về thiết kế kiến trúc trong một ứng dụng sau cho ứng dụng có khả năng tái sử dụng, kiểm thử và bảo trì.

Chiến lược trả lời: ứng viên cần trả lời đầy đủ hai khái niệm MVP và MVVM, từng thành phần Model, View và Presenter của kiến trúc MVP và từng thành phần Model, View, ViewModel của kiến trúc MVVM. Ứng viên cần phân tích được sự giống nhau và khác nhau giữa hai kiến trúc.

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Việt
"* MVP (Model View Presenter) là một kiến trúc cung cấp khả năng tái sử dụng, kiểm thử lỗi và bảo trì ứng dụng.
- Model: được dùng để xử lý dữ liệu của ứng dụng, không tương tác trực tiếp đến View mà nó cung cấp dữ liệu cho Presenter. Presenter sẽ xử lý và chuyển dữ liệu đến View, Model không nhận thức được sự hiện diện của View và ngược lại.
- View: trách nhiệm của View là xử lý bố cục giao diện và vẽ giao diện với những dữ liệu được Presenter cung cấp.
- Presenter: có trách nhiệm nhận dữ liệu từ Model sau đó xử lý logic và chuyển dữ liệu đến View để hiện thị, bởi vì Model và View không trực tiếp liên lạc với nhau mà phải thông qua Presenter làm trung gian.

* MVVM (Model View ViewModel) là một kiến trúc giúp loại bỏ sự liên kết giữ các thành phần, ViewModel sẽ xử lý business logic mà không biết gì về View.
- Model: được dùng để xử lý các dữ liệu và business logic, bao gồm các nhiệm vụ xử lý dữ liệu cục bộ (local) và từ xa (remote), các lớp và kho lưu trữ (repository).
- View: bao gồm các code chứa trong (Activity, Fragment,..) và layout chứa mã nguồn xml. Nó sẽ gửi các yêu cầu hoặc event đến ViewModel nhưng không nhận được sự phản hồi trực tiếp từ ViewModel mà phải subscribe vào các observables cần thiết của ViewModel.
- ViewModel: là cầu nối giữa View và Model, nó không chứa tham chiếu trực tiếp từ View (context). Về cơ bản ViewModel không nên biết về View, nó tương tác với Model và cung cấp các observables để View có thể lắng nghe và sau đó hiển thị dữ liệu.

Phân tích sự gống và khác nhau:
Giống nhau: lần lượt cả View và Model của hai mô hình điều đảm nhận việc hiển thị thông tin và xử lý dữ liệu trong ứng dụng.
Khác nhau: sự khác nhau cơ bản của hai mô hình là Presenter đảm nhận việc xử lý logic và chuyển dữ liệu trực tiếp đến View để hiển thị, còn ViewModel cung cấp các observables để các View có thể lắng nghe là sau đó hiển thị dữ liệu."

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Anh
"* MVP ( Model View Presenter ) is a user interface architectural pattern engineered to facilitate automated unit testing and improve the separation of concerns in presentation logic
- The Model is an interface defining the data to be displayed or otherwise acted upon in the user interface.
- The View is a passive interface that displays data (the model) and routes user commands (events) to the presenter to act upon that data.
- The Presenter acts upon the model and the view. It retrieves data from repositories (the model), and formats it for display in the view.

MVVM( Model View ViewModel) is a software architectural pattern that facilitates the separation of the development of the graphical user interface (the view) – be it via a markup language or GUI code – from the development of the business logic or back-end logic (the model) so that the view is not dependent on any specific model platform

Similarities and differences:
+ similarities: Both view and Model from architects are all assigned for displaying and processing data in applications.
+ differences: Basically, the resposibility of presenter is to handle logic rules and transfer data directly to View while ViewModel provides observables to View to listen events and display data later."
4. Cho tôi biết vài điều về RxJava? (Tell me something about RxJava?)
Mục đích: thư viện RxJava là thư viện quan trọng trong lập trình Android, vì vậy ứng viên cần phải có sự hiểu biết đúng đắn về việc sử dụng RxJava trong lập trình Android.

Chiến lược trả lời: ứng viên cần nắm vững khái niệm về RxJava, có kiến thức cơ bản về lập trình phản ứng và cách ứng dụng của thư viện RxJava trong lập trình Android.

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Việt
"RxJava được sử dụng để lập trình phản ứng. Trong lập trình phản ứng, người tiêu dùng (consumer) phải phản ứng lại khi có dữ liệu. Lập trình phản ứng cho phép thay đổi sự kiện để truyền đến các nhà quan sát (observer) đã đăng ký.

RxJava bao gồm các thành phần cơ bản:
- Observable: là luồng dữ liệu thực hiện một số công việc và phát ra dữ liệu.
- Observer: là thành phần không thể thiếu trong Observable, nó nhận dữ liệu được phát ra từ Observable.
- Subscription: là mối liên kết giữa Observable và Observer. Có thể có nhiều Observer cùng đăng ký một Observable.
- Operator: hỗ trợ việc sửa đổi dữ liệu từ Observable trước khi Observer nhận chúng.
- Schedulers: là nơi quyết định Observable phát ra trên Thread nào và Observer nhận dữ liệu trên Thread nào.

Ứng dụng trong Android: ứng dụng nổi bật nhất của RxJava trong Android là sự kết hợp với thư viện Retrofit dùng để kết nối đến server gửi và nhận dữ liệu trên các luồng được RxJava định nghĩa. "

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Anh
"RxJava is applied in reactive programming. In reactive programming, consumers must react when having data. Reactive programming allows changes in events to transfer to registered observers.

RXJava includes basic ingredients:
- Observable: data flow (stream) to executes work and release data.
- Observer: A component which is indispensable in Observable, It receives data from Observable.
- Supscription: The link between Observable and Observer. An observable can have more than one registered observer.
- Operator: Supporting changing data from Observable before Observers receiving them.
- Schedulers: It is a place in which determines observable will be released and what thread is. In addition, observer and thread are also identified in this data stream.

Uses in Android: the essence of RxJava in Android is the combination with Retrofit library, which is applied for connecting to server to send and receive data on streams which are defined by RxJava."
5. Nền tảng Firebase là gì, các dịch vụ thường được sử dụng trong trong Android? (What is Firebase platform, these services are often used in Android?)
Mục đích: đánh giá khả năng cập nhật các công nghệ mới trong lập trình ứng dụng, đặt biệt Firebase là một công nghệ gần như không thể thiếu trong các ứng dụng Android hiện nay.

Chiến lược trả lời: hiểu dược nền tảng Firebase và các công cụ, dịch vụ giúp việc phát triển ứng dụng chất lượng. Nêu lên một dịch vụ được ứng dụng trong việc lập trình Android.

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Việt:
"Firebase là một nền tảng phát triển ứng dụng di động và web, firebase cung cấp rất nhiều công cụ và dịch vụ giúp phát triển ứng dụng chất lượng và rút ngắn thời gian phát triển. Firebase là sự kết hợp giữ nền tảng Cloud và hệ thống các máy chủ cực kỳ mạnh mẽ của Google, firebase cung cấp các API đơn giản, mạnh mẽ và đa nền tảng trong việc quản lý và sử dụng database.

Những dịch vụ hữu ích trong phát triển ứng dụng Android:
- Realtime Database: Firebase Realtime Database là kiểu dữ liệu NoSQL được lưu trữ trên cloud, cho phép bạn lưu trữ và đồng bộ dữ liệu người dùng theo thời gian thực.
- Authentication: với tính năng này của Firebase, sẽ dễ dàng xây dựng tính năng login mà không cần phải sử dụng dữ liệu đăng ký riêng.
- Firebase Cloud Messaging (FCM): Đây chính là tính năng khởi thủy của Firebase, giúp chúng ta xây dựng ứng dụng chat - trò chuyện. Giờ đây, nó còn cho phép đẩy thông báo (push notification) tới nhiều thiết bị Android, IOS hay Web.

Ứng dụng trong Android: dịch vụ Firebase Cloud Message là một dịch vụ gửi tin nhắn, được ứng dụng trong việc gửi thông báo từ nhà phát triển đến khách hàng nhằm thông báo các thông tin cập nhật mới nhất của ứng dụng hoặc được gửi từ các khách hàng với nhau nhằm trao đổi thông tin giữa hai bên."

Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Anh:
"Firebase is a platform to develop applications in web and mobile. Firebase provides many of tools and services to help developing qualified applications and shorten development time.
Firebase is an integration between Cloud and the system of powerful servers of Google. Firebase provives basic, valuable API and supporting multi platform ini management in uses database.

Helpful services in developing Android applications:
- Realtime database: Firebase Realtime Database is with NOSQL data type which is stored on cloud allows storing and syncronizing user data realtime.
-Authentication: With this feature from Firebase, It can be easily in developing "login" feature without using separated data.
- Firebase cloud Messaging ( FCM ) : This is the first early feature of firebase, which helps us to develop chat-message applications. Nowadays, It also allows us to push notifications to many Android, IOS or web devices.

Uses in Android, Firebase Cloud Message is a message-service, which is applied in sending notiifcaiotns from developers to users to notify them newest news or between users for communication."

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. "