Top 30+ câu hỏi phỏng vấn Android developer thường gặp và câu trả lời

Phụ lục
phong-van-android

Khi bạn đi phỏng vấn vị trí lập trình Android thì bạn nên chuẩn bị một số câu hỏi phỏng vấn Android để có tâm lý vững vàng cho buổi phỏng vấn. Trước khi bước vào buổi phỏng vấn hãy đọc lại một lần. Dưới đây là một số câu hỏi phỏng vấn android sẽ xuất hiện trong buổi phỏng vấn lập trình Android. Cùng nắm rõ những câu hỏi sẽ xuất hiện trong buổi phỏng vấn nhé!

Android là gì?

Android là dịch vụ dùng để điều hành trên thiết bị di động. Như đề cập lúc đầu, nó được tạo ra và phát triển bởi đội ngũ nhân viên của Google. Code nó được thiết kế dựa trên nhân Linux nguồn mở và Android được thiết kế chủ yếu để sử dụng trên các thiết bị màn hình cảm ứng, đây cũng là một đối thủ lớn của IOS. 

Application là gì?

Lớp Application trong Android là lớp cơ sở có trong ứng dụng Android nó chứa tất cả các component khác như activity và service. 

Context là gì?

Context là ngữ cảnh của trạng thái hiện tại của ứng dụng hoặc là các đối tượng trong môi trường hệ thống. Context thường đi kèm với các dịch vụ như cấp quyền truy cập vào cơ sở dữ liệu và tùy chọn, giải quyết tài nguyên và hơn thế nữa. 

Tại sao bytecode lại không thể chạy được trong Android?

Do Android dựa trên và sử dụng một loại bytecode đặc trưng và khác biệt. 

Ưu điểm của Android là gì?

Android có 4 ưu điểm chính đó là:

  • Android có mã nguồn mở, do đó nó miễn phí
  • Khác với IOS là hệ điều hành chỉ thích hợp với các thiết bị của Apple, Android có sự độc lập riêng với nền tảng, do đó nó hỗ trợ cả Windows, Linux, Mac.
  • Android còn hỗ trợ một số công nghệ khác nhau, như Bluetooth, giọng nói, …
  • Android sử dụng DVM, đó là một máy ảo có mức độ tối ưu hóa cao. 

“Implicit” và “explicit” có sự khác biệt gì?

Với Implicit giao diện Android sẽ kiểm tra hệ thống để biết các cài đặt có thể giúp bạn thực hiện nhiệm vụ của mình hay không. Còn riêng với explicit là bạn chỉ định các thành phần mà hệ thống của bạn sẽ sử dụng khi thực hiện nhiệm vụ. Câu hỏi dạng này thường sẽ xuất hiện trong những bài test về câu hỏi phỏng vấn android developer. 

Nhiệm vụ “ContentProvider” là gì?

ContentProvider được sử dụng để truy cập vào các dữ liệu có tổ chức và có cấu trúc cụ thể. Nó được xem như một loại phương tiện để kết nối các chuỗi mã này với các chuỗi mã khác. 

GUI lưu trữ ở đâu?

GUI được lưu trữ trong Android SDK. 

Liệt kê các lớp cảm biến Java

Có 4 lớp cảm biến Java được Android sử dụng:

  • Sensor
  • SensorEvent
  • SensorEventListener
  • SensorManager

Phương pháp lưu trữ dữ liệu chính là gì

Phương pháp lưu trữ dữ liệu chính là Shared Preferences( tùy chọn chia sẻ) và Internal Storage( bộ nhớ trong). Tùy chọn chia sẻ được sử dụng chủ yếu là lưu trữ các cặp khóa - giá trị, đôi khi là một hạn chế. Bộ nhớ trong thường lưu trữ tất cả các dữ liệu và thông tin riêng tư của nhà lập trình Android trong bộ nhớ. 

Garbage collector là gì?

Các đối tượng đa số được phân bổ trên vùng heap do JVM quản lý. Khi đó đối tượng tham chiếu đang được sử dụng và JVM sẽ cho rằng nó còn sống. Và khi một đối tượng không còn được tham chiếu và không thể truy cập được bằng code trong ứng dụng thì trình thu gom rác sẽ loại bỏ nó ngay và lấy lại bộ nhớ chưa được sử dụng. 

