一,技术面
不用多说,技术是至关重要的一面。
1.说一声你对handler的理解
2.安卓线程间通信有哪几种方式
3.能在子线程创建handler嘛?有什么要注意的吗?
4.Looper能创建多个实例嘛?能自己创建Looper实例嘛?
5.在子线程创建的handler能与主线程通信嘛?如果能怎么实现。
6.handler,asyncTask有什么区别?
7.说一下为什么要用线程池?线程池的几个参数,以及它是怎么工作的?核心线程数一般有多少?
8.屏幕适配方式
9.各大图片框架之间的区别,如果让你自己实现,怎么实现?
10.okhttp的源码了解过吗?(回“能”的话,下一个问题不用我说了吧(๑˙ー˙๑))
11.二叉树排序方式
12.冒泡排序,选择排序,快速排序
13.二分查找(手写)
14.Activity启动方式和使用场景
15.进程间通信方式
16.kotlin有什么优点,或者说你在使用它之前做了什么考虑?
17.系统的启动流程,从桌面点击图标开始。
18.自定义view的实现,以及注意事项
view的绘制流程
19.事件分发
20.安卓的动画有哪几类,有什么区别
21.反射能反射私有方法以及静态方法嘛?
22.tcp,udp的区别
23.为什么要三次握手
24.tcp包过大怎么办?
25.内存泄露(怎么定位问题所在),性能优化
26.MVC和MVP的区别,为什么要使用MVP?MVP有什么缺点嘛?
27.Eventbus的原理
28.你知道哪些设计模式?
29.单例有哪几种?单例为什么要双重检查,优点? 那么双重检查就绝对是安全的嘛?
30.既然双重检查还不是绝对安全的,那么有没有办法完善呢?(我回答静态内部类,利用类的加载过程安全的) 如果我非要用双重检查的方式,有没有办法?
31.多个进程,会创建几个application实例?(有的问:oncreate会走几次)
32.anr怎么定位
33.LRUCache原理
34.网络传输你们是怎么加密的?
35.Tinker热修复的原理
36.介绍一下什么是NDK
37.如何实现一个bug统计框架(如bugly,友盟)
38.混淆的注意事项(反射不能混淆等),第三方框架能混淆嘛?
39.Linux的基本命令
40.apk瘦身技巧
41.webp使用的注意事项
42.断点续传实现原理。怎么从断点处继续下载?下载完怎么确保文件是正确的?
43.卡槽函数,EIT造型,IOC(我在简历上写了……)
44.黄油刀(butterknife)实现原理
45.rxjava是如何实现线程切换的
46.JVM的相关知识
二,总监面
一般来说,总监比较少面技术,当然我说的是安卓,可能大部分总监不懂安卓吧!所以他们更倾向于面你的能力,学习能力,解决问题的能力。
0.自我介绍
1.项目中有没有遇到什么难题?或者你认为比较棘手的问题?
2.如果你项目中遇到一个从来没遇见过的问题,你会怎么办?
3.假如有个流水线,有10个环节,到了最后一个环节出问题了,你怎么快速定位问题所在?(可从二分法回答)
4.有个一段音频从后台到安卓端播放,突然发现安卓端播放丢帧了,你怎么定位问题所在(排除法,对比法,参与对象等入手)
5.职业规划
6.算法(基本要求:冒泡,选择,快速),数据结构
7.有看过安卓相关的书籍嘛
8.自己的优缺点…
三,人事面
一般能到人事基本上稳了…除非你工资远远超出他们预算…
0.自我介绍
1.倘若你到现场为客服调试,客服提了一些不合理的需求,你怎么回他?(考你随机应变能力)
2.离职原因(必问)
3.对我们有什么要了解的嘛?(面之前最好了解一下他们的产品,这时候就能用上。)
4.上一家公司有人让你很尊敬的人吗?理由
5.对加班的看法(有些是真加班,有些是看你愿不愿意为公司付出而已…)
6.把我当成一个用户,不懂什么技术,给我介绍一下你们的产品
7.手上有没有其他公司offer
8.选择公司的时候,你更看重什么?
9.剩下的就是调查户口了…