字节是2019年8月初get意向书的,oppo是7月中旬get offer的,美团在10月14日getoffer,三者均为提前批,下面是其中的一些问题(后来整理的,可能会有所遗漏),但希望对于校招该岗位的同学有所帮助。安卓开发交流群:651325026,欢迎大家入群交流。
字节一面
1.自己简单的自我介绍:
2.项目上的问题:
2.1.介绍下自己的亮点项目
3.有过Android开发经验么?用过什么SDK?
4.Android线程之间的通信?
5.Handler的sendMessage发送到那里去?解决了什么问题?Looper会停止么?如何进行阻塞的?如何进行退出的?
6.Handler是如何引起内存泄漏的?如何解决?
7.什么是内存泄漏?Static修饰的存储于虚拟机的哪里?
8.Java当中的引用类型:
9.如何判断对象已经死了?可达性分析算法到不了的是不是真的已经死了?
10.垃圾回收算法有哪些?
11.有一对兔子,一个月长成成熟兔子,一个月生小兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?为什么是斐波那契数列?
字节二面
1.自我介绍
2.项目
2.1.与Anroid项目相关的项目,是不是所有的手机都能支持?做到的精度是多少?
2.2.Android防护介绍,基于Smali指令解析方式的格式?攻击实验都有哪些?记得一定要说性能方面的影响。
2.3.基于图网络的程序优化
2.4.蓝牙防丢器
3.Android框架?
4.了解四大组件,熟悉那些?
5.多线程这块?线程交互。
6.接触了哪些新技术?
7.职业规划?还有是否有准备其他公司的面试?
8.可以问我一个问题?
字节三面
1.自我介绍
2.ActivityManager
3.了解四大组件
4.Activity的生命周期及什么东西对生命周期进行管理?
5.进程之间的通信以及优缺点。Messenger的缺点,Binder的好处。
6.View的绘制,有哪些layout。
7.Dex层和So层的加固方案,优缺点。Upx最外层加了一段什么代码?
8.看过那些源码?
9.手撕代码:37894,交换两位使得输出结果最大。
美团一面
Java基础:
(1)自我介绍
(2)static关键字的理解
2.1.static修饰的变量,和普通成员变量有什么区别
2.2.除了变量、方法、代码块还可以修饰别的东西么?
2.3为什么使用内部类不会引起内存泄漏?
2.4.内部类的分类。
(3)Java面向对象的设计模式。
3.1.设计模式遵循面向对象的基本原则?
3.2.单例模式用了什么写法?你觉得哪种好?
(4)抽象类和接口的区别:
(5)final关键字的理解
(6)Java里面开启新线程都会有哪些方法?
(7)线程池
(8)线程的状态
8.1.wait是谁的方法?
8.2.wait之后的状态
(9)List有哪些实现?
9.1.实现的原理
9.2.vector为什么可以保证线程安全。
9.3.有什么方法可以将ArrayList和LinkedList变为线程安全的?
(10)Activty的生命周期
10.1.如果当前处于Activiy A,A启动B,回调的顺序?
10.2.onPause和onStop有啥区别?
10.3.如果A启动的是Dialog。
10.4.Activity的启动方式
10.5.Activity处于SingleTop时,A启动A,传递的参数:
(11)Service
11.1.Service当中可以随意进行耗时操作么?
11.2.Service是在那个线程是处理的?
11.3.IntentService?
(12)Handler
12.1.Handler主要是用来干啥的?
12.2.一个线程中有几个Handelr?有几个Looper?
12.3.非主线程的子线程里可以创建Handler么?
(13)自定义View
(14)Touch事件的传递机制
14.1. onInterceptTouchEvent的作用:
14.2.如果是UP、MOVE的话会向下传递么?
(15)用过网络相关的么?OkHttp的实现原理?
(16)你在访问一个网站的时候,发生了什么,涉及到什么协议,讲传输层里的。
16.1.Http成功响应的状态码
16.2.get/post的区别
(17)Http和Https的不同之处。
(18)二叉树的删除节点
(19)常用的排序算法有哪些?
19.1.快排的思路
19.2.时间复杂度和稳定性
美团二面
(1)自我介绍
(2)Android App项目是怎么做的?如果是Dex编译成C,执行的话?详细转换为C的过程?你负责了哪些部分?做的过程中有什么问题?有测过效率么?存在兼容性的问题?So混淆是什么做的?
(3)超声波手势识别的项目?
(4)自定义View?
(5)Handler的机制?
5.1.Handler是在多线程之间通信的,他是怎么保证消息同步的?
5.2.子线程可以创建Handler么?
5.3.Looper是死循环,为什么主线程不阻塞?
(6)进程间通信的方式?
6.1.Binder机制的优势或者其他:
(7)抽象类和接口的区别:
(8)Java控制线程同步有哪些方法
8.1.Sychnoized修饰的对象有哪些?
8.2.Sychonized修饰代码块和修饰的方法有什么区别?
8.3.修饰普通方法和修饰一个静态的方法的区别?
(9)JVM的垃圾回收算法
9.1.可达性分析算法?
9.2.GC Roots有哪些?
9.3.Java当中的引用类型
(10)Http和Https
10.1.SSL和TLS是在哪一层的?
10.2.Https具体做了哪些操作?
10.3.秘钥的形成过程?
(11)设计模式
11.1.单例模式的应用场景:
11.2.单例模式为什么会被初始化一次?
美团三面
(1)加固的项目?OLLVM是开源的么?上线效果怎么样?动态脱壳会有效么?方法的兼容性怎样?上线了么?基于图网络的程序优化和App有关系么?有了解别的企业怎么做?有检测反外挂这种么?偏安全类的开发感兴趣么?
(2)遇到的挑战?项目的亮点?
(3)Looper.
3.1.是一个消息循环,为什么不会卡住?
3.2.会不会很耗电?
(4)多进程通信
4.1.都有什么多进程通信?各自的优势?
4.2.Binder原理
(5)业务开发,你的项目有哪些?商业级别的有么?
oppo一面
1.你要面的是Android开发工程师,那么Android开发主要是做什么的?
2.你的问题是什么?
3.Java中的难点?
4.Java当中遇到的锁?
5.线程的了解?线程的创建?线程的切换?AsyncTask什么时候是在工作线程?什么时候是在主线程?
6.Violate关键字和变量不可见性。
7.Android SDK是个啥?如何开发?SDK如何使用?
8.项目上的问题?
oppo二面
1.项目介绍
2.Android虚拟机允许的最大内存
3.职业规划
4.Activity和Service之间的交互
5.Bundle的最大限制,Bundle有什么要求?
6.OOM及其解决方案
7.BroadCastReceiver有几种?开机启动的广播是什么广播?
8.干过什么学生工作么?
9.Java虚拟机的最大内存是多少?
10.对导师专利一作是怎么看的?
11.可以问我一个问题?
安卓开发交流群:651325026,欢迎大家入群交流。如有帮助,麻烦点个赞或者关注~