1年8个月Android开发,面试100-500人互联网公司,Framework岗二面面经!

98 阅读5分钟

为何要收藏这篇干货?——番茄憨憨的自我独白

我是番茄憨憨,我要坦白。

目前Android市场需求相比以前没这么大,对于开发工程师的要求也越来越高,所以每次的面试经验或许都将成为推动我们未来走向更适合自己工作岗位的契机之一,这里主要是针对于framework岗位二面的一个复盘,希望我自己的一个面试过程,也能够帮助即将面试这个岗位或者有想法转向这个岗位的朋友们,附上上次一面面经地址:一面面经:一年八个月Android-wifi工程师跳Framework - 掘金 (juejin.cn),想看的朋友自取,下面我们正式开始此次二面复盘:

前言

说是二面,其实因为上一次性能优化岗位面试官更想招聘一个经验更深的队员,所以这次的我的面试官是直接匹配到framework组的teamleaer,TeamLeader开场,后续由一个他们团队中的一个成员来对我进行面试.

1、TeamLear开场问:你在项目中有没有遇到难的问题

这种问题是最常见的,面试官主要考察的是你在这个过程之中干了什么,遇到难题时你是怎样解决的,以及最后你对这个问题有没有深刻复盘,比如可能只是一个知识点,但你通过这个知识点,自己主动去学习了其他相关知识点,这整个过程向面试官阐述清楚就可以,这样面试官就感觉你是个愿意专研技术的,这个点我直接拿自己简历中的两个来进行描述,建议大家答的时候也可以这样回答,基于简历来回答的话,那技术官对你的简历会进行一个加分.

2、团队成员来面试Framework相关问题.

  • 问题1:应用的首次启动发起了总共几次ipc调用?
    • 这个问题其实比较广泛,只说次数也许是对的,但绝对不是面试官想要听到的点,毕竟一个答案有可能只是个背诵答案,而有的答案是经过推敲得来的,所以这种广泛命题其实很考察个人的功底,因为你如果没有细细的去看过具体的源码,那么可能这一块你在面试官的心中大概率得不到满分,所以针对于这道题,我直接先回答了四次,然后一边想着Acitivity的启动流程脑图,一边直接开始回答:
      Launcher中有个叫做startActivity的函数,应用的首次启动会通过他,借由Binder的方式找到AMS,然后AMS会通过Socket的方式找到Zygoty进程,Zygote会通过fork的方式创建出一个应用进程,这里顺带说了一下Zygote的主要作用,一个是为了孵化应用进程,另一个就是为了启动SystemServer,Zygote孵化出的应用进程,里面有一个main主函数(AcitvityThread.java类中),然后主函数里面有个比较重要的方法OnAttach(),这个方法会获取ams对象,会把自身AcitivityThread当作参数传过去,两者之间通过Binder调用,然后啪啦啪啦的就是一套Acitivity的启动流程,其中如何拉起ApplicationThread、如何拉起Acitivity的,为什么B应用调用了Onresume方法后,A应用才会调用OnPause以及OnStop方法,这个页面绘制流程是怎样的、AcitivityStack是如何管理的等等比较细节的流程都在这个话题之中讲道,总结下来一句话,答得详细且广泛,并且给了面试官接下来问问题的方向.
  • 问题2 :你刚才说到了绘制流程,事件分发你了解多少呢?
    • 在一面中这一块有被问到,我答到并不是很好,这一次,呵呵,我已经是看过源代码的人了,首先我直接切入自定义View这个概念,从这个概念又切入Android中手指按压、滑动、抬起事件(即所谓的touch事件),从这里开始对源码进行详细的讲解,像Activity那块一样,我的脑海里有当时追源码画过的脑图,一边想一边说,方法名称说的不是很准确,但是整体的事件如何消费、什么时候onTouchEvent()会生效、什么时候dispatchTouchEvent()需要主动重写等等,面试官听完,嗯呢,这小子就算是背的八股,也有点6,所以到这里面试官就说了,感觉我的知识点都说的比较细的,就没什么问的了.接下来又到了我和TeamLear的交流时间,谈岗位,谈发展意向等等,当然我们也谈到了WMS、PMS,LINUX系统的启动等等,在我有所准备的情况下,大家相谈甚欢,果不其然,第二天一早hr就给了我一个薪资,竟然让我在职降薪,啊呸,狗都不去.

3、总结

framework的面试中Acitivity、AMS、PMS、IPC、WMS、进程启动这一块是绝对的问题点,大家一定要去阅读相关源码并画出脑图,这样能更好的对自己的简历把握住尺度,然后面试的过程中也不要太紧张,正常聊天,不会的东西就说不会,不要不会装会,直说不会给你减分,反而会显得坦然.攻破了以上的关卡,大家还是注重平时工作中的积累,偶尔遇见刁钻的面试官也可以拿出来吹一吹,总之一句话,一定要打有准备的仗,只有这样,在如此严峻的环境下,你才有可能(注意:只是可能)找到更适合于自己生存的新空间.
最后,希望大家保持努力的同时能收获到自己的那一份幸运,欢迎大家关注、收藏,转发,最后再评论,我是番茄憨憨,哈哈哈哈哈!!!