作者:小菜


前言:

渣本毕业,工作已经有快3年了,从高中就开始玩小破站。无论是学习还是日常放松都是在b站。大学主学的计算机应用技术专业,所以,入职bilibili是我大学时期给自己定的小目标。

在学校,专业学的算中上的水平,课本知识和老师讲的东西基本消化的八九不离十,也自己动手写过属于自己小项目APP,参与过一些社团协会和技能竞赛,与学长学姐一起共同开发的项目。

刚毕业时,b站也有校招,满腔热血的参加了,准备了好久,结果还是没有被录用。当时挺失落,但是也并没有放弃我进B站工作的梦想。

Android开发菜鸟完成了三年前留下的遗憾,Bilibili我来了!!_编程语言

今年9月份的时候,以前社团学长知道我非常想进bilibili,特意告诉我B站有内推名额,问我要不要来试一下,我一口直接答应,然后把手上的工作辞掉了,破釜沉舟一把,宅家里半个月复习。将学工作3年的积累经验都系统的归纳整理了起来。再过一篇,然后就是刷题,找朋友模拟面试场景练习等等等。

世间所有的付出终是有回报的,努力的耕耘,也没有被辜负。从离职到入职,一个月时间,顺利的入职了哔哩哔哩,也是要感谢网友们提供的宝贵经验,所以整理了一下,把我的面经整理一下也分享出来给大家。

Android开发菜鸟完成了三年前留下的遗憾,Bilibili我来了!!_android_02

一面

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面的话就不列举啦,就是一贯的聊一些职业规划,了解一下你的性格特点之类的。

Android开发菜鸟完成了三年前留下的遗憾,Bilibili我来了!!_安卓_03