今年9月份的时候,以前社团学长知道我非常想进bilibili,特意告诉我B站有内推名额,问我要不要来试一下,我一口直接答应,然后把手上的工作辞掉了,破釜沉舟一把,宅家里半个月复习。将学工作3年的积累经验都系统的归纳整理了起来。再过一篇,然后就是刷题,找朋友模拟面试场景练习等等等。
世间所有的付出终是有回报的,努力的耕耘,也没有被辜负。从离职到入职,一个月时间,顺利的入职了哔哩哔哩,也是要感谢网友们提供的宝贵经验,所以整理了一下,把我的面经整理一下也分享出来给大家。
一面
1.自我介绍
2.应用启动流程,activity 启动流程,为什么要每个应用有一个自己的虚拟机,这个虚拟机和JVM的关系。
3.hashmap的基本原理
4.来说一说,在5.0以上和4.0加载dex时的方式有什么区别?
5.说一下你了解的Android虚拟机有哪些?
6.这两个虚拟机有什么区别吗?(上题说了ART虚拟机,dalvik虚拟机)
7.Handler持有Activity的引用会造成内存泄漏,那么如何避免?
8.ANR 的原理说一说
9.三次握手,四次挥手简单说下
10.okHttp的原理了解吗?使用时是如何对它封装的?
11.http和https什么区别?
12.算法题:双链表反转
二面
1.Acitivty的四种启动模式与特点。
2.广播使用的方式和场景以及广播的几种分类。
3.FrameLayout 、 LinearLayout 、 RelativeLayout 各自特点及绘制效率对比。
4.Android中的MVC、MVP模式。
5.App的启动过程。
6.Android怎么加速启动Activity。
7.Bitmap的四种属性,如何加载大图(inJustDecodeBounds)。
8.Touch事件分发机制和冲突处理。
9.Android IPC:Binder原理。
10.Class文件结构(常量池)。
11.Java内存模型结构(主内存和工作内存)及操作,原子性可见性和有序性等。
12.启动线程和安全的终止线程。(interrupt)
13.TCP可靠传输原理实现(滑动窗口)。
14.Cookie与Session的作用和原理。
15.Https加密原理。
三面
1、TCP/UDP的区别,有看过具体报文的信息吗
2、你觉得开发一个SDK,需要注意哪些地方,有没有做过SDK性能测试
3、有了解过音视频的编解码吗
4、开放题:让你加载一个200M左右的GIF,如何实现及优化,不可降低画质
5、反问环节
HR面的话就不列举啦,就是一贯的聊一些职业规划,了解一下你的性格特点之类的。
学习资源整理:
在当下这个碎片化信息环境的时代,很多资源都可以在网络上找到,只取决于你愿不愿意找或是找的方法对不对。
很多朋友不是没有资料,大多都是有几十上百个G,但是杂乱无章,不知道怎么看从哪看起,甚至是看后就忘,基本都放在盘里吃灰
如果大家觉得自己在网上找的资料非常杂乱、不成体系的话,可以来参考我的学习资料和学习路线图,比较系统,我平常自己也会经常研读。
只有系统,有方向的学习,才能在段时间内迅速提高自己的技术。