Android面试必备知识点详解

需积分: 0 1 下载量 168 浏览量 更新于2024-07-26 收藏 119KB DOC 举报
"面试android宝典" Android面试中涉及的知识点广泛且深入,涵盖了语言特性、系统架构、组件交互、性能优化等多个方面。以下是对这些知识点的详细解释: 1. **方法重载与覆盖的区别**: - 方法重载(Overloading)是指在同一个类中,方法名相同但参数列表不同的多个方法。重载不关心返回类型,只看方法签名。 - 方法覆盖(Overriding)发生在子类对父类已有的同名方法进行重新定义,要求方法名、返回类型和参数列表完全一致,并且访问权限不能更低。 2. **String与StringBuffer的区别**: - String是不可变对象,每次修改都会创建新的对象,效率较低。 - StringBuffer是可变对象,适用于多线程环境下的字符串拼接,性能优于String。 3. **字符串倒序实现**: 可以使用StringBuilder或StringBuffer的reverse()方法来实现字符串的倒序。 4. **抽象类与接口的区别**: - 抽象类可以有构造方法、成员变量和非抽象方法,可以作为其他类的基类。 - 接口只包含常量和抽象方法,不包含具体实现,可以多继承。 5. **集合的实现类与区别**: - ArrayList和LinkedList:ArrayList适合随机访问,插入删除慢;LinkedList适合顺序遍历,插入删除快。 - HashMap和HashSet:HashMap允许键值对存储,HashSet是无序不重复元素集合,基于HashMap实现。 6. **线程状态**: - 新建、就绪、运行、阻塞、等待、超时等待、终止。调用start()会启动新线程,run()直接执行当前线程。 7. **线程的实现方式**: - 继承Thread类并重写run()方法。 - 实现Runnable接口并实现run()方法,然后通过Thread对象启动。 - 实现Callable接口并实现call()方法,通过FutureTask包装后使用ExecutorService启动。 8. **sleep()与wait()的区别**: - sleep()是Thread类的方法,让当前线程休眠,不会释放锁。 - wait()是Object类的方法,用于线程间通信,使线程进入等待状态,释放对象锁。 9. **线程控制方法**: - wait(), join(), sleep(), yield(), notify(), notifyAll(), synchronized:涉及线程同步和唤醒,各有特定用途,如等待通知、线程协作等。 10. **final、finally、finalize()的区别**: - final修饰变量表示不可改变,修饰方法表示不可重写,修饰类表示不能有子类。 - finally用于异常处理,确保代码块一定会执行。 - finalize()是对象被垃圾回收前的回调方法,不保证一定会执行。 11. **单例模式**: - 饿汉式:类加载时就创建单例,线程安全。 - 双重检查锁定(DCL):延迟初始化,线程安全。 12. **冒泡排序**: 通过不断交换相邻的逆序元素,逐渐将最大(小)元素冒泡到数组末尾。 13. **Android系统架构**: 分为Linux内核层、系统库和服务层、应用框架层和应用层。 14. **Activity生命周期**: 启动、暂停、恢复、停止、销毁。保存数据通常在onSaveInstanceState()。 15. **四大组件**: Activity、Service、BroadcastReceiver、ContentProvider,分别负责用户界面、后台服务、接收广播和数据共享。 16. **Android存储方式**: SharedPreferences、文件存储、SQLite数据库、内部存储、外部存储。 17. **ANR**: 应用无响应,通常因主线程阻塞。通过合理使用异步任务、Handler等避免。 18. **Handler机制**: Handler、Looper、MessageQueue和Message协同工作,实现消息的发送与处理。 19. **ListView优化**: 使用ViewHolder减少视图查找,复用convertView,避免过多的View创建。 20. **Intent**: 用于应用程序之间、组件之间的交互,可传递多种类型的数据。 21. **屏幕分辨率自适应**: 使用dp、sp单位,适配不同屏幕尺寸,以及使用dimen资源文件。 22. **Android IPC**: Binder是主要的进程间通信机制,还有AIDL、ContentProvider、Broadcast等。 23. **程序入口判断**: 主Activity通常声明在AndroidManifest.xml的<application>标签下。 24. **网络访问方式**: HttpURLConnection、HttpClient、OkHttp等,现在官方推荐使用HttpURLConnection。 25. **HttpClient通信过程**: 创建连接、设置请求头、发送请求、读取响应。 26. **数据交互格式**: JSON轻量级,易于阅读和编写,XML结构化强,支持复杂数据结构。 27. **XML解析**: DOM(内存中构建整个文档树)、SAX(事件驱动,逐行解析)、Pull(拉取模型,轻量级)。 28. **百度地图核心类**: 包括地图API、定位API、路线规划API等,提供地图显示、定位、路径规划等功能。 以上是Android面试中常见的技术点,理解并掌握这些内容对于面试和实际开发都至关重要。