这些面试问题在上一篇Android面试记录中都有写到,这里主要是按照公司来写的。还不太会用markdown的编辑器,排版不太好看 (˘•ω•˘)
另外,可以看看《Android开发探索》,这本书挺好的!(^▽ ^)
牛咖
产品类型:社交
备注:有点像QQ的扩列
- String 和equal的考查
String s1 = "abc";
String s2 = new String("abc");
Log.e("MainActivity", "s1==abc:" + (s1 == "abc"));//true
Log.e("MainActivity", "s1==s2:" + (s1 == s2));//false
Log.e("MainActivity", "s1==s2:" + (s2 == "abc"));//false
Integer与in,包装类的考查
int x1=10;
Integer x2=1;
x1==x2;//true
//Integer和int比较会自动解包装
Integer a=new Integer(100);
Integer b =new Integer(100);
a==b;//false
//Integer的对象,都是new 出来的,在堆中的地址不一样,比较为false
Integer a=new Integer(100);
Integer b=100;
a==b;//false
//a是new出来的,指向堆中的变量,b直接赋值,指向常量池中的地址,两个在内存中的地址不一样
Integer a=100;
Integer b=100;
a==b;//true
//如果为128为false,在常量池中,int类型只缓存了-128~127.其他的数值会重新创建。
- Java内存泄漏本质
- Java内存分配
- JVM 机制
- GC操作(可达性分析)
- startActivity同步还是异步,为什么?
- 四种启动模式,问题:A中开启B,for循环10次,B是singleTop,产生几个B的实例
- startActivityForResult开启四种不同启动模式的Activity,对于onActivityResult方法有什么影响
- view的绘制流程,背景绘制在什么方法(drawBackground)
// Step 1, draw the background, if needed
drawBackground(canvas)
// Step 3, draw the content
onDraw(canvas);
// Step 4, draw the children
dispatchDraw(canvas);
// Step 6, draw decorations (foreground, scrollbars)
onDrawForeground(canvas);
- Activity启动过程
- EventBus原理
- RxJava2原理
德国勃林格殷格翰
产品类型:医药类,从无到有开发
备注:团队里的其他成员也是新招的,对英语要求比较高
- Java的引用类型有哪些?
- Java JVM虚拟机和内存分配?
- GC操作原理
- 观察者模式
- 手写单例模式
- EventBus原理,设计模式是什么?如何通过注解实现消息的发送
- 遇到过哪些内存泄露,是如何解决的?
- 自定义View的测量模式
- 事件分发原理
- Retrofit原理
- OkHttp原理
- 日常开发中是如何协作沟通的?
- 有没有什么博客或者开源项目?
一面含有英文的自我介绍和简单项目介绍
二面是德国的同事面试,他们是java的,所以会侧重问这些
金宝贝
产品类型:金宝贝早教
备注:包含音视频的教育、产品玩具购买,涉及支付
笔试
- Handler原理
- 事件分发
- http和https的区别
- Activity生命周期
面试
- 内存泄漏是如何处理的?
- 面向对象特性与三大特点
- xml,json,protobuf优缺点(因为我的项目中有用到protobuf)
- 开源框架原理(RxJava,EventBus)
- 如何优化WebView加载H5的速度
- 分模块开发
- mvp,mvvm
埃森哲(中国)
客户需求产品:蓝牙音箱
一面:电话面试
- Activity启动过程
- Laucher给AMS发送,ASM给APP 发送消息是如何通信
- 进程间哪些通信方式
- bundle可以有哪些数据类型
- 为什么要进行序列化才能传输
- 除了serializable和parcelable,还有其他的序列化方式么
- service的生命周期
- 如何HomeAPP后,Service可以继续下载文件
- Handler中的Loop的死循环为什么不会阻塞UI线程
- 子线程不能更新UI么
- 自定义View?onMeasure中的测量模式有哪些?
- EventBus原理
- RxJava如何进行线程调度
- RxJava用了哪些方法
- 解决过哪些内存泄漏
- 过度绘制是如何优化的
- 内存如何优化
- Java集合有哪些?有那些集合是线程安全的?
- LinkedList和ArrayList区别?如何在链表中插入一个数据
- 二叉树的遍历
前序:根,左,右
中序:左,根,右
后序:左,右,根
- 有哪些排序算法
- 如何转换一个数组
- 抽象类和接口有什么区别(jdk1.9中,接口可以有抽象方法)
- 有哪些设计模式?建造者模式Builder和抽象工厂模式有什么区别?
- 线程池的原理是什么?构造函数中的参数分别有什么作用?
- 开发中遇到的问题,如何解决的?
- 平常如何学习?有没有博客,开源项目
二面:电话会议面试
- Binder原理
- Retrofit原理(动态代理)
- RxJava原理
- Activity的启动模式
- 点击app图标开始的一个启动原理
- 内存泄漏优化,过度绘制优化
- 有没有了解Android新特性
- Mvvm优缺点
- kotlin接触过嘛?
- 日常如何学习
三面:现场客户面试
这个公司做的是项目外包,甲方乙方的这种,所以有个客户面试,也是技术面试。不过后来三面时间要根据客户来安排,我入职时间到了,我就去入职其他公司了。
银生宝电子支付
产品类型:支付类
笔试
- 什么是注解?什么是元注解?元注解的作用是什么?
- 动画有哪些类型,属性动画的原理?
- ANR是什么,如何定位和解决
- Retrofit原理
- ButterKnife原理
面试
- Handler原理?
- Builder模式和普通方法比较有什么好处?
- LeakCanary原理?
- Handler原理?
- Activity开启两个Handler,如何保证Handler发送的消息不会被其他的Handler消息接收?
- 不同线程的Hanlder发送的消息,Looper是如何确定是哪个线程?
- handler的sendMessage和post有什么区别?
- IdleHandler
- ThreadLocal
- RxJava的方法,flatMap,先获取token,再去请求数据
- 本地广播和全局广播的优缺点
- 加密与解密
- http和https有什么区别?ca证书包含什么内容
- mvvm,kotlin
- 如何从master拉取develop分支,git命令是什么
京东
(顺序记不清楚了,大概就是这些问题了)
电话面试
- 原生调用H5的几种方式
- H5调用原生的几种方式
- Handler原理?子线程A,如何给子线程B发送消息(使用带有Looper的构造方法)
- HashMap原理?HashMap是线程安全的么?
- HashMap和HashTable有什么区别?
- ArrayList和LinkedList区别?LinkedList是如何插入一个数据的?LinkedList为什么查询慢?
- RxJava原理,线程调度是如何实现的?
- 事件分发原理?长按事件是如何分发的?如果一个View,focus为false或者enable为false的两种情况,是怎么分发的?
- xml与json解析优缺点
现场面试
笔试
- 一张答题纸,上面好像是10道题,前6题比较简单,想不起来了
- 第7道选择题是数列,具体是,1,2,5,29().括号内的数字从四个选项中选择;
注:第三个数字是前两个数字的平方之和!选择866! - 第8题是算法题:手写二分法排序;
- 第9题是自定义view:写一个用于九宫格的解锁屏的功能的view
- 第10题?忘记了…关于什么数据筛选的…
面试
- hashpMap的原理?为什么初始容量值是16?
- 接触过哪些动画?属性动画的原理?动画的插值器和估值器?
- linkedList和arrayList有什么区别?在末尾插入数据的效率是一样的么?
- 自定义view的测量模式有哪些?
- 设计模式用过哪些?写出单例模式
时间间隔太久,想不起来了,最后一个面试的公司…(T ^ T)