Câu hỏi phỏng vấn Senior Android Developer
Android được phát triển bởi Google và phát hành lần đầu tiên vào năm 2008, đang ngày càng thể hiện vị trí của mình với hơn 70% thị phần. Android hiện nay được coi là hệ điều hành di động phổ biến nhất trên thế giới.
Điều đó đã làm cho nhu cầu tìm kiếm các nhà lập trình Android trở nên mạnh mẽ hơn bao giờ hết. Đây là vị trí quan trọng đối với các công ty và vô cùng cạnh tranh hiện nay. Sau đây là bí kíp trả lời câu hỏi phỏng vấn Senior Android Developer thường gặp cho bạn.
Bộ câu hỏi phỏng vấn về thông tin cá nhân
Bạn hãy giới thiệu đôi nét về bản thân
Trong bất kỳ buổi phỏng vấn nào ở mọi vị trí công việc, yêu cầu về việc giới thiệu đôi nét về bản thân luôn là một câu hỏi bắt buộc và cơ bản nhất.
Các nhà tuyển dụng sẽ sử dụng câu hỏi này để bắt đầu buổi phỏng vấn và bắt đầu tìm hiểu xem ứng viên có phù hợp hay không thông qua cách trình bày và phong thái.
Thế nên, khi đối mặt câu hỏi này, bạn cần nhớ hãy trình bày rõ ràng, mạch lạc và đưa ra những thông tin khái quát về bản thân, nhưng cần lưu ý đó phải là những thông tin hữu ích cho nhà tuyển dụng.
Đừng đi quá sâu vào những thứ như thói quen, sở thích hay những kinh nghiệm làm việc không liên quan đến vị trí mà bạn đang ứng tuyển.
Ngoài một vài thông tin cơ bản như tên, tuổi, ngành học, hãy nói về những tố chất, kinh nghiệm, bằng cấp, v.v., mà bạn có khiến cho bạn phù hợp với vị trí mà mình ứng tuyển.
Ngoài ra, bạn cũng có thể nói sơ về lộ trình công việc mà bạn đang hướng đến. Hãy trình bày tất cả theo trình tự thời gian, logic rõ ràng và tốt nhất chỉ gói gọn trong khoảng từ 1,5 đến 2 phút mà thôi.
Cho chúng tôi lý do để chọn bạn
Câu hỏi này giúp nhà tuyển dụng biết được cách bạn hiểu và định vị năng lực của bản thân cũng như sự tìm tòi và mức độ hiểu biết của bạn đối với vị trí công việc và công ty mà bạn đang ứng tuyển.
Cả hai yếu tố này đều vô cùng quan trọng để xác định xem bạn có thực sự là ứng viên phù hợp với họ hay không. Và nếu bạn được chọn, bạn có thể đem lại đóng góp gì cho công ty.
Mẹo để trả lời câu hỏi này là bạn phải trình bày đầy đủ được hai vấn đề vừa nêu trên. Hãy trả lời bằng cách lồng ghép hai nội dung theo dạng:
Vì vị trí này có đặc thù là X, đòi hỏi những tố chất/năng lực/kiến thức Y, thế nên với Z mà tôi có, tôi có thể đảm nhận và hoàn thành tốt công việc được giao.
Hoặc, tôi có thế mạnh về Z, thế nên tôi có thể dễ dàng các công việc đòi hỏi Y như vị trí và công ty đang tìm kiếm.
Nhưng để có thể trả lời hoàn hảo cho câu hỏi này, tốt nhất bạn nên có sự tìm hiểu kỹ càng về vị trí công việc cũng như các thông tin liên quan đến công ty như: lĩnh vực hoạt động, thế mạnh, điểm yếu cũng như văn hóa của công ty. Sau đó xác định xem năng lực, tính cách, mục tiêu của bản thân có thích hợp hay không.
Bạn có vấn đề nào cần chúng tôi giải đáp không?
Đây cũng là một câu hỏi rất phổ biến trong các buổi phỏng vấn và thường là điểm mà nhiều người thường mắc sai lầm khi trả lời. Dĩ nhiên, ở đây không có một mô thức cụ thể, nhưng nhìn chung, tốt hơn nếu bạn đặt được những câu hỏi có ý nghĩa.
Việc đưa ra các vấn đề sẽ cho nhà tuyển dụng thấy bạn thực sự quan tâm và có mong muốn được làm việc tại công ty này. Không chỉ vậy, nó còn cho thấy sự tỉ mỉ và cẩn thận của bạn, bạn thận trọng với công việc mà mình muốn làm và bạn cũng hiểu được giá trị của bản thân.
Hãy nhớ rằng buổi phỏng vấn không chỉ là một cuộc kiểm tra một chiều từ phía nhà tuyển dụng. Trong khi họ tìm kiếm ứng viên phù hợp, bạn cũng đang tìm kiếm một công việc phù hợp cho bản thân. Do đó, bạn hoàn toàn có quyền đặt câu hỏi để nhà tuyển dụng giải đáp.
Câu hỏi phỏng vấn Senior Android Developer về chuyên môn
Cho biết Android là gì?
Hầu hết trong các cuộc phỏng vấn, nhà tuyển dụng sẽ hỏi Android là gì trước tiên. Bạn cần trả lời đầy đủ, không chỉ giải đáp định nghĩa mà còn thể hiện sự hiểu biết sâu của bản thân thông qua ngôn từ diễn đạt dễ hiểu.
Nói một cách đơn giản, Android là hệ điều hành trên thiết bị di động, nó được tạo ra và phát triển bởi chính đội ngủ Google. Code của nó dựa trên nhân Linux nguồn mở và Android được thiết kế chủ yếu trên các thiết bị cảm ứng. Đối thủ lớn nhất của Android là IOS.
Nơi Android lưu trữ GUI được gọi là gì?
GUI (Graphical User Interface) nghĩa là đồ họa giao diện người dùng. Nó là một công cụ giúp các nhà lập trình Android mô phỏng các kịch bản cụ thể nhất định và xem chúng theo hướng mà người dùng ứng dụng sẽ nhìn thấy.
Nêu 4 lớp cảm biến của Java
Android sử dụng 4 lớp cảm biến của Java cụ thể như: Sensor, SensorEvent, SensorEventListener, và SensorManager.
Nêu sự khác biệt của “implicit” và “explicit”
Đối với câu hỏi phỏng vấn Android này bạn sẽ ngầm hiểu đối tượng được hỏi cụ thể là Intent (mục đích):
- Explicit (Intent) – (Mục đích ) rõ ràng : mục đích rõ ràng là nơi bạn thông báo cho hệ thống về hoạt động hoặc thành phần hệ thống mà nó nên sử dụng để tạo phản hồi cho ý định này.
- Implicit (Intent) – (Mục đích) ngầm : mục đích ngầm cho phép bạn khai báo hành động bạn muốn thực hiện, sau đó hệ thống Android sẽ kiểm tra thành phần nào được đăng ký để xử lý hành động cụ thể đó.
“Activity” là gì?
Activity (hoạt động) cũng là một khái niệm vô cùng căn bản trong Android, thế nên câu hỏi này cũng thuộc top các câu hỏi phỏng vấn Android được các nhà tuyển dụng ưu ái sử dụng.
Mục đích của câu hỏi này không phải làm khó bạn mà để thử thách kiến thức nền tảng và thử xem bạn có dễ dàng bị bối rối khi gặp một câu hỏi đơn giản sau những câu hỏi có độ chuyên môn cao hay không.
Activity hiểu đơn giản là một cửa sổ cho giao diện người dùng. Nó giúp hiển thị đầu ra hoặc thậm chí có thể yêu cầu đầu vào để các hộp thoại và các vai trò khác có thể được thực hiện nhằm tạo ra giao diện người dùng.
Nêu các phương pháp lưu trữ dữ liệu chính
Nền tảng Android cung cấp nhiều tùy chọn lưu trữ dữ liệu có thể được sử dụng tùy thuộc vào nhu cầu của người dùng. Các tùy chọn lưu trữ là:
- SharedPreference: Lưu trữ dữ liệu trong các tệp XML
- SQLite: Lưu trữ dữ liệu có cấu trúc trong cơ sở dữ liệu riêng tư
- Bộ nhớ trong: Lưu trữ dữ liệu trong hệ thống tệp của thiết bị, nơi các ứng dụng khác không thể đọc được dữ liệu đó
- Bộ nhớ ngoài: Lưu trữ dữ liệu trong hệ thống tệp nhưng nó có thể được truy cập vào tất cả các ứng dụng trong thiết bị
Adapter là gì và sử dụng để làm gì?
Nguồn dữ liệu bên ngoài được kết nối với adapterview nhờ sự liên kết của adapter (bộ điều hợp).
Một Adapter chịu trách nhiệm chuyển đổi từng dữ liệu nhào vào thành hiển thị, sau đó có thể được thêm vào Adapter (ListView / RecyclerView) để hiển thị.
Lập trình Android sử dụng ngôn ngữ gì?
Hiện nay có nhiều cách để tạo ra các ứng dụng Android, có thể là native app, cross-platform app hay hybrid app. Đối với Native App chỉ những ứng dụng được viết bằng công cụ và SDK mà Google cung cấp cho lập trình viên, chúng ta có thể sử dụng ngôn ngữ lập trình Kotlin, Java hoặc C/C++ cho việc viết source code và phát triển phần mềm. Ngoài ra thì trong lập trình Android, để dựng giao diện ứng dụng chúng ta sử dụng ngôn ngữ XML; thao tác với cơ sở dữ liệu bằng hệ quản trị CSDL quan hệ SQLite.
Android cung cấp công cụ phát triển chính thức dành cho lập trình viên bao gồm:
- Android SDK (Software Development Kit) bao gồm ADB (Android Debug Bridge), Fastboot và gói ứng dụng Android (APK)
- NDK (Native Development Kit): bộ công cụ giúp sử dụng code C/C++ trong Android
- ART (Android Runtime) – một sự thay thế cho Dalvik là môi trường chạy ứng dụng Android
- Android Studio: IDE môi trường phát triển tích hợp
Nêu các thành phần cơ bản xây dựng UI trong Android
Trong Android, để xây dựng giao diện người dùng (UI) chúng ta sử dụng thành phần cơ bản bao gồm View, ViewGroup và Layout.
- View là lớp cơ sở (class) của tất cả các thành phần giao diện được Android cung cấp sẵn như Button, TextView, CheckBox, RadioButton, ImageView,…
- ViewGroup là một lớp trừu tượng (abstract) kế thừa từ View, nó cũng chính là View nhưng có khả năng chứa các View khác bên trong.
- Layout chính là các ViewGroup được xây dựng sẵn với mục đích chứa các View con cùng các điều khiển để sắp xếp vị trí cho các View đó hiển thị lên màn hình. Layout phổ biến sử dụng bao gồm: FrameLayout, ConstraintLayout, LinearLayout, RelativeLayout, GridLayout, TableLayout,…
Canvas là gì?
Canvas được xem như một bề mặt 2D để chúng ta có thể vẽ bất cứ thứ gì lên đó và hiển thị cho người dùng thấy. Chẳng hạn chúng ta có thể vẽ một điểm, một đường thẳng, một hình chữ nhật, đường tròn, elip hay thậm chí cả những hình ảnh phức tạp khác. Có rất nhiều bài toán mà chúng ta sử dụng đến Canvas khi mà nội dung chúng ta muốn hiển thị lên cho người dùng không thể biểu diễn được bằng các View sẵn có.
Android cung cấp cho chúng ta những method để vẽ các đối tượng trong Canvas như sau:
- Các đối tượng hình học cơ bản: Point, Line, Oval, React,…
- Vẽ hình ảnh: Bitmap, Drawable
- Vẽ tập hợp các điểm: Path
- Vẽ Text
Hãy giải thích về kiến trúc MVP trong Android
MVP viết tắt bởi Model – View – Presenter là một kiến trúc phần mềm thường được đề xuất, khuyến nghị sử dụng trong các dự án Android. MVP được thiết kế để tạo điều kiện cho việc kiểm thử đơn vị tự động (Automated Unit Testing) và cải tiến Separation of Concerns (tách biệt thành phần) trong việc trình bày logic (presentation logic).
Với Android, MVP tách ứng dụng (cấu trúc source code) thành 3 tầng Model, View, Presenter và trong mỗi tầng đều được chia thành module nhỏ có vai trò riêng biệt. Tầng Presenter là nơi tập trung xử lý logic, cũng là cầu nối giữa Model và View. Đây là nơi theo dõi sự thay đổi của ứng dụng, các biến trạng thái và xử lý logic tương ứng. Presenter có phần giống với Controller trong mô hình MVC, dù vậy thì trong mô hình MVP, Model và View không hề liên kết với nhau mà tất cả phải qua Presenter.
Câu hỏi phỏng vấn
1. Trách nhiệm của bạn đối với dự án gần đây nhất và công nghệ bạn sử dụng trong dự án là gì. 2. Họ sẽ đưa cho bạn 1 vấn đề cần giải quyết để kiểm tra thuật toán của bạn. 3. Câu hỏi về Kotlin: thế nào là seal class, data class, val và var, init muộn, coroutines, ... 4. MVVM, Dependency Insert 5. Network Interceptor 6. RxJava 7. Cơ sở dữ liệu thực
1. Trách nhiệm của bạn đối với dự án gần đây nhất và công nghệ bạn sử dụng trong dự án là gì. 2. Họ sẽ đưa cho bạn 1 vấn đề cần giải quyết để kiểm tra thuật toán của bạn. 3. Câu hỏi về Kotlin: thế nào là seal class, data class, val và var, init muộn, coroutines, ... 4. MVVM, Dependency Insert 5. Network Interceptor 6. RxJava 7. Cơ sở dữ liệu thực
1. Trách nhiệm của bạn đối với dự án gần đây nhất và công nghệ bạn sử dụng trong dự án là gì. 2. Họ sẽ đưa cho bạn 1 vấn đề cần giải quyết để kiểm tra thuật toán của bạn.
3. Câu hỏi về Kotlin: thế nào là seal class, data class, val và var, init muộn, coroutines, ...
4. MVVM, Dependency Insert.
5. Network Interceptor.
6. RxJava.
7. Cơ sở dữ liệu thực.
"Bạn đã từng tham gia vào các dự án Android quy mô lớn nào và có thể chia sẻ về vai trò và đóng góp của mình trong việc phát triển ứng dụng?"
"Theo bạn, những thách thức phổ biến nhất mà một Senior Android Developer thường gặp phải là gì? Làm thế nào để bạn đã và đang xử lý những thách thức này?"
"Hãy mô tả về một dự án Android đặc biệt mà bạn đã thực hiện. Làm thế nào bạn đã giải quyết các vấn đề kỹ thuật phức tạp và đảm bảo hiệu suất cao của ứng dụng?"
Bạn có nghĩ là năng lực của bạn vượt so với yêu cầu của chúng tôi với vị trí Senior Android Developer?
Khi nào bạn cảm thấy hài lòng trong công việc với vị trí Senior Android Developer?
Bạn có câu hỏi nào cho chúng tôi với vị trí Senior Android Developer?
Mức lương ở công ty cũ của bạn với vị trí Senior Android Developer?
Cách làm việc của bạn với vị trí Senior Android Developer?
Tại sao chúng tôi nên tuyển bạn với vị trí Senior Android Developer?
Điểm mạnh của bạn với vị trí Senior Android Developer?
Bạn có thể làm được gì cho chúng tôi với vị trí Senior Android Developer?
Bạn làm thế nào để hoàn thành công việc đúng thời hạn với vị trí Senior Android Developer?
Các thành tích đã đạt được với vị trí Senior Android Developer?
Bạn mong muốn làm việc với người sếp như thế nào với vị trí Senior Android Developer?
Bạn nghĩ gì về việc làm tăng ca với vị trí Senior Android Developer?