前言
作为一个程序员,如果你在新知识、新技术面前仍一无所知,依然吃着十多年前的老本,那你在知识技术上肯定落伍,如果又未能进入管理层面,那你肯定就会被长江的后浪拍在沙滩上了。
而不少与时俱进、善于学习的程序员他们仍是行业的中坚力量。这只是说明当今世界靠一招鲜走遍天下,吃终身的时代已经过去了,一个人必须得活到老学到老才能行走于天下。
我在平时的工作之余也会翻一翻大厂的面试题,让自己时刻保持面试技能,同时也能了解大厂对技术的需求,以备不时之需,“生于忧患,死于安乐”,古人诚不欺我啊。
下面给大家分享一个我自己工作几年以来总结的系统性成长进阶路线,分享给大家做一个参考。
一面
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面的话就不列举啦,就是一贯的聊一些职业规划,了解一下你的性格特点之类的。