客户端(安卓)面试,看这一篇就够了!
叠个甲:不是劝进客户端,客户端确实不如后端,但是既然找不到大厂后端选择走客户端这条路了,那也需要好好准备,剩下就看命了。
面试无非几种情况,一是零基础,二是有相关的实习经历,三是本身就是学安卓的(那也没必要看了相信你都已经滚瓜烂熟了)
首先是零基础,也就是别的方向(比如java后端)去转。因为以前安卓本身就是用java写的,后面才用kotlin写,并且两者是兼容的,会java的话上手kotlin很快。一般是找实习的时候居多,这种情况你的简历应该是不包含任何客户端相关的东西的,面试官默认你是一张白纸,这个时候是最容易找到客户端实习的,面试官会针对你简历去问,正常准备就行。一般就是问java+网络+操作系统+简历上的项目,mysql、redis、spring框架之类的东西因为客户端涉及不到所以不会问。(不排除问的可能,只能说概率非常小)
本文主要针对第二种情况,也就是有了客户端实习经历后,秋招打算继续找客户端的岗位,实习期间主要还是面向完成任务,很多理论是用不到的,但是有了实习经历后,秋招面试官就会去问你安卓相关的八股。一般就问实习+java/kotlin+网络+操作系统+安卓,简历上写的后端项目不会再问了。
我面了26场技术面试,其中问了安卓八股的有14场,发现问来问去就那么多的知识点。我室友每次在边上帮我记录面经,后面他说安卓的八股他都会了,下次也能去面面了。
非常高频!!!
四大组件:能说是哪四个就行,基本只问activity,另外三个几乎不问
activity的生命周期 7次
activity的启动模式 4次
安卓线程间通信方式(handler)6次
安卓进程间通信方式(binder)5次
view的绘制流程 4次
触摸事件的传递 4次
下面只问过一次的,很多是从上面的高频问题中引申出来的:
activityA启动后打开activityB,两个activity的状态经历了哪些周期?
可以在子线程里面刷新UI吗?如果我非要在子线程里刷新了UI呢?会怎么样?会抛出什么异常?
ANR是什么?ANR产生的根本原因是什么?多久会出现这个异常?所有的情况都是 5s 吗?Service里面也是5s吗?
application的oncreate和activity的oncreate有什么区别?
Ibinder了解吗?
一个点击事件点击结束后是怎么被销毁的?
looper的睡眠机制对应linux的哪个操作?
looper最多能开几个线程?
handler的一个postDelay()方法知道吗?
如果创建了两个handler,如何知道哪个消息对应哪个handler?
上下滑动事件和左右滑动事件的冲突如何处理?
recyclerView了解吗?它是如何复用视图的?
activity和fragment之间是如何进行通信的?
以上就是整个秋招面试过程中我被问到的所有关于安卓的问题,如果觉得对你有帮助的话,可以给我送个小花