两年 android 经验面经

Posted 程序员大咖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两年 android 经验面经相关的知识,希望对你有一定的参考价值。


作者丨New_X
https://www.jianshu.com/p/73bdb80914ba


去年跳槽不成功,在同花顺又呆了一年。一年来收获蛮大,就公司项目来说,已经是非常熟悉了,很多入职不久的,都是不断抱怨,框架太老,技术太旧。这个是实话,但是细看里面的思想和设计还是能学到不少东西的,一年来也顺手优化了许多东西,根据业务也思考了很多更合理的方案。


不过还是打算跳槽了,薪资和无法推动项目是个大问题,总不能鱼渔都不得吧。我是抱着找不到好的,就北上的心态找的。


两年 android 经验面经做股票期货的,经验类似,面试太过顺利…


Activity的启动模式


Activity和Fragment数据交互


线程间交互的方法都行,进程间交互的就更可以了,FragmentManager/getActivity()


单例的实现方法


事件分发机制


开源库用过哪些


自己平时写项目学习,基本都用过,原理也了解;重构项目的资讯模块用了Retrofit & RxJava,自己思考优化了代码框架,比如线程切换、页面查找等,其实弄清楚原理,要改哪里一目了然


项目中Socket是怎么分包、编码的?


包类型分为Text类型、Table类型、资源类型、曲线类型、交互模式数据(曲线类型属性主要是点,关键方法append,可以增量更新数据)


公司自己定义了个Base64编码,算法当然不要去纠结了


延伸了下压缩(主要用于Table和曲线类型)和加密(参考HTTPS)


股票的图怎么画?像左右滑动、点击出现十字光标这些


原理知道即可:自定义View & 触摸反馈


要了16K,和当初进同花顺一样,当天给了答复


两年 android 经验面经有赞


重点在kotlin、RN 和 weex,其实也正常,电商类都偏向混合开发,毕竟活动更新很频繁,和自己的技术栈不是很符合,估计是挂了,也正常,以公司角度肯定最好是找搞过的,以个人角度技术栈对不上肯定也会被压薪资…


Handler、Looper、MessageQueue的关系


类似微博分享功能适合的launchMode,为什么不是singleInstance?


Binder具体的实现原理,数据拷贝次数:代理模式 & 协议,太细的忘了,开发艺术探索、内核剖析、源代码情景分析里都看过…


个人觉得学以致用,比如App启动,没必要每步都记清楚,知道需要创建ApplicationThread、ActivityThread,然后和冷热启动结合想一下,activity的启动流程和生命周期结合想一下,虽然还没深入到那一步,但是启动模式实现肯定也是在AMS的,知识其实是相通的,多想想设计者这样设计的道理 -> 不过可能也是自己经验不够,理解不到位,不过死记真的没意思…


RxJava:一个请求用完接着再用一个请求(concat)/两个请求并行使用哪个操作符(zip)


其实场景是很常见的,比如我们也有委托双重认证,并发请求就更多了,但是RxJava用的少,没那个意识,资讯那块的请求很简单,不过提醒我了,双重认证可以封装简化 -> 可能不行,公司的网络框架没那么解耦的


这种类似问题我是最烦的,确实不会,不过知道就是输入关键字搜索就可以知道的问题


StringBuilder和StringBuffer的区别,StringBuffer的实现原理


HashMap的rehash扩容是怎么操作的:没什么印象了


1). 创建一个新的Entry空数组,长度是原来的2倍


2). 遍历原Entry数组,把所有的Entry重新Hash到新数组里。为什么要重新Hash呢?因为长度扩大以后,Hash的规则也随之改变了


-> 想问的应该是rehash的公式,之前看到过,不过没去记…


-> 也有可能想知道的是:LoadFactor:HashMap负载因子,默认是0.75f;Capacity:HashMap的当前长度,HashMap的长度必是2的幂


栈虚拟机和寄存器虚拟机差异:听都没听过,不过知道寄存器处理速度是最快的


Retrofit的注解是怎么解析的:动态代理、AOP


Handler的内存泄漏原因;为什么内存释放不了,MessageQueue持有? -> 被带沟里了,肯定知道内部类持有外部引用导致activity无法释放;想的是线程是GC Root,Handler正在运行,会导致activity无法释放,所以被引导,顺势说了MessageQueue持有了activity


JSBridge安全漏洞解决方法:知道有安全问题,但是没仔细研究


ClassLoader双亲委派实现原理


IntentService的实现原理


平时用过哪些框架:RxJava和Retrofit重构了资讯模块


两年 android 经验面经淘客吧


View的绘制流程、承载的数据结构、树的好处


算法题:把0排到最前面


事件分发机制


MVC MVP MVVM的区别


ClassLoader的过程,ClassLoader的好处


Handler内存泄露


多线程机制


HTTPS工作原理


数据怎么压缩,数据的安全


插件化原理


ARoutet原理


组件化通信


内存优化做过哪些


讨论了下负载均衡


系统启动流程和activity启动流程


成长最大的阶段


两年 android 经验面经阿拉丁,一面


领导不在,同学内推的,面试官说进阿拉丁有点屈才,该试试大厂。我也想,但是不认识内推的人…


HTTP和HTTPS区别


HTTPS流程,项目中安全和压缩处理


Binder机制


ClassLoader机制


对架构的理解


OkHttp原理,怎么把参数组装的


事件分发机制


HashMap的哈希散列实现,线程安全吗,为什么?


ArrayList和Vector扩容的区别


HashTable,ConcurrentHashMap怎么实现线程安全


jvm内存模型,新生代和老年代的比例?


新生代里怎么划分?好处?


熟悉哪些数据结构?


设计模式在源码和项目中的使用


单例模式的写法,思路


java8对hashmap的优化


hashmap和hashset区别,hash怎么散列的


tcp三次握手


两年 android 经验面经头条,一面


项目中成就最大的部分


对Thread的理解?线程状态?阻塞和运行状态区别?


锁的种类,什么是自旋锁,ReentrantLock?


HashMap原理?


HandlerThread原理和使用场景?


-> IntentService


线程池怎么实现,阻塞队列原理?


-> 阻塞队列实现没去了解,下意识提了下Looper.loop循环,后面一看还真是,程序员的直觉


Fragment初始化参数调用哪个方法?


Fragment懒加载怎么实现?


事件分发机制,分析3层View包裹,点击click


自定义View怎么绘制,注意点?


网络框架怎么重构封装的?


TCP三次握手


对资讯进行了MVP
封装,讲讲MVC和MVP的理解


为什么使用Bundle不用HashMap传输数据?


Serialable 和 Parcelable区别


glide的图片三级缓存


交互模式


两年 android 经验面经爱库存


面完有个面产品的漂亮小姐姐搭话,心里美滋滋


大都问的项目,每个点延伸讲了很多,所以问的个数不多


Service熟悉吗?


Service进程保活?


MVC和MVP


发现大都问的相似,我都想停更了…


祝好,持续更新…


 推荐↓↓↓ 

以上是关于两年 android 经验面经的主要内容,如果未能解决你的问题,请参考以下文章

渣硕自学两年转行Android,零经验春招拿美团30w年薪offer,HR说我是头一个!

分享学妹提前谋划两年成功入职腾讯面经,Android面试吃透这套资料面试成功率直线飙升!!!

二本 两年经验读者 阿里P6面经

三年老Android经验面经,成功入职阿里

三年老Android经验面经,内含福利

java两年工作经验简历,含泪整理面经