Finalize() được hiểu như thế nào?

Finalize() là một phương thức được sử dụng để thực hiện quá trình “clean up” trước khi garbage collector thu thập lại.

Finally là gì?

Finally là một đoạn code được sử dụng để đặt những dòng code quan trọng mà bạn mong muốn nó được thực thi dù ngoại lệ có được xử lý hay là không?

BuildType trong Gradle là gì? Mục đích của nó?

Build định nghĩa thuộc tính mà Gradle sử dụng khi xây dựng và đóng gói một ứng dụng Android. 

  • Build type xác định cách một module được xây dựng trong Gradle
  • Product flavor xác định được những gì sẽ được tạo ra
  • Gradle tạo ra một build variant cho mọi tổ hợp có thể có được từ product flavor và build type trong dự án

Quá trình build một ứng dụng trong Android như thế nào. 

Phân biệt Service, Intent Service, AsyncTask và Thread

  • Service là thành phần được sử dụng để thực hiện các tác vụ ở background. Nó không có giao diện người dùng và nó có thể chạy được ở trong background vô thời hạn ngay cả khi ứng dụng bị hủy. 
  • Async Task cho phép bạn thực hiện các công việc bất đồng ở background thread và publish kết quả trên UI thread mà không yêu cầu bạn phải xử lý
  • IntentService là một dạng Service để xử lý lần lượt các yêu cầu bất đồng bộ ở background thread. Client sẽ gửi yêu cầu thông qua việc gọi tới startService, không yêu cầu bạn phải động tới việc xử lý thread/ handler
  • Thread là một luồng thực thi tuần tự trong một trương trình. 

Job Scheduling trong Android là gì?

Job Scheduling API cho phép chúng ta lên lịch công việc trong khi hệ thống sẽ thực hiện công việc tối ưu hóa dựa trên bộ nhớ, nguồn và trạng thái kết nối của Android. Nó hỗ trợ lập lịch biểu các công việc, hệ thống Android có thể kết hợp các công việc này để giảm lượng tiêu thụ pin.

Phương thức của onTrimMemory() là gì?

onTrimMemory() là thời điểm tốt để xử lý bộ nhớ không cần thiết từ một tiến trình của nó. 

Serializable và Parcelable có sự khác biệt gì?

Serializable nghĩa là một standard Java interface. Parcelable là một interface cụ thể có trong Android. Nhưng Parcelable có hiệu quả hơn nhiều so với Serializable.

Sự khác biệt của add / replace fragment trong backstack?

  • Replace loại bỏ fragment hiện đang có và thêm một fragment mới. Việc này có nghĩa là khi bạn quay lại, fragment được thay thế sẽ khởi tạo lại với onCreateView của nó được gọi. 
  • add giữ lại các fragment hiện có và thêm một fragment mới đề lên chúng.

Tại sao cần truyền các tham số vào Fragment thông qua Bundle?

Là do khi hệ thống khôi phục một fragment, nó sẽ tự không phục bundle của bạn. Dựa theo cách này, đảm bảo được rằng trạng thái của fragment sẽ được khôi phục một cách chính xác về đúng trại thái fragment. 

Retained fragment là gì?

Fragment sẽ bị hủy và tạo lại cùng với parent Activity của chúng khi thay đổi cấu hình xảy ra. Lời gọi tới phương thức setRetaininstance( true) cho phép chúng ta bỏ qua quá trình “hủy - và - tái tạo”, báo hiệu cho hệ thống bạn muốn giữ lại instance hiện tại của fragment khi activity được tạo đó là Retained fagment. 

FragmentPagerAdapter và FragmentStatePagerAdapter có sự khác biệt gì?

  • FragmentPagerAdapter: fragment của mỗi trang được người dùng truy cập sẽ được lưu trữ trong bộ nhớ và view của nó sẽ bị hủy. Khi trang được hiển thị lại, chỉ view được tạo còn instance của fragment sẽ không được tạo lại. 
  • FragmentStatePagerAdapter: instance của fragment sẽ bị phá hủy khi không còn hiển thị cho người dùng nữa, ngoại trừ saved state của nó. 

