今天整理的面试题可以保障通过技术面试,但是经历的项目,对测试工作的感觉和理解才是通往大厂的门票!
01 一面题目
1、string str = new string(“abc”);会建几个对象?string str1 = “abc”,str == str1?//false;
2、你用过一些什么数据结构?(这是一个套路)
3、你说说 arraylist 和 linkedlist 的区别;
4、说说 hashmap 的底层实现,扩容机制,线程安全问题;(说到红黑树,为什么用红黑树代替而不是二叉搜索树?)
5、说说 jvm 的内存模型,紧接着引用,紧接着垃圾回收算法,具体讲一下分代算法的实现;
6、线程的状态;调用 start()会发生什么,会执行什么方法;
7、了解线程池吗?为什么引入线程池,有哪些参数?
8、synchronized 修饰实例方法和静态方法的区别;volatile 关键字了解吗?
9、spring 用过那些注解?依赖注入怎么实现的?aop 怎么实现的?(代理);aop 中用的是哪种代理?
10、算法题
(1)遍历一次,找到单链表最中间的节点(偶数长度返回其中一个即可);
(2)对一亿个不重复的 int 进行排序,但是内存只有 200m(桶排序);
(3)使用 pattern,对"abbad","北京 杭州 杭州 北京 上海" 进行校验
(4) 一个小球从 200 米高处落地,每次谈起的举例是上次的一半,请问在 n 此谈起后经 过了多少距离?
(5) 纯算法题。25 匹马,5 个赛道,没有计时器,请问最低多少次可以找出跑得最快的 5 匹马?
11、订单下单场景测试用例设计
02 二面题目
1、问介绍一下自己,以及技术栈
2、redis 基础数据结构有哪些
3、mq 的作用
4、如何解决迸发操作,例如同一账号同一时间不同设备同时点击领取了一张优惠券
5、自动化日常如何执行的。一次多长时间如何缩短时间
6、jmeter 压测如何保障 tps 始终在一个数值
7、压测内存过高如何解决
8、spring 中怎么运用数据库?2、spring ioc 的理解?3、spring bean 的理解和使用?4、支付回调延迟时,有什么方案可以去做监控?从代码上面怎么去实现?
9、索引数据结构介绍,和 b 树区别
10、什么情况下可以不回表查询
11、mysql 事务隔离级别
12、数据库和缓存的数据一致性怎么保证
13、redis 为什么是单线程的
14、redis 持久化策略
15、redis 集群模式
16、哨兵挂了怎么办(所以哨兵应该也是集群)
17、redis 集群选举 master 过程
18、mq 是怎么防止消息丢失的
19、介绍一下线程池,线程池的线程数量取值应该怎么取,有使用过哪些线程池
20、如果使用无界等待队列会有什么问题
21、介绍一下锁
22、介绍一下锁升级过程
23、介绍一下 reentrantlock 底层实现,介绍一下
24、怎么查找一个文件里的某一个字符串的位置
25、hashmap,源码级别,为什么线程不安全
26、死锁
27、synchronized 和 reentrantlock 锁机制,怎么判断重入锁的,会不会是死锁?
28、进程和线程的区别?
29、进程之间如何保证同步?
30、分布式锁
31、对象 gc
31、垃圾回收算法
32、jvm 参数
33、oom 出现的有哪些场景?为什么会发生?
34、jvm 内存结构说下吧
35、堆和栈的共享问题?
36、有比较过 http 和 rpc 吗?
37、httpclient 你说说里面的具体实现吧?(涉及了哪些东西)
38、springmvc 工作原理?
39、session cookie 区别?
40、浅拷贝,深拷贝
41、wait 和 sleep 的区别
42、线程池参数,整个流程描述
43、cas 和 aqs 是啥,原理
44、threadlocal 原理,注意事项,参数传递
45、servlet 是否线程安全,如何改造
46、jvm 问题工具,jps,jinfo,jmap
47、有了解过 jvm 调优么?用过什么命令? 一般怎么调优?
48、你在项目中一般怎么调优 jvm 的呢?