发面经攒人品,虎牙Android岗一二面
虎牙直播一面(45分钟):
0、设计模式的规则。
单一功能、面向接口而不是面向实现、接口隔离、里式替换(父类子类)、开闭原则、迪米特法则(高内聚低耦合)
https://www.cnblogs.com/dolphin0520/p/3919839.html
1、找到无序数组中第n大的数。说的是快排的思想。
2、两根不均匀的绳子,一根烧完要1小时,表示出半小时。一根绳子,表示15分钟。
3、Object类方法,详细说说equals和hashCode。
4、Java集合类,HashMap、ArrayList、LinkedList。
5、Java线程安全手段。
6、volatile作用。线程可见以及禁止重排。单例模式中INSTANCE使用volatile修饰的作用?
8、GC,GC Root。
9、EventBus。
虎牙直播二面(30分钟):
0、自我介绍。
1、JMM。方法中创建对象是在私有内存还是公有内存中。这个没太明白……最后反问面试官也说我这块答的不好。
2、handler机制,为什么需要handler。那时候答了个线程间通信,但是查了一下---主线程无法进行时间比较繁长的任务,所以需要子线程进行处理,然而子线程无法进行UI的界面更新,所以我们需要使用handler来传递消息给主线程,让其完成UI的更新。但是感觉mH的作用不是这样的吧……不清楚希望有大神解答一下
3、HashMap底层,红黑树作用。
4、volatile作用。单例模式中双重锁判断的两次判断的作用。
5、TCP三次握手,为什么不能两次,为什么不需要四次。TCP保证数据正确性的方法,我答的是滑动窗口,因为滑动窗口维护的是流的数据结构。
6、实习相关,日常学习相关,现有offer情况……只能羞愧地说没有offer
0、设计模式的规则。
单一功能、面向接口而不是面向实现、接口隔离、里式替换(父类子类)、开闭原则、迪米特法则(高内聚低耦合)
https://www.cnblogs.com/dolphin0520/p/3919839.html
1、找到无序数组中第n大的数。说的是快排的思想。
2、两根不均匀的绳子,一根烧完要1小时,表示出半小时。一根绳子,表示15分钟。
3、Object类方法,详细说说equals和hashCode。
4、Java集合类,HashMap、ArrayList、LinkedList。
5、Java线程安全手段。
6、volatile作用。线程可见以及禁止重排。单例模式中INSTANCE使用volatile修饰的作用?
创建对象分为几个步骤:创建索引、开辟内存、初始化内存、索引指向内存。如果指令重排之后,先使索引指向内存,再初始化内存就会有问题。所以使用volatile禁止指令重排。
这块没答好,回去补了一下《Java并发编程的艺术》
7、OOM、内存泄露,Android中具体场景。Handler持有Activity的泄露链条。8、GC,GC Root。
9、EventBus。
10、网络,三次握手四次挥手、POST、GET区别。
11、Error和Exception的区别,常见RunTimeException。
12、项目实习经历相关。 13、反问。
一面面完还是很有底的,因为直接问了面试官我过没过,他说应该过了。
虎牙直播二面(30分钟):
0、自我介绍。
1、JMM。方法中创建对象是在私有内存还是公有内存中。这个没太明白……最后反问面试官也说我这块答的不好。
2、handler机制,为什么需要handler。那时候答了个线程间通信,但是查了一下---主线程无法进行时间比较繁长的任务,所以需要子线程进行处理,然而子线程无法进行UI的界面更新,所以我们需要使用handler来传递消息给主线程,让其完成UI的更新。但是感觉mH的作用不是这样的吧……不清楚希望有大神解答一下
3、HashMap底层,红黑树作用。
4、volatile作用。单例模式中双重锁判断的两次判断的作用。
5、TCP三次握手,为什么不能两次,为什么不需要四次。TCP保证数据正确性的方法,我答的是滑动窗口,因为滑动窗口维护的是流的数据结构。
6、实习相关,日常学习相关,现有offer情况……只能羞愧地说没有offer
7、反问。
二面面完不是很有底,因为JMM答得不好,要恶补一下了,而且没有问算法,所以很虚……
感觉一面比较偏向基础,面试官没有特别多的开放性的题目或者拓展。到了二面面试官就有一些开放性的题目,比如如果让你实现HashMap你怎么实现、还有就是会顺着你的回答继续深挖下去。
#虎牙直播##校招##安卓工程师##面经#