前前后后准备了近半个月的面试。
一面技术面,问ListView 跟RecyclerView的区别,RecyclerView的性能或复用效果上都远远超过ListView,当然最好的就是自定义的分割线了。虽然我知道,但是回答的时候我说了一句在使用上差不多,当然RecyclerView 顺手一点。技术小哥一阵苦笑,说了一句其实差的还是挺多的,万一要临时更改需求,ListView 就炸了。好吧。然后问基础Service的生命周期,这个简单直接一把梭。然后问项目中的最印象深刻的,我说了个线程池,脑子里面只有阿里巴巴那个规范不让使用New Thread 来实现方法,包括后面自己学习写Netty,很多事件的处理都是交给线程池来搞的。好了重点来了 讲一下wait和Sleep的区别。我一想稳了 背过,后面还有死锁,全背过送分,然后就开始背。一个要唤醒一个不要唤醒。然后?面试官一句然后,我彻底傻逼了,跟CPU 有什么关系?确实有点不知道了,这时候面试官说了一下:都会暂停当前线程并让出cpu的执行时间,但不同的是sleep不会释放当前持有的对象的锁资源,到时间后会继续执行。看来你果然不是学计算机的。我一看卧槽,这都知道。然后就开始讲解死锁,如何解决,其实也就是回归到同步,尽量避免在同步方法中调用。超时等设置。后面还谈到了ab 换值 如何最快。
二面就是老大,面的是JVM GC回收机制,背倒是能背出来,想用图形化的东西来展示我背的内容,面试官让别画了,大概是知道是背的没有真正理解吧,说了一些计算机原理是选修的课,所以我基础差,也算是给我找台阶下。然后让我写了一个代码规范,问了一下leakcanary的原理,那时候我短路了,一点都想不起来是什么,知道怎么用,原理是什么一点都想不起来,当二轮随便说了说其他的之后 我才想起来leakcanary的工作原理。大概这就是没有真正的理解吧。至于问了一个设计模式,让我说MVP,这个倒是没什么难度。巴拉巴拉。
然后三面来了,让我讲讲我最近的项目,我就巴拉巴拉开奖我的项目从应用讲到FrameWork 讲到 MCU,然后说自己还是有点意思想往下面看看的至少可以多知道这些原理,面试官可能曲解了我的意思,认为我想往底层走,给我一个小建议,就是越往下走,就业面就越窄,因为涉及到定制化系统,推荐我去做智能家居这种,说这边主要的还是要应用层的,多研究研究Google的官方东西。
总之还是很有收获的,知道自己欠缺了什么,比如编程思想,计算机原理。顺带一提的就是一面的小哥聊了一会就说我看了不少Android的书,但是JAVA的书应该读的不够,然后Google的Android 版本,这边有点搞笑。他说 O P的一些新特性我竟然不知道 这就是8.0 跟 9.0 但是后面我还是硬着头皮说了一下9.0或出现http报错的问题,然后他来了一句你看google 的文档吗,中文的还是英文的,后面他补充说,只要你看过那么下面你说的那个就不是问题,因为官网都介绍了解决方法,假如你强行要用http下面也提供了修改的方法很简单。惭愧,这些都不知。
想起来我面试的早上,刚醒来第一件事就是把APP的启动流程在大脑里面走了一遍,走完才开始起床,现在想想这根本就是我在启动。
最后还要感谢一下于大侠,给我这次机会。
网友评论