近期,霍格沃兹测试学院的@T同学面试了某知名互联网大厂测试开发岗位,面试过程中遇到不少令人头疼的题目,心态也随之起伏。虽然最终通过三面,拿下高薪Offer,但也直呼刺激。
本文是其复盘总结的部分面试真题,分享出来供各位测试小伙伴学习参考。看看下面这些题目,你可以回答出多少呢?
一面
面试官应该是团队的某位技术大佬,一脸理工男的严肃,令人感到鸭梨很大。
- 简单介绍一下自己;
- 自动化测试框架怎么去实现的?讲讲自动化性价比等一些业界常见问题;
- Java中的基类是什么?基类中常用的方法有哪些?(我提到了getClass(),所以面试官问getClass方法用来做什么?)
- Redis的数据类型有哪些?
- 了解Redis的数据持久化吗?
- SpringWeb的开发有了解吗?
- 多线程了解吗?讲解一下多线程常用的关键字;
- Hashmap的put方法具体是怎么实现的,讲讲过程?
- Hashmap是线程安全的吗?为什么不是线程安全的呢?
- 除了使用sychronized关键字来解决线程安全问题,还有其他什么关键字吗?
- 线程池中三个重要的参数是什么?
- 你知道有哪些索引?索引为什么会失效?
- 讲讲数据库事务的四大特性?
- 讲讲数据库的事务的隔离级别?
- 讲讲数据库的事务传播级别?
- 数据库SQL题目
- 算法题目
- 设计LRU,但题目太长看不懂,所以面试官换了一道简单一点的题目——设计LRU缓存结构。
语言:C、Python、C++、Javascript、Python3、Java、Go皆可。
- set(key,value):将记录(key,value)插入该结构 - get(key):返回key对应的value值 [要求]
- set和get方法的时间复杂度为O(1) - 某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的。
- 当缓存的大小超过K时,移除最不经常使用的记录,即set或get最久远的。
- 若opt=1,接下来两个整数x,y,表示set(x,y) - 若opt=2,接下来一个整数x,表示get(x),若x未出现过或已被移除,则返回-1
- 对于每个操作2,输出一个答案 [示例1] 输入 [[1,1,1],[1,2,2],[1,3,2],[2,1],[1,4,4],[2,2]],3 输出 [1,-1] 说明 - 第一次操作后:最常使用的记录为("1",1) - 第二次操作后:最常使用的记录为("2",2),("1",1)变为最不常用的
- 第三次操作后:最常使用的记录为("3",2),("1",1)还是最不常用的
- 第四次操作后:最常用的记录为("1",1),("2",2)变为最不常用的
- 第五次操作后:大小超过了3,所以移除此时最不常使用的记录("2",2),加入记录("4",4),并且为最常使用的记录,然后("3",2)变为最不常使用的记录
- 算法题目
- 入一个链表,反转链表后,输出新链表的表头。
二面
这次面试官气场相对亲切柔和,整体氛围比较轻松。
- 简单介绍一下自己?
- 你认为自动化测试是否有必要去做?自动化有什么意义?
- 项目中遇到过什么测试的难点吗,讲讲?
- 谈谈你理解的测试开发是什么?
- 设计微信朋友圈点赞和评论用例
- 你平常如何去学习的?
- 你未来有什么目标或者打算吗?
- 你对团队有怎样的期望呢?
- 你最晚多久能够入职呢?
- 你目前手头上有其他家的Offer吗?为什么来这里?
- 你有什么想问我的?
三面
还是技术面,不少问题仍然很有挑战,原本放松的心一下子又紧张起来。…。