Margin & padding có sự khác biệt gì?

Padding là khoảng không gian được thêm vào bên trong của container. Còn margin sẽ được thêm vào khoảng không gian bên ngoài container.

View Group là gì? Nó khác View như thế nào?

  • View là các khối giao diện cơ bản của User Interface (UI) trong Android. View là hộp hình chữ nhật đơn giản, có thể phản hồi hành động của người dùng. 
  • View Group là container vô hình. Có thể chứa View và ViewGroup.  

Sự khác nhau giữa.png thông thường và nine-patch là gì?

Nine - patch cho vẽ một bitmap trong chín bộ phận. Bốn góc không scale được, phần giữa của hình ảnh sẽ được scale theo cả hai trục, bốn cạnh được scale trên một trục. 

Khi nào chúng ta nên sử dụng FrameLayout?

FrameLayout thiết kế để chứa một item duy nhất, khiến cho chúng trở thành lựa chọn hiệu quả bạn cần hiển thị một View duy nhất. Nếu thêm nhiều View vào FrameLayout thì chúng sẽ chồng lên nhau, do đó FrameLayout rất hữu ích trong trường hợp bạn cần View. 

Adapter là gì?

Adapter chịu trách nhiệm chuyển đổi từng data entry và View và có thể thêm vào AdapterView (ListView/ RecyclerView) cho hiển thị. 

Tóm tắt lại quá trình tạo một custom View.

  • Tạo lớp là Subclass của View
  • Tạo file res/ value/ attrs.xml và định nghĩa những thuộc tính bạn muốn sử dụng với View đó. 
  • Tạo một constructor và khởi tạo các đối tượng của Paint, lấy các thuộc tính có trên. 
  • Ghi đè onSizeChanged() hoặc onMeasure
  • Vẽ View bằng cách ghi đè onDraw()

Mô tả ngắn gọn một số cách để có thể tối ưu hóa View usage.

  • Cài đặt ứng dụng của bạn trên thiết bị Android sau đó bật tùy chọn Debug GPU Overview. 
  • Kiểm tra hệ thống phân cấp view bằng công cụ Hierarchy Viewer bằng Android Studio.
  • Ước lượng thời gian mỗi View cần hoàn thành quá trình measure, layout và giai đoạn draw. 



Bitmap pooling trong Android?

Bitmap pooling là một kỹ thuật đơn giản nhằm mục đích sử dụng lại bitmap thay vì tạo một đối tượng bitmap mới cho mỗi lần cần.

Sự khác biệt giữa commit() và apply() trong SharedPreferences là gì?

  • Commit() ghi dữ liệu một cách đồng bộ và trả về giá trị boolean thành công hay thất bại tùy thuộc vào kết quả.
  • apply() hoạt động một cách đồng bộ và nó sẽ không trả về bất kỳ giá trị của một boolean nào. 
  • Cạnh đó, nếu có apply() chưa được hoàn thành và bạn thực hiện một commit() khác thì commit() sẽ bị chặn cho đến lúc apply() được hoàn tất. Hiệu năng của apply sẽ nhanh hơn commit vì xử lý được việc lưu trữ dữ liệu một cách bất đồng bộ.

Làm giảm dung lượng file apk trong Android như thế nào?

Đầu tiên chúng ta bật Proguard trong project của bạn. Tiếp theo bật shrinkResources. Rồi loại bỏ tất cả các tài nguyên cục bộ không được sử dụng, bằng biện pháp thêm tài nguyên cần thiết trong resConfigs. Và cuối cùng chuyển đổi tất cả các hình ảnh sang dạng webp hoặc vector drawable.

S.O.L.I.D principles trong phát triển phần mềm.

S.O.L.I.D principles trong phát triển phần mềm bao gồm:

  • The Single Responsibility Principle (SRP)
  • The Open - Closed Principle (OCP)
  • The Liskov Substitution Principle (LSP)
  • The Interface Segregation Principle (ISP)
  • The Dependency Inversion Principle (DIP)

