2024年Android面试中的Java基础

Android面试中的Java基础前言 听说 24 届现在没找到实习 就崩溃了 你是不是崩溃了 焦虑了 失眠了 脱发了 其实吧 现在才 4 月 实习招聘刚刚拉开大幕 统一招聘 只是形式大于实质的吆喝 5 6 月各种补招和散招才是招聘高峰 也是拿 offer 的高峰 机会多多 悲观者往往正确 但乐观者往往成功 不要制造焦虑吓自己 多为面试准备准备 机会多多也要把握住 以下都是一线互联网大厂最常见的几个问题

大家好,我是讯享网,很高兴认识大家。



前言

听说24届现在没找到实习,就崩溃了?

你是不是崩溃了?焦虑了?失眠了?脱发了?

其实吧,现在才4月,实习招聘刚刚拉开大幕,“统一招聘”只是形式大于实质的吆喝。

5-6月各种补招和散招才是招聘高峰,也是拿offer的高峰,机会多多。

悲观者往往正确,但乐观者往往成功。不要制造焦虑吓自己。

多为面试准备准备,机会多多也要把握住!

以下都是一线互联网大厂最常见的几个问题,如果是面试Android高级工程师岗,那几乎是必问面试真题

面试题一、子线程中能不能直接new一个Handler,为什么主线程可以

因为在主线程中,Activity 内部包含一个 Looper 对象,它会自动管理 Looper,处理子线程中发送过来的消息。而对于子线程而言,没有任何对象帮助我们维护 Looper 对象,所以需要我们自己手动维护。所以要在子线程开启 Handler 要先创建 Looper,并开启 Looper 循环

面试题二、Handler导致的内存泄露原因及其解决方案

原因:在Activity内将Handler声明成非静态内部类或者匿名内部类,这样Handle默认持有外部类Activity的引用。如果Activity在销毁时,Handler还有未执行完或者正在执行的Message,而Handler又持有Activity的引用,导致GC无法回收Activity,导致内存泄漏。
解决方案:1、静态内部类 + 弱引用
2、如果将Handler声明成可能导致内存泄漏的情况,在Activity销毁时,可清空Handler中未执行或正在执行的Callback以及Message:
3:非静态内部类 + 弱引用,在activity要回收时清除引用

面试题三、一个线程可以有几个Handler,几个Looper,几个MessageQueue对象

一个线程可以有多个Handler,只有一个Looper对象,只有一个MessageQueue对象。Looper.prepare()函数中知道,在Looper的prepare方法中创建了Looper对象,并放入到ThreadLocal中,并通过ThreadLocal来获取looper的对象, ThreadLocal的内部维护了一个ThreadLocalMap类,ThreadLocalMap是以当前thread做为key的,因此可以得知,一个线程最多只能有一个Looper对象, 在Looper的构造方法中创建了MessageQueue对象,并赋值给mQueue字段。因为Looper对象只有一个,那么Messagequeue对象肯定只有一个

面试题四、Message对象创建的方式有哪些区别

1.Message msg = new Message();每次需要Message对象的时候都创建一个新的对象,每次都要去堆内存开辟对象存储空间
2.Message msg = Message.obtain();obtainMessage能避免重复Message创建对象。它先判断消息池是不是为空,如果非空的话就从消息池表头的Message取走,再把表头指向 next。如果消息池为空的话说明还没有Message被放进去,那么就new出来一个Message对象。消息池使用 Message 链表结构实现,消息池默认最大值 50。消息在loop中被handler分发消费之后会执行回收的操作,将该消息内部数据清空并添加到消息链表的表头。
3.Message msg = handler.obtainMessage(); 其内部也是调用的obtain()方法

这些常问的面试题。如果你是面试者,你会如何回答,能回答多少呢?

由于文章篇幅有限,只能展示部分面试题,有需要完整文档的可以点击下方卡片 即可免费领取!

《Android面试大厂必考174题》

1. SD卡

2. android的数据存储方式

3. BroadcastReceiver

4. sp频繁操作会有什么后果?sp能存多少数据?

5. dvm与jvm的区别

6. ART

7. Activity的生命周期

8. Application能不能启动Activity

9. Activity的状态都有哪些

10. 横竖屏切换时Activity的生命周期Activity的状态都有哪些

11. 如何设置activity成窗口样式

12. Activity的启动方式

Android面试中的Java基础

13. Service的生命周期

14. IntentService

15. Fragment和Activity的onCreateOptionsMenu

16. Service的onStartCommand有几种返回值

17. Service的onRebind什么情况下执行

18. Handler防止内存泄露

19. IntentFilter的匹配法则

20. Fragment与Activity传值

21. Fragment 生命周期

小讯
上一篇 2024-12-26 23:35
下一篇 2024-12-24 17:14

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/6384.html