Java与Android面试必看:高薪技术点解析

需积分: 16 1 下载量 82 浏览量 更新于2024-09-10 收藏 654KB PDF 举报
"这是一份针对Android开发的高薪面试题集,包含了50个问题,涵盖了许多核心概念和技术,包括方法重载与覆盖、字符串处理、抽象类与接口、集合、线程管理、设计模式、Android系统架构、四大组件、广播、数据存储、UI适配、IPC以及网络访问等。" 1. 方法重载与覆盖:方法重载(Overload)是指在同一个类中可以有多个同名方法,但参数列表不同(参数类型、数量或顺序)。方法覆盖(Override)是子类对父类已有的方法进行重新定义,保持方法名、参数列表和返回类型相同,但可以有不同的实现。 2. String与StringBuffer的区别:String是不可变对象,每次修改都会创建新的对象,而StringBuffer是可变对象,修改时不会创建新对象,适合大量字符串操作。 3. 字符串倒序:可以通过字符数组实现字符串的反转,首先将字符串转换成字符数组,然后从后向前遍历数组,将字符依次添加到新字符串中。 4. 抽象类与接口:抽象类可以有构造方法和非静态成员,可以包含抽象方法和非抽象方法;接口则只能包含常量和抽象方法,不能有实现。抽象类是多态的实现方式之一,接口用于实现多重继承。 5. 集合的实现类与区别:ArrayList和LinkedList分别代表动态数组和链表实现,ArrayList适合随机访问,LinkedList适合插入和删除。HashSet、LinkedHashSet和TreeSet代表无序不重复、有序不重复和有序且可排序的集合,基于哈希表和红黑树实现。 6. 线程状态:线程有新建、就绪、运行、阻塞和终止五种状态。start()方法启动线程并进入就绪状态,run()方法是线程执行体,调用它不会启动新线程。 7. 线程实现方式:Java提供了继承Thread类和实现Runnable接口两种方式来创建线程。 8. sleep()与wait():sleep()使当前线程休眠指定时间,不释放对象锁;wait()让当前线程等待,释放对象锁,需在同步块或方法中调用。 9. 线程控制方法:wait(), join(), sleep(), yield(), notify(), notifyAll()和synchronized都是线程同步和通信的方法,各有其特定用途,如等待/唤醒机制、线程间协作等。 10. Final、finally、finalize()的区别:final修饰变量表示不可改变,修饰方法表示不能被覆盖,修饰类表示不能有子类。finally是异常处理结构的一部分,确保代码块一定会执行。finalize()是对象销毁前的回调方法。 11. 设计模式:常见的设计模式有单例、工厂、观察者、装饰器、代理等,单例模式保证一个类只有一个实例,线程安全的单例实现通常使用双重检查锁定或静态内部类。 12. 排序算法:常见的排序算法包括冒泡、选择、插入、快速、归并、堆排序等,应掌握其时间复杂度和实现原理。 13. Android系统架构:Android系统由Linux内核、硬件抽象层、库、应用程序框架和应用程序组成,提供运行环境和功能支持。 14. Activity生命周期:Activity经历onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()等方法,保存信息通常在onSaveInstanceState()中。 15. onSaveInstanceState()和onRestoreInstanceState():这两个方法用于在Activity被销毁并恢复时保存和恢复用户界面的状态。 16. Android四大组件:Activity、Service、BroadcastReceiver和ContentProvider,分别负责用户界面、后台服务、广播接收和数据共享。 17. 广播调用:广播可以通过隐式和显式两种方式触发,隐式广播基于Intent过滤器,显式广播指定接收者。 18. asset与raw文件夹:asset存放任意文件,raw按资源ID管理,通常用于存放音频、视频等。 19. Android数据存储:包括 SharedPreferences、文件系统、SQLite数据库、ContentProvider和内部/外部存储。 20. ANR:Application Not Responding,是应用无响应的错误,通常由于主线程阻塞引起,可通过合理安排任务、使用AsyncTask、Handler等避免。 21. Handler机制:Handler、Looper和MessageQueue协同工作实现消息处理,主线程的Looper不断循环读取消息队列并分发给对应的Handler处理。 22. ListView优化:使用convertView复用视图,避免每次都创建新的View,提高性能。 23. ListView分页加载:通过监听滚动事件,在用户接近底部时加载更多数据,减轻一次性加载大量数据的压力。 24. 图片异步加载:使用像AsyncTask或 Glide 这样的库在后台加载图片,防止UI线程阻塞。 25. Intent原理:Intent用于在组件之间传递数据和启动操作,可携带基本类型、Parcelable和Serializable数据。 26. 屏幕分辨率自适应:使用dp和sp单位代替px,结合dimens.xml文件和布局权重实现不同屏幕尺寸的适配。 27. Android IPC:进程间通信,如Binder、AIDL、ContentProvider、BroadcastReceiver等方式,实现不同进程间的交互。 28. 程序入口判断:Android程序通常在主Activity的onCreate()方法中开始,但也可能在其他入口点如BroadcastReceiver或Service中。 29. 网络访问方式:Android提供了HttpURLConnection、HttpClient(已被弃用)、OkHttp等API进行网络请求,现在推荐使用OkHttp。 30. HttpClient:虽然已被弃用,但在某些旧版本Android中仍可用,用于发送HTTP请求,支持各种请求方法和连接管理。现在推荐使用更现代的库如OkHttp。
2021-07-01 上传