Devwork đã cùng bạn tìm hiểu top 30+ câu hỏi phỏng vấn Android developer thường gặp và câu trả lời. Chúng tôi hy vọng những thông tin này sẽ hữu ích với bạn. Và nếu bạn đang quan tâm đến lĩnh vực tuyển dụng thì đừng bỏ qua Devwork - Nền tảng tuyển dụng IT kết nối HR Freelancer.

Devwork

Devwork là Nền tảng TUYỂN DỤNG IT CẤP TỐC với mô hình kết nối Nhà tuyển dụng với mạng lưới hơn 30.000 headhunter tuyển dụng ở khắp mọi nơi.Với hơn 1800 doanh nghiệp IT tin dùng Devwork để :

  • Tối ưu chi phí
  • Tiết kiệm thời gian
  • Tăng tốc tuyển dụng tối đa
  • Đăng ký ngay Devwork trong hôm nay để tuyển dụng những tài năng ưu tú nhất.

    Tag Cloud:

    Tác giả: Lê Thị Ngọc Anh

    Link chia sẻ

    Bình luận

    Bài viết liên quan

    Danh sách bài viết liên quan có thể bạn sẽ thích Xem thêm
    vai-tro-cua-cto-la-gi

    CTO là gì? Vai trò, kỹ năng của Giám đốc Công nghệ

    16:32 22/05/2025

    Vai trò của CTO ngày càng trở nên quan trọng đối với sự phát triển của doanh nghiệp côn nghệ. Bài viết từ Devwork sẽ giúp bạn hiểu rõ CTO là gì, trách nhiệm, kỹ năng cần có và lộ trình để trở thành một thủ lĩnh công nghệ thành công trong thời đại số hiện nay....

    Tấn công XSS là gì? Cách nhận biết, phân loại & phòng tránh hiệu quả

    16:06 22/05/2025

    XSS là gì và tại sao nó lại nguy hiểm đến vậy? Devwork mang đến bài viết chuyên sâu giúp bạn hiểu rõ về lỗ hổng tấn công phổ biến này, cách nhận diện và phương pháp phòng tránh hiệu quả để bảo vệ website của bạn.

    tan-cong-xss-la-gi

    Trigger là gì? 6 điều cần biết về cơ chế kích hoạt tự động

    15:24 22/05/2025

    Trigger là gì và tại sao nó lại quan trọng trong việc phát triển phần mềm hiện đại? Cùng Devwork tìm hiểu về cơ chế mạnh mẽ này - công cụ đắc lực giúp duy trì tính toàn vẹn dữ liệu và tự động hóa quy trình trong các hệ thống thông tin.

    trigger-la-gi

    Prop là gì trong ReactJS? Cách sử dụng prop để truyền dữ liệu

    16:11 21/05/2025

    Prop là gì trong ReactJS luôn là câu hỏi cơ bản nhưng quan trọng đối với mọi lập trình viên khi bắt đầu với thư viện này. Việc nắm vững các khái niệm nền tảng như props sẽ giúp bạn phát triển ứng dụng React một cách hiệu quả và chuyên nghiệp. Hãy cùng tìm hiểu chi tiết về cơ chế truyền dữ liệu quan trọng này trong bài viết sau.

    prop-la-gi-trong-reactjs
    authentication-la-gi

    Authentication là gì? 5 phương pháp bảo mật hiệu quả nhất hiện nay

    16:01 21/05/2025

    Authentication là gì và tại sao nó lại đóng vai trò quan trọng trong thế giới số hóa ngày nay? Cùng Devwork tìm hiểu chi tiết về các phương pháp xác thực và cách triển khai hiệu quả để bảo vệ dữ liệu của bạn.

    elasticsearch-la-gi

    Elasticsearch là gì? Khái niệm, ứng dụng và cách sử dụng cơ bản

    15:52 21/05/2025

    Elasticsearch là gì? Một công nghệ đang thay đổi cách doanh nghiệp quản lý và khai thác dữ liệu. Bài viết của Devwork sẽ giúp bạn hiểu rõ về công cụ mạnh mẽ này, từ cơ chế hoạt động đến các ứng dụng thực tế và hướng dẫn triển khai. Khám phá ngay để nâng cao hiệu suất hệ thống của bạn!