47道国内外中高级Android专项面试题整理
最近一段之间一直在关注Android面试的事情,并系统的梳理了一下国内外Android面试最常问到的一些题,分享给大家,希望大家面试都能顺利。
1.相对布局和线性布局之间的区别?
答:
线性布局 — 垂直或水平排列元素。即在一行或一列中。
相对布局 — 相对于父元素或其他元素排列元素。
2.在安卓中,位图和可绘制有什么区别?
位图是位图图像的表示形式。可绘制可以是位图(包装为位图可绘制),但也可以是纯色、其他可绘制对象的集合或任意数量的其他结构。
3.什么是活动?
活动提供应用在其中绘制其 UI 的窗口。此窗口通常会填满屏幕,但可能比屏幕小,并浮动在其他窗口的顶部。通常,一个活动在应用中实现一个屏幕。
4. 如何在安卓应用中保留数据?
共享首选项 - 将基元数据保存在键值对中
内部存储 - 您需要将数据存储到设备文件系统,但您不希望任何其他应用程序(甚至是用户)读取此数据
外部存储 - 你可能希望用户查看你的应用保存的文件和数据
数据库
5. Android应用程序四大组件
活动 - 活动是与用户交互的入口点。它表示具有用户界面的单个屏幕。
服务 - 服务是出于各种原因使应用在后台运行的常规用途入口点。它是在后台运行的组件,用于执行长时间运行的操作或执行远程进程的工作。
广播接收器 - 广播接收器是一个组件,它使系统能够在常规用户流之外向应用传递事件,从而允许应用响应系统范围的广播通知。
内容提供程序 - 内容提供程序管理一组共享的应用数据,您可以将这些数据存储在文件系统、SQLite 数据库、Web 或应用可以访问的任何其他持久性存储位置上。
6. 如何在安卓应用程序中的活动之间传递数据?
执行此操作的最简单方法是将会话 ID 传递给您用于启动活动的 Intent 中的注销活动:
Intent intent = new Intent(getBaseContext(), SignoutActivity.class); intent.putExtra("EXTRA_SESSION_ID", sessionId); startActivity(intent);
在下一个活动中访问该意向:
String sessionId = getIntent().getStringExtra("EXTRA_SESSION_ID");
7. 活动生命周期
8. 什么是异步任务?
onPreExecute()
doInBackground()
onProgressUpdate()
onPostExecute()
9. 安卓系统中的构建过程
10. 在什么情况下应该使用回收器视图而不是列表视图?
11. 什么是视图组?它们与视图有何不同?
12. 如何在片段中获取context?
13. ADB
14. 内存不足是如何发生的?
15. 什么是安卓系统中的intent?
16. 什么是内容提供者,它通常用于什么?
17. 您知道哪些类型的上下文?
18. 解释安卓通知系统
19. 是否可以在适用于安卓的 Java 中实现模型-视图-控制器模式?
20. 数组列表和数组映射之间有什么区别?
21.中间件
22. 服务与意向服务有什么区别?
23. 什么是 DDMS,您能用它做什么?
24. 什么是安卓注释,它们的用途是什么?
25. 什么是意向过滤器?
26. handler
27.进程间通信的方式
28. 为什么使用片段,以及何时使用片段而不是活动?
29. 什么是显式意图?什么是隐性意图?
30. 什么是支持库?为什么引入它?
31. 如何在没有 Intent 的活动之间传递数据?
32. 如何在安卓中声明全局变量?
33. 什么是安卓数据绑定?
34. 安卓中的权限保护级别有哪些?
35. 描述安卓中不同类型的服务
36. 列表视图和回收器视图之间有什么区别?
37. Android Log.v(), Log.d(), Log.i(), Log.w(), Log.e().何时使用每一个?
38. 安卓中的适配器和加载器有什么区别?
39. 什么是广播接收器?
40. 数组映射和哈希映射之间有什么区别?
41. 如何避免APK文件的逆向工程?
42. 什么是粘性广播?
43. 是否可以手动调用垃圾回收器?
44. 什么是线程池?
45. 如何在不同的活动中使用异步任务?
46. 可打包和可序列化之间有什么区别?
47. Android 性能优化
由于版面问题这里只提供了几道题的解答思路,需要完整的话可以看这里 。
#面试##秋招##面经##Android##安卓工程师#