Tổng hợp 35+ câu hỏi phỏng vấn Android Developer cần lưu ý
Thị trường việc làm Android chưa bao giờ hết hot. Làm sao để gây ấn tượng với nhà tuyển dụng, để “gặt” những job chất nhất? Những câu hỏi phỏng vấn Android Developer mà ITNavi chia sẻ dưới đây sẽ giúp bạn. Đừng bỏ lỡ bất cứ thông tin nào!
Câu hỏi phỏng vấn Android developer intern/fresher
Các câu trả lời cho câu hỏi phỏng vấn Android fresher dưới đây sẽ tập trung vào ý chính và trọng tâm ý hỏi của nhà tuyển dụng. Bạn có thể tìm hiểu nội dung chi tiết về chủ đề qua các từ khóa trong câu hỏi hoặc truy cập danh sách bộ câu hỏi phỏng vấn IT của ITNavi.
1. Application Class trong Android là gì?
Application class là lớp cơ sở trong ứng dụng Android, có chứa tất cả các component như activity, service. Lớp application hoặc các lớp con thuộc application class sẽ được khởi tạo đầu tiên khi process cho ứng dụng được khởi tạo.
2. Android Context là gì?
Context chính là ngữ cảnh trạng thái hiện tại của ứng dụng. Mỗi context cung cấp thông tin của system environment hoặc phục vụ xử lý thông tin trong hệ thống.
Android Context cung cấp activities, fragments và services truy cập đến các file tài nguyên, hình ảnh, theme, style trong ứng dụng và cả các file nằm ngoài ứng dụng.
Có 2 loại context phổ biến là Applicationcontext và Activity Context.
3. Hãy cho biết sự khác nhau giữa implicit intent và explicit intent
Đối với câu hỏi phỏng vấn Android này, chỉ cần trả lời trọng tâm vào ý chính dưới đây là đủ:
- Explicit intent: Là loại intent xác định cụ thể các thành phần tham gia Activity.
- Implicit Intent: Là loại intent khai báo action (hành động cần thực hiện) và data (dữ liệu cho hành động). Hệ thống sẽ kiểm tra thành phần nào đã đăng ký và xử lý hành động phù hợp.
4. Bytecode có chạy được trong Android không?
Theo cập nhật mới nhất từ website Android, Bytecode chạy được trong môi trường Android là một bytecode code đặc trưng, dành riêng cho Android, chứ không phải bytecode tiêu chuẩn sử dụng JVM (Java Virtual Machine) để thực thi.
Bytecode sử dụng được trên nền tảng Android có định dạng là Dalvik Executable (DEX).
5. Content Providers là gì?
Content Providers là tập dữ liệu được bao trong một custom API để cho phép các ứng dụng khác đọc và ghi. Content Providers hoạt động như một interface, cho phép lưu trữ, truy xuất dữ liệu từ repository và chia sẻ dữ liệu giữa các ứng dụng khác nhau.
6. Build Variant ở trong Gradle được sử dụng trong các trường hợp nào?
Build Variant (biến thể bản dựng) là kết quả của quá trình Gradle sử dụng bộ quy tắc cụ thể để kết hợp các chế độ cài đặt, code và tài nguyên được cấu hình trong các build type và phiên bản sản phẩm (product flavor).
Các trường hợp sử dụng của build variant:
- dev Debug
- dev Staging
- dev Release
- prd Debug
- prd Staging
- prd Release
7. Margin và padding khác nhau ở điểm nào?
Điểm khác biệt lớn nhất của 2 yếu tố này là:
- Padding: Kiểm soát phần khoảng trống tồn tại trong 1 hộp. Ví dụ là khoảng cách từ phần viền đến phần content.
- Margin: Kiểm soát phần khoảng trống ở bên ngoài một hộp. Ví dụ là khoảng cách giữa các viền của hai hoặc nhiều đối tượng.
8. Khi nào thì onDestroy() được gọi mà không có onPause() và onStop() trong activity?
Hệ thống sẽ gọi trực tiếp onDestroy() khi finish() được gọi trong phương thức onCreate() của activity đó.
Các câu hỏi phỏng vấn Android senior
Câu hỏi phỏng vấn Android vị trí senior sẽ đi sâu vào chuyên môn, logic và liên quan nhiều đến thuật toán cũng như ngôn ngữ lập trình hơn.
1. Hãy cho biết các thành phần cơ bản để xây dựng UI trong Android
Để xây dựng UI trong Android, chúng ta sử dụng 3 thành phần chính là View, ViewGroup, Layout.
- View: là class của tất cả các thành phần giao diện có sẵn như Button, TextView, CheckBox, RadioButton, ImageView,…
- ViewGroup: là abstract kế thừa từ View. ViewGroup cũng chính là View nhưng có khả năng chứa các View khác.
- Layout: Là các ViewGroup được dựng sẵn với mục đích chứa các View con, điều khiển, sắp xếp vị trí các View trên màn hình. Có Layout phổ biến gồm: Frame Layout, ConstraintLayout, LinearLayout, RelativeLayout, GridLayout, TableLayout,…
2. Bằng kinh nghiệm của mình, hãy giải thích tại sao chỉ nên gọi setContentView() trong onCreate() ở trong một activity?
Do tính chất của onCreate() là chỉ được gọi tới 1 lần, nên chúng ta cần khởi tạo các yếu tố cần thiết trong thời điểm này.
Nếu chúng ta gọi setContentView() trong onResume() hay onStart() thì sẽ không hiệu quả vì setContentView() hoạt động tiêu tốn rất nhiều tài nguyên, mà gọi trong onStart() hoặc onResume() thì chúng được gọi tới nhiều lần, thay vì 1 lần như onCreate().
3. Có những cách nào để cho hiển thị dạng danh sách ở Android?
Chúng ta sẽ sử dụng 2 ViewGroup phổ biến là ListView và RecyclerView. Trong đó:
- ListView: Giúp hiển thị elements theo dạng danh sách có thể cuộn theo chiều dọc.
- RecyclerView: Hỗ trợ cuộn theo cả chiều dọc (vertical) và chiều ngang (horizontal).
4. Bạn biết những gì về kiến trúc MVP trong Android?
MVP Pattern (Model – View – Presenter) là mô hình kiến trúc hướng giao diện người dùng, giúp tách phần hiển thị riêng với tầng dữ liệu.
MVP được khuyến khích sử dụng bởi:
- Nó được thiết kế để tạo thuận lợi cho quá trình unit testing (kiểm thử đơn vị).
- Phân tách các tầng một cách rành mạch, có thể thay đổi View mà không ảnh hưởng đến các phần còn lại.
- Giảm thiểu lượng code trong ứng dụng, gộp các xử lý, logic vào cùng 1 nơi, dễ dàng quản lý.
5. Cơ sở dữ liệu dùng trong Android là gì?
Mã nguồn mở cơ sở dữ liệu có quan hệ - SQLite - là cơ sở dữ liệu thường dùng trong Android. SQLite có tính giao dịch, khép kín và serverless, vì vậy có thể tạo độc lập cơ sở dữ liệu quan hệ cho mỗi ứng dụng.
6. Bạn hãy tóm tắt quá trình tạo một custom View
Theo tư duy cơ bản, quá trình tạo custom view có thể được extend từ một View (ví dụ có thể là Layout như LinearLayout, RelativeLayout,... hoặc component như Button, Textview,...). Sau đó thay đổi tùy theo yêu cầu (ví dụ như thêm action hoặc thay đổi hiển thị).
Các bước chi tiết nên thực hiện bằng code để trực quan và dễ hiểu nhất.
7. Có những lý do nào khiến các ứng dụng Android bị lag?
Với dạng câu hỏi phỏng vấn Android này, bạn có thể liệt kê các lý do khiến các ứng dụng bị chậm và có thể thêm ví dụ thực tế, trải nghiệm của bạn để tăng tính thuyết phục cho nhà tuyển dụng.
Một số lý do khiến ứng dụng Android bị lag bạn có thể tham khảo dưới đây:
- Hành động quá nhiều trên main thread
- Asset files lớn
- Sử dụng phiên bản SDK cũ
- Sử dụng thư viện kém chất lượng
- Tốc độ của mạng
- Nhiều cuộc trò chuyện
- Code không hiệu quả
8. AIDL hỗ trợ các loại dữ liệu nào?
Các data type mà AIDL hỗ trợ đó là:
- String
- CharSequence
- List
- Map
- Các kiểu dữ liệu native Java như int,long, char and Boolean
9. Có thể sử dụng hoặc tạo thêm một fragment mà không cần sử dụng interface không?
Có, ví dụ như khi muốn tạo một hành vi nền cho một hoạt động cụ thể, ta có thể dùng phương thức add(Fragment,string) để thêm một fragment từ hoạt động.
10. Ngôn ngữ nào được Android hỗ trợ để phát triển ứng dụng?
Có rất nhiều ngôn ngữ lập trình Android như Kotlin, Java, C++ , Python, C#, Draft, Lua, bộ HTML5 + CSS + Javascript. Hiện tại Kotlin là ngôn ngữ chính thức để phát triển ứng dụng Android, còn Java là ngôn ngữ lập trình Android được sử dụng nhiều nhất.
11. AndroidManifest.xml là gì?
AndroidManifest.xml là tập tin quan trọng trong mọi ứng dụng, được khai báo trong root directory và chứa thông tin về ứng dụng mà Android system cần biết trước khi thực thi code.
12. Khi bạn xử lý nhiều tài nguyên, thì sẽ ưu tiên các tài nguyên nào?
Câu hỏi phỏng vấn Android này có thể chưa đầy đủ về ngữ cảnh, tình huống và các thông tin liên quan. Bạn có thể hỏi lại về các thông tin hoặc yêu cầu bên ngoài, hoặc có thể giả sử một trường hợp bạn đã từng làm, từng xử lý.
Tham khảo cách trả lời cho câu hỏi này như sau: Giả sử các tài nguyên đều khớp với cấu hình của một thiết bị thì ‘locale’ qualifier luôn được ưu tiên cao nhất so với các tài nguyên cần xử lý khác.
Câu hỏi tình huống phỏng vấn lập trình viên Android
Với bộ câu hỏi phỏng vấn Android developer về tình huống thực tế khi làm việc, thì người hỏi có thể là HR hoặc trực tiếp là người phỏng vấn bạn về các câu hỏi chuyên môn. Để vượt qua những câu hỏi này, bạn nên chú ý các tip dưới đây:
- Đánh giá và xử lý các tình huống công sở theo tư duy STAR (S - Situation, T - Task, A - Action, R - Result) để có hướng giải quyết tốt nhất và thuyết phục được nhà tuyển dụng.
- Với các câu hỏi tình huống về chuyên môn, bạn có thể đưa ra các con số hoặc kinh nghiệm của bản thân. Hoặc trong trường hợp chưa thể giải quyết được câu hỏi từ người phỏng vấn, bạn có thể hỏi lại họ để có được gợi ý.
- Hãy nhớ luôn trong tâm thế học hỏi liên tục, cầu thị với mọi thông tin, từ khóa từ nhà tuyển dụng đưa ra.
Một số câu hỏi tình huống ITNavi sẽ tổng hợp phía dưới đây:
- Bạn có khoảng thời gian nào cảm thấy thực sự khó khăn trong công việc không?
- Bạn sẽ xử lý thế nào khi design app làm việc không ăn ý với bạn?
- Giả sử bạn là dev leader, nhân sự của bạn có mâu thuẫn với nhau, bạn sẽ giải quyết thế nào?
- Thời gian tới có rất nhiều dự án phát triển app cần thực hiện gần như cùng lúc, bạn sẽ sắp xếp công việc thế nào?
- …
Mở rộng câu hỏi khi phỏng vấn Android
Ngoài các câu hỏi phỏng vấn Android hay và phổ biến phía trên, bạn có thể tìm hiểu thêm về một số chủ đề chi tiết dưới đây để củng cố thêm kiến thức của mình cho lĩnh vực này.
Các câu hỏi về hệ điều hành Android
Một số câu hỏi về thư viện Android:
- Giải thích OkHttp Interceptor
- OkHttp - Bộ nhớ đệm HTTP
- Hãy nói ý hiểu của bạn về RxJava.
- Các lỗi trong RxJava bạn thường xử lý như thế nào?
- FlatMap Vs Map Operator khác nhau thế nào?
- Khi nào nên sử dụng Create toán tử và fromCallable toán tử của RxJava?
- Khi nào nên sử dụng defer toán tử RxJava?
- Cách dùng của toán tử Timer, Delay, and Interval?
- Làm cách nào để thực hiện song song hai cuộc gọi mạng bằng RxJava?
- Hãy cho biết sự khác nhau giữa Concat và Merge
- Giải thích Subject trong RxJava?
- Các loại Observable trong RxJava mà bạn biết là gì?
Một số câu hỏi về ngôn ngữ lập trình Java và Kotlin:
- Autoboxing và Unboxing là gì?
- Sự khác biệt giữa Integer và int là gì?
- Typecast trong Java
- Bạn có thể liệt kê 8 primitive types trong java không?
- Một số ưu điểm của Kotlin là gì?
- Sự khác nhau giữa == and === trong Kotlin
- Giải thích các use-case của let, run, with, also, apply trong Kotlin
- …
Các câu hỏi khác khi phỏng vấn Android
Câu hỏi phỏng vấn Android về công cụ và công nghệ:
- ADB là gì?
- DDMS là gì?
- StrictMode là gì?
- Lint được dùng cho các trường hợp nào?
- Git là gì?
- Các tool hữu ích cho việc phát triển Android là gì?
- Căn cứ hỏa lực. - Học từ đây
- Làm cách nào để xác định được thời gian thực hiện method trong Android?
- Cần quan tâm đến các yếu tố gì khi sử dụng Proguard?
- …
Kinh nghiệm “tóm gọn” công việc lập trình Android lý tưởng
Để gặt hái những công việc lập trình Android, bạn đừng bỏ qua kinh nghiệm ứng tuyển và chuẩn bị cho buổi phỏng vấn dưới đây:
- Tối ưu UI của CV.
- Thông tin trên CV thể hiện tính chuyên nghiệp, gãy gọn, trọng tâm.
- Hãy chắc chắn rằng bạn luôn trung thực trong buổi phỏng vấn.
- Thể hiện thái độ cầu thị, cầu tiến.
- Khéo léo biến cuộc phỏng vấn thành buổi trao đổi kiến thức.
- Trong trường hợp được yêu cầu làm các bài test, hãy xác nhận lại yêu cầu với người phỏng vấn.
- Đầu tư về phần code sạch, gọn.
- Có thể giải thích cách bạn giải quyết các bài toán theo tư duy, quan điểm cá nhân.
- …
Thị trường hiện tại có sự bão hòa lớn trong các công việc lập trình, đặc biệt là nhân lực ở level junior, fresher. Tuy vậy, các công việc phát triển Android vẫn chứng minh sức hút của mình với sự đa dạng của các vị trí tuyển dụng. Bạn đang tìm kiếm việc làm lập trình Android phúc lợi tốt? Hãy truy cập kho việc làm của ITNavi để nắm bắt các cơ hội có hạn.
Cảm ơn các bạn đã theo dõi hết các câu hỏi phỏng vấn Android ITNavi đã chia sẻ phía trên. Bộ câu hỏi sẽ thường xuyên được cập nhật để các bạn có những kiến thức chất lượng nhất. Chúc các bạn có những cơ hội việc làm và buổi phỏng vấn tốt nhất!
ITNavi - Nền tảng kết nối việc làm IT
Nguồn: Tổng hợp 35+ câu hỏi phỏng vấn Android Developer cần lưu ý