Android 进阶之旅

Android 进阶学习(十八) 关于java部分知识点总结

2021-01-04  本文已影响0人  Tsm_2020

其实在开始写android 部分博客的时候就有打算换一个环境,大家从我总结的知识点其实也可以看出来,基本上都是在面试过程中会问到的问题,但是关于java 部分的知识点其实有很多也非常重要,在写博客的过程中虽然没有投递过简历,但是还是收到了一个大型互联网公司的面试邀请,虽然关于android 部分的回答自我感觉良好,但是关于java部分的知识点就差强人意了,

下面说一下其中我感觉比较重要的题目

1.四个线程顺序执行

这个问题是关于重入锁相关的问题,关于这个方面的问题平时工作基本上用不上,但是一段时间不看肯定就忘记了,但是在重新看源码的过程中AsyncTask 的处理任务的队列就可以实现这个问题,还有其他方法就是我从网上找了一个,不知道的可以去看一下 https://www.cnblogs.com/myseries/p/11575757.html

2.多线程数据同步

线程安全的同步是一个非常头疼的问题,涉及到的问题有很多,关于锁 , 粒子性 原子性 可见性 ,关于Volatile 的使用,还有线程安全的数据模型,比如hashtable ConcurrentHashMap ,只有将所有东西都理解透彻我觉才能将这个问题完美的回答出来,很不幸 我只能理解他们的意思,但是不能使用文章将他们写出来,

3.ThreadLoca

关于ThreadLoca 我在看EventBus 和Handler 的源码的时候都有看过,在网上也看过一些文章,问题也都回答上来了,但是还是觉得他非常重要而且在平时开发过程中如果不看源码的话基本用不上,所以在这里还是记录一下 从网上看了一片文章写的挺好的,大家可以过去看一下https://www.jianshu.com/p/a8c6507bbde0

4.android 优化

这是一个老生常谈的问题,从网上一搜一大堆,也看过不少文章,同时做过不少优化,但是要让自己系统性的总结一下感觉又没有可说的,其实就是自己对一些问题还是没有理解清楚,https://www.jianshu.com/p/5a7b75fb31b3 这个文章就从面试的角度分析了一下我们平时是该如何优化,
关于AsyncLayoutInflater 加载布局中所有的view不能使用handler,这个问题其实是片面的,只是在线程中创建handler没有looper而已,我们只需要使用Handler mHandler=new Handler(Looper.getMainLooper());就轻而易举的搞定这个问题了,这些细节在平时开发过程就需要注意的

5.GC算法

6.LeakCanary 原理

这两个问题问的我满脸懵逼,只能大家自行去看了

关于android 部分

Recyclerview 的复用 和Glide缓存 的问题我在讲解源码的时候都有说道,说实话感觉面试官所了解的细节并不一定有我透彻,在回答这些问题都是我引领着面试官,只是可惜的是在后面回答java相关的问题还有算法题问题上回答的非常不好,只能说自己准备的还不够充分,关于app启动问题其实也是一个老生常谈的问题,虽然看过一部分源码,你只需要表达出来你所学到的部分就可以了,整个过程那么复杂,其实面试官肯定也不是很清楚,说到他会的塔就会问两句,不会就问下一个问题,就比如启动一个Activity其实是可以在线程中的,AMS 通过Binder 调用 IApplicationThread 来创建,而IApplicationThread 是ActivityThread 的内部类最后将消息通过内部类H Handler 来执行的,所以这个线程肯定是主线程,虽然话这么说但是实际开发过程中就遇到过在Oppo某个机型在线程中打开Activity不起作用,这个问题告诉我们可以是可以,但是需要注意不能这么用

上一篇下一篇

猜你喜欢

热点阅读