Manifest Android Phỏng Vấn (Phiên Bản Tiếng Việt)
Manifest Android Phỏng Vấn (Phiên Bản Tiếng Việt)
Hướng dẫn phỏng vấn kỹ thuật Android với các câu hỏi học tập từ kinh nghiệm của GDE
Về Cuốn Sách
Manifest Android Interview là một hướng dẫn toàn diện được thiết kế để nâng cao kiến thức phát triển Android của bạn thông qua 108 câu hỏi phỏng vấn với câu trả lời chi tiết, 162 câu hỏi thực hành bổ sung, và hơn 50 phần "Pro Tips for Mastery". Các câu hỏi phỏng vấn chủ yếu tập trung vào phát triển Android—bao gồm Framework, UI, Thư viện Jetpack, và Business Logic—cũng như Jetpack Compose, bao gồm Cơ bản, Runtime, và UI.
Mỗi câu hỏi đều cung cấp những giải thích chuyên sâu, hướng dẫn bạn theo một lộ trình học tập có cấu trúc về Android và Jetpack Compose, đồng thời củng cố hiểu biết của bạn về các khái niệm chính. Ở cuối mỗi câu hỏi, bạn sẽ tìm thấy các câu hỏi thực hành được thiết kế để mô phỏng các tình huống phỏng vấn thực tế, giúp bạn hoàn thiện kỹ năng giải quyết vấn đề và chuẩn bị hiệu quả cho các cuộc thảo luận kỹ thuật.
Cuốn sách này bao gồm các tài nguyên liên quan và tài liệu tham khảo bổ sung cho những ai muốn tìm hiểu sâu hơn ngoài nội dung sách. Chúng tôi đã cố gắng cung cấp nhiều chú thích nhất có thể cho các thuật ngữ chính có thể còn xa lạ hoặc phức tạp, đảm bảo rằng người mới bắt đầu có thể dễ dàng nắm bắt các khái niệm khó trong khi vẫn đào sâu được hiểu biết của họ.
Phần "Pro Tips for Mastery" đi sâu vào các chủ đề nâng cao, khám phá cấu trúc API nội bộ và cung cấp những hiểu biết chuyên sâu để giữ cho các lập trình viên senior luôn quan tâm. Đối với các lập trình viên trung cấp, phần này là một nguồn tài nguyên quý giá để củng cố chuyên môn về Android và phát triển cách tiếp cận phân tích hơn đối với các thách thức kỹ thuật.
Tôi hy vọng cuốn sách này sẽ giúp bạn có được những góc nhìn mới, nâng cao kỹ năng giải quyết vấn đề, và xây dựng hiểu biết toàn diện về phát triển & hệ sinh thái Android. Cho dù bạn đang chuẩn bị cho buổi phỏng vấn quan trọng tiếp theo hay đơn giản là muốn thúc đẩy bản thân để thành thạo phát triển Android, tôi khuyến khích bạn suy nghĩ vượt ra ngoài việc triển khai—hãy hiểu rõ lý do tại sao, thử nghiệm với các cách tiếp cận khác nhau, và tiếp tục học hỏi với sự tò mò và đam mê.
Để biết thêm những thông tin thú vị, đối tượng độc giả, nội dung bao gồm và không bao gồm, hãy xem bài viết blog Manifest Android Interview: The Ultimate Guide to Cracking Android Technical Interviews.
Mục lục
- Lời mở đầu
- Lời chứng thực
- Manuel Vivo (Kỹ sư Android chính thức tại Bumble, cựu DevRel Android tại Google)
- Matt McKenna (Kỹ sư Android cao cấp tại Block, Android GDE)
- Alejandra Stamato (Kỹ sư trưởng Android tại HubSpot, cựu DevRel Android tại Google)
- Simona Milanovic (Kỹ sư Quan hệ Nhà phát triển Android cao cấp)
- Giới Thiệu Về Cuốn Sách
- Dành Cho Người Được Phỏng Vấn
- Dành Cho Người Phỏng Vấn
- Nhà tài trợ
- Stream
- Báo Cáo Vấn Đề & Thảo Luận
- 0. Câu Hỏi Phỏng Vấn Android
- Danh mục 0: Khung làm việc Android
- Q) 0. Android là gì?
- Q) 1. Intent là gì?
- Q) 2. Mục đích của PendingIntent là gì?
- Q) 3. Sự khác biệt giữa Serializable và Parcelable là gì
- Q) 4. Context là gì và có những loại Context nào?
- Q) 5. Application class là gì?
- Q) 6. Mục đích của tệp AndroidManifest là gì?
- Câu hỏi) 7. Mô tả vòng đời Activity
- Q) 8. Mô tả vòng đời của Fragment
- Q) 9. Service là gì?
- Q) 10. BroadcastReceiver là gì?
- Q) 11. Mục đích của ContentProvider là gì và nó hỗ trợ chia sẻ dữ liệu an toàn giữa các ứng dụng như thế nào?
- Q) 12. Làm thế nào để xử lý thay đổi cấu hình?
- Q) 13. Android xử lý quản lý bộ nhớ như thế nào, và làm thế nào để tránh rò rỉ bộ nhớ?
- Q) 14. Đâu là những nguyên nhân chính gây ra lỗi ANR, và làm thế nào để ngăn chặn chúng xảy ra?
- Q) 15. Làm thế nào để xử lý deep link?
- Q) 16. Task và back stack là gì?
- Q) 17. Mục đích của Bundle là gì?
- Q) 18. Làm thế nào để truyền dữ liệu giữa các Activities hoặc Fragments
- Q) 19. Điều gì xảy ra với Activity trong quá trình thay đổi cấu hình?
- Q) 20. ActivityManager là gì?
- Q) 21. Những ưu điểm của việc sử dụng SparseArray là gì
- Q) 22. Làm thế nào để xử lý quyền trong thời gian chạy?
- Q) 23. Vai trò của Looper, Handler và HandlerThread là gì?
- Q) 24. Làm thế nào để theo dõi các ngoại lệ?
- Câu hỏi) 25. Build variants và flavors là gì?
- Q) 26. Làm thế nào để đảm bảo khả năng tiếp cận?
- Q) 27. Hệ thống tệp tin Android là gì?
- Q) 28. Android Runtime (ART), Dalvik và Dex Compiler là gì?
- Q) 29. Sự khác biệt giữa tệp APK và tệp AAB là gì?
- Q) 30. Tối ưu hóa R8 là gì?
- Q) 31. Làm thế nào để giảm kích thước ứng dụng?
- Q) 32. Tiến trình trong ứng dụng Android là gì và hệ điều hành Android quản lý nó như thế nào?
- Danh mục 1: Giao diện người dùng Android - Views
- C) 33. Mô tả vòng đời View
- Q) 34. Sự khác biệt giữa View và ViewGroup là gì?
- Q) 35. Bạn đã từng sử dụng ViewStub chưa và làm thế nào để tối ưu hóa hiệu suất UI bằng cách sử dụng nó?
- C) 36. Làm thế nào để triển khai view tùy chỉnh?
- Q) 37. Canvas là gì và làm thế nào để sử dụng nó?
- Q) 38. Sự vô hiệu hóa (invalidation) trong hệ thống View là gì?
- Q) 39. ConstraintLayout là gì?
- Q) 40. Khi nào nên sử dụng SurfaceView thay vì TextureView?
- Q) 41. RecyclerView hoạt động như thế nào bên trong?
- Q) 42. Sự khác biệt giữa Dp và Sp là gì?
- Câu hỏi) 43. Nine-patch image được sử dụng để làm gì?
- Q) 44. Drawable là gì và nó được sử dụng như thế nào trong phát triển giao diện người dùng?
- Câu hỏi) 45. Bitmap trong Android là gì và làm thế nào để xử lý hiệu quả các Bitmap lớn?
- Q) 46. Làm thế nào để thực hiện hoạt ảnh?
- Q) 47. Window là gì?
- Q) 48. Làm thế nào để hiển thị một trang web?
- Phần 2: Thư Viện Jetpack
- Q) 49. Thư viện AppCompat là gì?
- Q) 50. Material Design Components (MDC) là gì?
- Q) 51. Những lợi ích của việc sử dụng ViewBinding là gì?
- Q) 52. DataBinding hoạt động như thế nào?
- Q) 53. LiveData là gì?
- C) 54. ViewModel Jetpack là gì?
- Q) 55. Thư viện Jetpack Navigation là gì?
- Q) 56: Dagger 2 và Hilt là gì?
- Q) 57. Thư viện Jetpack Paging là gì?
- Q) 58. Baseline Profile là gì?
- Phần 3: Logic Nghiệp vụ
- C) 59. Làm thế nào để quản lý các tác vụ nền chạy dài hạn?
- Q) 60. Làm thế nào để tuần tự hóa định dạng Json thành đối tượng
- Q) 61. Làm thế nào để xử lý các yêu cầu mạng để lấy dữ liệu, và bạn sử dụng những thư viện hoặc kỹ thuật nào để đạt hiệu quả và độ tin cậy?
- C) 62. Tại sao hệ thống phân trang là cần thiết cho việc tải các tập dữ liệu lớn, và làm thế nào để triển khai nó với RecyclerView?
- Q) 63. Làm thế nào để tải và hiển thị hình ảnh từ mạng?
- Q) 64. Làm thế nào để lưu trữ và duy trì dữ liệu cục bộ?
- Q) 65. Làm thế nào để xử lý các tính năng ưu tiên ngoại tuyến?
- Q) 66. Bạn nên khởi chạy tác vụ tải dữ liệu ban đầu ở đâu? LaunchedEffect hay ViewModel.init()
- Danh mục 0: Khung làm việc Android
- 1. Câu Hỏi Phỏng Vấn về Jetpack Compose
- Phần 0: Nền Tảng Compose
- Q) 0. Cấu trúc của Jetpack Compose là gì?
- Q) 1. Các giai đoạn của Compose là gì?
- Q) 2. Tại sao Jetpack Compose là một framework UI khai báo?
- Q) 3. Tái cấu thành là gì, và khi nào nó xảy ra? Đồng thời, nó liên quan như thế nào đến hiệu năng ứng dụng?
- Q) 4. Hàm composable hoạt động như thế nào bên trong?
- Q) 5. Tính ổn định trong Jetpack Compose là gì và nó liên quan như thế nào đến hiệu suất?
- Q) 6. Bạn đã từng có kinh nghiệm tối ưu hóa hiệu suất Compose bằng cách cải thiện tính ổn định chưa?
- Q) 7. Composition là gì và làm thế nào để tạo nó?
- Q) 8. Có những chiến lược nào để chuyển đổi dự án dựa trên XML sang Jetpack Compose?
- Q) 9. Tại sao bạn nên luôn kiểm tra hiệu năng Compose ở chế độ release?
- Q) 10. Những thành ngữ Kotlin nào thường được sử dụng trong Jetpack Compose?
- Phần 1: Compose Runtime
- Q) 11. State là gì và những API nào được sử dụng để quản lý nó?
- Q) 12. Những lợi ích nào bạn có thể có được từ việc nâng trạng thái?
- Q) 13. Sự khác biệt giữa remember và rememberSaveable là gì?
- Q) 14. Làm thế nào để tạo phạm vi coroutine một cách an toàn trong các hàm composable?
- C) 15. Làm thế nào để xử lý các tác dụng phụ bên trong các hàm composable?
- Q) 16. Mục đích của rememberUpdatedState là gì và nó hoạt động như thế nào?
- Q) 17. Mục đích của produceState là gì và nó hoạt động như thế nào?
- Q) 18. snapshotFlow là gì và nó hoạt động như thế nào?
- Câu hỏi) 19. Mục đích của derivedStateOf là gì, và nó giúp tối ưu hóa tái cấu trúc như thế nào?
- Câu hỏi) 20. Vòng đời của các hàm composable hoặc Composition là gì?
- Q) 21. SaveableStateHolder là gì?
- Q) 22. Mục đích của hệ thống snapshot là gì?
- Q) 23. mutableStateListOf và mutableStateMapOf là gì
- Q) 24. Làm thế nào để thu thập Flow của Kotlin trong các hàm composable một cách an toàn mà không gây rò rỉ bộ nhớ?
- Q) 25. Vai trò của CompositionLocals là gì?
- Phân Loại 2: Compose UI
- C) 26. Modifier là gì?
- Q) 27. Layout là gì?
- Q) 28. Box là gì?
- Q) 29. Sự khác biệt giữa Arrangement và Alignment là gì?
- Q) 30. Painter là gì?
- Q) 31. Làm thế nào để tải hình ảnh từ mạng?
- Q) 32. Làm thế nào để hiển thị hiệu quả hàng trăm mục dưới dạng danh sách mà không bị giật lag giao diện?
- Q) 33. Làm thế nào để triển khai phân trang với lazy lists?
- Q) 34. Canvas là gì?
- Q) 35. Bạn đã từng sử dụng Modifier graphicsLayer chưa?
- Q) 36. Làm thế nào để thực hiện hoạt ảnh trực quan trong Jetpack Compose?
- Q) 37. Làm thế nào để điều hướng giữa các màn hình?
- Q) 38. Preview hoạt động như thế nào và bạn xử lý chúng ra sao?
- Q) 39. Làm thế nào để viết kiểm thử đơn vị cho các thành phần hoặc màn hình UI Compose?
- Câu hỏi) 40. Kiểm thử ảnh chụp màn hình là gì và nó giúp đảm bảo tính nhất quán của UI trong quá trình phát triển như thế nào?
- Câu hỏi) 41. Làm thế nào để đảm bảo khả năng tiếp cận trong Jetpack Compose?
- Phần 0: Nền Tảng Compose
Chính Sách Đảm Bảo Hài Lòng 100% Trong 60 Ngày của Leanpub
Trong vòng 60 ngày kể từ ngày mua, bạn có thể nhận được hoàn tiền 100% cho bất kỳ giao dịch mua nào trên Leanpub, chỉ với hai cú nhấp chuột.
Về mặt kỹ thuật, điều này có rủi ro cho chúng tôi, vì dù sao bạn vẫn có các tập tin sách hoặc khóa học. Nhưng chúng tôi tự tin vào sản phẩm và dịch vụ của mình, cũng như vào các tác giả và độc giả, nên chúng tôi sẵn sàng đưa ra cam kết hoàn tiền đầy đủ cho mọi thứ chúng tôi bán.
Bạn chỉ có thể biết được một thứ tốt đến mức nào bằng cách thử nó, và với chính sách hoàn tiền 100% của chúng tôi, việc thử hoàn toàn không có rủi ro!
Vậy nên, không có lý do gì để không nhấp vào nút Thêm vào Giỏ hàng, phải không?
Xem điều khoản đầy đủ...
Nhận $8 cho giao dịch $10, và $16 cho giao dịch $20
Chúng tôi trả 80% tiền bản quyền cho các giao dịch mua từ $7.99 trở lên, và 80% tiền bản quyền trừ phí cố định 50 cent cho các giao dịch mua từ $0.99 đến $7.98. Bạn kiếm được $8 cho mỗi giao dịch $10, và $16 cho mỗi giao dịch $20. Vì vậy, nếu chúng tôi bán 5000 bản sách không hoàn trả với giá $20, bạn sẽ kiếm được $80,000.
(Vâng, một số tác giả đã kiếm được nhiều hơn thế trên Leanpub.)
Thực tế, các tác giả đã kiếm đượchơn $14 triệu bằng cách viết, xuất bản và bán trên Leanpub.
Tìm hiểu thêm về việc viết trên Leanpub
Cập nhật miễn phí. Không có DRM.
Khi bạn mua sách trên Leanpub, bạn sẽ nhận được các bản cập nhật miễn phí trong suốt thời gian tác giả cập nhật sách! Nhiều tác giả sử dụng Leanpub để xuất bản sách trong quá trình họ đang viết. Tất cả độc giả đều nhận được cập nhật miễn phí, bất kể họ mua sách khi nào hoặc đã trả bao nhiêu tiền (kể cả miễn phí).
Hầu hết sách trên Leanpub có định dạng PDF (cho máy tính) và EPUB (cho điện thoại, máy tính bảng và Kindle). Các định dạng có sẵn của sách được hiển thị ở góc trên bên phải của trang này.
Cuối cùng, sách trên Leanpub không có bất kỳ hạn chế DRM phiền phức nào, vì vậy bạn có thể dễ dàng đọc trên bất kỳ thiết bị được hỗ trợ nào.
Tìm hiểu thêm về các định dạng ebook của Leanpub và nơi đọc chúng