面试公司类型:互联网公司 100-500人团队
性能优化岗面试官面试一面:
1、自我介绍
针对于自我介绍,本来打算面试前拿出自己的简历再核对一下,脑海里面过一遍相关知识点及应答,但由于当时一直在忙,直到电话打来,介绍姓名和名字还好,介绍我的业务时,由于负责的还是相对较多,一边在想一边回答, 我又想突出我的技能方向及业绩,导致有点卡顿.
10分这里自我评价6分.
2、两个项目,直接问了我手表项目中针对于WiFi模块的相关优化.
经过卡顿的自我介绍后,我的思维已经从刚才干活的思路进入到了这场面试之中,我提炼出我在这个项目中做出的优化,以及为什么会这样做的原因,整体下来这一块我答的算是不错,毕竟是自己亲自做的东西,会把当时的各种考虑说进去,所以面试官对我这里感觉不错,但也许是因为这个面试官是做性能优化的,所以他问了我时间段上面的问题,像wifi连接,优化后的速率又是多少?平时wifi连接中流程及他们具体要花多少时间清楚吗?这里我自己看日志的时候有看过每一个步骤大概花了多少s,就告诉他扫描花费了0.2s左右,dhcp分配花费0.1s左右,而认证流程根据信号的强度或有所快慢,因为这涉及到空中数据收发包,但指定名称、输入密码的认证连接,一般也不会超过2s,这个话题到这里基本结束,基于这个话题,面试就问了我对于WiFi模块了解的如何.
10分的话这里自我评价9分.
3、问了我所负责的这个模块从上到下是怎样调用的,估计是想问Android框架?
了解如何?这四个字概念太广了,所以一时之间我并不清楚面试官想问的点是什么,所以我只是说了一下Wifi的整体框架Wpa_supplicant以及wifi的启用流程,从应用层调用框架层的接口,框架层调用服务接口,这里会去判断驱动有没有打开这样,如果没打开,会先起一下驱动,这里流程各方面我达的是没问题的,但这个点应该没达到他想问的点,事后一想我估计他想问的是linux系统的进行启动,到服务启动,c++和Java是如何交互的这样一个整体的Android系统启动流程.
这里自我评价只能7分,整体答得流畅,但点不对.
4、问Android四大组件,让都说一下
我直接选择了Activity进行了阐述,说启动模式、生命周期、生命周期正常状态下的情况、异常情况下的情况(重点问),问低内存查杀机制(一直都以为自己很清楚这块,问了之后发现自己的记忆并不是牢不可靠的),只能凭借着自己的理解这一块和他将这三个点都进行了阐述,答得偏差不大,但是语言组织上有些卡顿.
追问我有些activity明明是正常的,但是也会出现被查杀这种情况,这是为什么?
这个问题问的我有些蒙,因为之前我将异常查杀的都分析完了,资源重新配置更改导致被查杀,低内存也会被查杀,所以这个问题我扯了扯,也不知道扯哪去了,下来请教了大哥们,大哥告诉我,这和adj有关,其实就是想问的更深入一些。
所以这里我只能给自己评分6.5分.
5、问ANR
我回答不会,但是了解基本的分析思路,将基本ANR的分析思路进行了讲解,先看进程的启动,zogyte的往下的进程有没有启动起来,如果起来了,屏幕不亮,那就不是系统层面的问题,是app的问题,得去看具体进程的包管理信息,看看哪个应用在进程中占用内存最高,然后从高内存到低内存的进行查杀,观察是哪个应用异常负荷工作导致的ANR.
答完这里我就说了解的就这么多,面试官也没难为我,对我的耿直表示肯定后就换了下一个问题.
综合评分这里可以有个7分。
6、问IPC
没直接讲binder,就是给他Java中的流概念,然后说了两个序列化接口,为什么会需要实现序列化接口,实现了序列化的接口可以通过ipc的机制完成数据传递,数据同步,保证了数据及时刷新等相关避免了同步锁的问题,整体的是夹带了流这个概念进行讲解。
这里的话面试官应该是感觉我理解的挺不错,能说出个123,所以对我表示了肯定,所以必须给咱自己也打个9分这里.
7、问touch事件分发
当时还只是了解原理,记忆是不清楚的,所以当这个问题真正甩在我的脸上时,我只能强扯了两句,讲了自定义View的管理,是由dicreView管理,整个View相当于一颗二叉树,再由WMS进行管理,分发机制就是为了确认view在布局中的位置、层级、以及为什么用户点击到屏幕某处就能确定屏幕某处这里会响应. 这里打个6.5分吧
8、总结
答的整体还行,面试官也表示了肯定,除了这7个问题,还随缘问了一些,就没写在上面,但他事后问了我的工作经验以及之后工作的一个意向,看的出来对于咱这点经验掌握这么多,也追过源码,也有自己的理解,对这个阶段的我表示认可,但总体来说就是,还需继续加强.我也深知自己工作年限浅是硬伤,所以对于这些知识必须复盘,重新进行了知识清洗,对于模糊的地方,以及自己理解不深刻的地方,都进行了新的学习,而这也帮助我完美通关了第二面的面试.