一面 2021/9/24 约1h

1. 自我介绍
2. 项目相关
(团队人数 | 项目应用到的框架等 | 表设计)
3. Java中常用的集合类
(先说Collection和Map接口,再分别说子接口和实现类,以及大概的区别,没让细讲源码)
4. 有一组数据,需要按照顺序对它进行加密,如果用集合做的话你会选哪个集合?比如一个数组,其元素本身无序,每个元素是字母或者数字都行,对它从小到大进行排序,你会选哪个集合去存储?
(我当时好像选的TreeMap?忘记了...)
5. Java中线程同步的方案有哪些
(参考《深入理解Java虚拟机》第13章第2节,从“阻塞同步方案 | 非阻塞同步方案 | 无同步方案”三部分说明)
6. Lock接口的实现类
(参考《Java并发编程的艺术》第5章,Lock接口的实现基本都是通过聚合了一个同步器的子类来完成线程访问控制的,引出了队列同步器AQS,实现类讲了ReentrantLock和ReentrantReadWriteLock)
7. MySQL查询比较慢的话,通过什么方式来优化
(情况①:偶尔很慢,可能是数据库在查询脏页,或者没拿到锁
情况②:一直很慢,可能是没有索引,或者有索引但没走索引,或者表数据量太大需要分库分表)
8. http协议
(http是哪一层的协议,其传输层协议是什么,三次握手和四次挥手的完整过程)
9.算法题:lc726 原子的数量
(稍微变型,不必统计所有原子的数量,统计输入的目标原子的数量)
10. 反问部门和技术栈
其实是面试体验不太好的,不是面试官的面试过程有问题,是他没关消息提示,整个面试过程听了可能上百声“叮咚”的消息提示音,一开始没适应的时候会打断思路。最后的算法做的不咋地,给了大概20min,说了思路没全写完,面试官说思路应该可以,他还有下一场面试。这回算法拉胯了,以为凉了结果过了。

二面 2021/9/29 约80min
 

1. 自我介绍

2. 项目相关

3. Java中有个String类,如果我们自己写一个java.lang.String类,会出现问题吗

(参考《深入理解Java虚拟机》第7章 虚拟机类加载机制,主要讲了类加载器的种类和双亲委派模型)

4. Java里的Map有哪几种实现

(HashMap | TreeMap | HashTable | LinkedHashMap | ConcurrentHashMap)

5. TreeMap的使用场景,底层数据结构,红黑树的存取复杂度

6. LinkedHashMap的使用场景

(用LinkedHashMap实现lru,按插入顺序(默认) accessOrder = false | 按访问顺序 accessOrder = true,HashMap+双向 链表)

7. Java中有个volatile关键字用过吗,用volatile修饰的变量来记录访问次数,需要其他同步操作吗

(场景:单例模式等,参考《深入理解Java虚拟机》第12章12.3.3“对于volatile型变量的特殊规则”,从Java内存模型JMM的角度讲volatile,说明指令中的lock前缀和将esp寄存器的值+0这个空操作)

8. Java有哪些同步方案,如果不加锁呢,加锁会不会太重了

(参考《深入理解Java虚拟机》第13章第2节,从“阻塞同步方案 | 非阻塞同步方案 | 无同步方案”三部分说明,面试官提到加锁会不会太重的时候,我提了一下synchronized锁升级)

9. CAS的ABA问题是什么,要怎么解决

(参考《深入理解Java虚拟机》P477)

10. 有没有用过工具,怎么查看Java堆的统计信息

(参考《深入理解Java虚拟机》第4章,没用过工具,只说了常用了JVM参数)

11. 我们来问问网络吧,DNS是哪层的协议

12. tcp有个状态是Time_Wait,这个具体是在哪儿,作用是什么

13. get和post的区别,用get和post传输的时候有个编码,那个编码的作用是什么

(一开始没听懂问题,说的是Accept-Encoding,后来面试官说是想问http请求中特殊字符的转义)

14. 有没有面过别的公司 | 哪儿的人

15. 给了个C++的结构体,有char、int等3个属性,问占多少内存,换了个顺序,又问占多少内存

(这个不大会,有会的老哥欢迎评论)

16. 算法题:

  1. [算法1]:求最大长度的自然序子数组,输出长度和子数组下标(从1开始),不要求连续,自然序是指“123456...”,即3的后面必须是4,以此类推

如,3344567,输出应为4,[2,3,4,5],即数组的第2/3/5/6个元素“3456”

  2. [算法2]:二叉树的层序遍历(面试官:再写个常规的吧)

17. 做完题开始问数据库相关的,聚集索引和非聚集索引

18. 事务隔离级别

19. 怎么实现的可重复读

(主要从锁机制+MVCC的角度讲,详细说明了当前要访问的版本的事务id和ReadView中活跃事务id列表的关系,如果大于最大值怎么样,小于最小值怎么样,介于最大值最小值之间要怎么办)

20. 反问

问的内容比较多,算法题让写了两个,用面试官的话来说一个不大常规,一个常规题目,也可能是因为一面的算法拉胯了所以二面问了俩?算法题一边讲思路一边做的,都还算顺利。面试官很和善,很多问题之间都是有联系的,回答的时候没按八股文来,基本都是说自己的理解+书籍上的内容。面试结果很快就出了(大概当天或者第二天),效率很高,约了节后三面。

以上就是这两次字节番茄小说的面试经过,复盘完其实觉得自己还有很多不足的地方,  也需要抓紧时间恶补一下,搜遍全网  网罗了一批近年来大厂高频面试资料,先扎起我把这些资料放在下方,有需要的小伙伴可以自行获取一下,希望可以帮助你们拿到自己心仪的offer!!!冲冲冲!!!

public static void main(String[] args) {
           SuppressWarnings("resource")
           Scanner s=new Scanner(System.in);
         while(true){
             System.out.println("添加weixin:Mxy980811即可免费获取下方全部面试资料!!!  in,out,search,quit:");
           String temp=s.next();
}