总共有两面
一面:
1、自我介绍一下
2、项目做的目的
3、滴滴白盒测试的分支覆盖率等要求有哪些
4、测试平台的开发中遇到了什么问题,印象最深的是什么
以上的问题总共花了15分钟
5、Exception和Error的区别
6、未检查异常为什么不需要捕获
7、throw和throws有什么区别,throw可以抛出error吗
throws作为方法签名的一部分,会抛出代码里没有处理的异常
throw抛出实例化的对象
throw可以抛出throwable的所有子类,当然包括error
8、知道threadLocal吗
9、synchronized和lock的区别,是否可重入?代码里有synchronized(this)会发生什么,它的原理,提示:java对象,头信息?wait和sleep的区别?
10、有遇到过什么线程安全的问题吗?线程安全是什么意思?
11、hashmap为什么是线程不安全的?concurrenthashmap为什么是线程安全的?
12、hashcode的返回值是什么?hashcode和equals的作用是什么?
13、有看过红黑树的原理吗?
14、有遇到过死锁问题吗?
15、java是值传递还是引用传递?分析一下。如果是string,传什么。
16、设计模式有了解嘛,写两个单例模式不要枚举、要线程安全。
17、java有什么引用类型,各自在gc上的体现是什么。为什么会有软、弱引用?
强、软、弱、虚
软引用可做高速缓存
18、gc算法了解哪些,对应的垃圾收集器有什么?CMS的缺点是什么,可以解决吗?
parnew是serial的并行版本和serial一样,新生代复制、老年代标记整理
复制-serial
标记清除-cms
标记整理-g1、serial old
cms内存对象是连续分配的,产生内存碎片,解决这个需要设置参数,gc后去整理。不过影响性能,
所以直接用g1。
截止目前共用时45分钟
19、写一个生产者消费者算法
20、先说两个最熟悉的排序算法的时间复杂度和算法稳定性。他们的思路分别是什么。写一个归并排序。
21、写一个,判断一个数奇偶性
位运算比较快
二面:
1、如何设计测试平台,从哪几个方面考虑?
可以检测代码规范、接口功能
2、白盒测试主要是做什么的?
白盒测试是一种测试方法,而单元测试是测试过程
3、用过java的哪些容器,分别描述一下?
4、list的查找复杂度是多少?hashset的添加复杂度是多少?
5、实现一个LRU的cache,要用哪种容器?
ConcurrentLinkedHashMap
以上的问题总共用了19分钟
6、写代码,树的层次遍历
7、写代码,合并两个有序链表