字节是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,欢迎大家入群交流。如有帮助,麻烦点个赞或者关注~