前言
项目方面参考意义不大,所有问题均未涉及
笔者技术水平有限,可能面试难度较低,如果对您没有帮助,请见谅
2次HR面就不放了,看到大家的面经都没谈到HR面,担心写出来可能会承担不必要的风险。
看完可关注: bestsort
感谢 CBU 和 CRO 的所有面试官, 特别是CBU一面的小姐姐, 在我尚未经历几次面试的时候给了我特别多后续准备和发展的建议, 也感谢两位内推人的积极跟进~
CBU
一面2.20(46min)
1.项目相关介绍,没太大参考性就不写了~
2.String 为什么不可变, 处于什么考虑
3.String s1="abc", 这一语句执行后数据在Java中是如何存储的
4.String s1 = "abc", String s2 = "ab"+"c", 创建了几个对象
5.HashMap和ConcurrentHashMap简单讲一下(聊了hash、数据结构、扩容、线程安全性、不同版本比较)
6.红黑树、B+树
7.多线程如何实现对线程间共享内存的保护
8.Java内存模型
9.volitail如何保证可见性
10.了解哪些设计模式
11.模板方法和代理模式的比较、适用场景
12.有没有尝试过JVM调优、dump内存
二面3.18(28min)
1.多线程的几种实现方式介绍一下
2.运行时异常和一般异常的区别
3.HashMap、ConcurrentHashMap
4.HTTP、HTTPS介绍一下
5.UDP、TCP介绍一下
6.多态体现在哪些地方
7.堆排序、归并的原理
8.代理模式,聊了聊JDK代理的源码
9.项目相关
10.看过哪些项目的源码
11.最近在看什么技术类的书,收获。聊了聊书上的redis相关内容
12.一面中回答最不好的问题,现在怎么去解决。
BU笔试
给 n 个字符串,格式类似 “stringA, stringB”,表示这两个字符串之间有某种关系,关系是可以传递的,最后给 m 个询问 “stringA? stringB”,让判断 stringA 是否和 stringB 有关系。也就是说,如果 a 和 b 有关系,b 和 c 有关系的话,那 a 和 c 也是有关系的。
四面4.2(36min)
1.项目相关
2.觉得知乎哪个地方实现最复杂
3.知乎的关注列表在数据库层面如何实现
4.上面三个题30分钟,后续就是谈人生了
五面4.7(22min)
1.Redis I/O模型、数据结构
2.synchronized 和 lock 的比较
3.线程状态,状态之间的切换、生命周期
4.等待和阻塞的区别
5.TCP如何保证消息的可靠传输
6.数据库的索引机制。
7.最左匹配,结合B+树的实现和查询机制聊了聊
8.缓存雪崩
9.三种限流算法
交叉面4.8(30min)
1.Java内存区域划分
2.ConcurrentHashmap 扩容
3.CAS
4.敏感词过滤,时间、空间复杂度(字典树->AC自动机)
5.进程通信
6.管道和重定向的区别
7.OSI模型
8.TCP、UDP区别
9.MySQL查询优化器的优化过程(只讲了择路和成本估算)
后面就是HR面了。 然后挂了。。。写这篇文章复盘的时候发现问的东西相对其他面经真的都很简单, 虽然最后没能如意,不过还是感谢CBU的所有面试官,感谢他们牺牲个人时间来面试我这个蒟蒻。 也感谢各位面试官给出的建议和鼓励~比起我面字节时的自闭而言真的不要好太多~(不针对字节,单纯就是因为我太菜QAQ)
CRO
一面4.17(1h10min)
1.保证双十一期间交易的一个正常、顺滑进行能从哪些方面去考虑
2.常用限流方案
3.支付宝付款的大概设计思路
4.tomcat默认连接数
5.tomcat如何打破双亲委派模型
6.类加载器和类加载过程
7.用什么方法自己实现一个ClassLoader
8.遇到过栈溢出吗,什么情况下会遇见,在哪些内存区域
9.什么情况下会发生GC
10.如何手动触发GC
11.GC算法原理
12.快排时间复杂度,原理,优化
13.线程的状态
14.CPU占用过高如何排除
15.tomcat启动后是通过什么协议对外提供服务
16SSL握手流程
17.从安全的角度来看HTTP/HTTPS可能会存在哪些风险
18.XSS、CSRF是什么,怎么防范
19.Cookie有哪些风险
20.英语怎么样
21.平常学哪些课程,说了测试、需求、项目管理、体系结构设计
22.有哪些常用的测试方法
23.自动化测试、CI / CD有没有了解过
24.数据库隔离机制的实现方式
二面4.21(45min)
1.拿了那些offer
2.用过Linux没有,如何查看线程的情况。如何根据最近修改时间逆序查看文件
3.重写equals为什么要重写hashcode
4.Hash冲突解决方案
5.将一个二元组排序, 排序的过程(不知道为什么突然抛出了个简单问题)
6.根号5开根(二分/牛顿迭代)
7.斐波那契第n项(迭代/矩阵快速幂)
8.2个大文件, 比对相同行(对每一行摘要,建字典树. 摘要相同的逐字符比对,聊了聊具体的时间/空间复杂度,总共耗时15min)
9.MySQL 常用engine(这个问题遇见了好多次... 聊了聊MyISAM和InnoDB的索引结构、表结构和log)
10.反问
三面4.23(1h14min)
p.s : 最自闭的一面,没有之一 QAQ
1.雪花算法(从项目聊数据库拆分聊过来的), 如何查询
2.防盗链方案
上面两个问题加项目的一些问题共计花了30min, 接下来的40min全程自闭,就只为问了一个问题单机8核心16G内存如何排序1T文件。包括以下小问题:
IO 方式
线程个数
线程之间如何调度
每个线程的任务
归并排序的具体流程
第一次归并后接下来的流程
多机大文件排序
我曾天真的以为, 这一类问题说一下多路归并的流程就差不多了,然而遇见面试官详细到伪码级别的问题直接炸锅... 好在面试官手下留情,勉强让我过了。。。
读者福利
最后给大家分享:Java面试题总结+各知识点学习思维导图
欢迎正在学习或者工作中的Java程序员朋友们加入Java架构学习交流:736398039 ,关注、转发、评论,每天分享java 知识,赠送Spring面试专题、Dubbo面试专题、Redis面试专题、Netty面试专题、zookeeper面试专题、Spring cloud面试专题、。。。。。。等等
点关注,不迷路;持续更新Java相关技术及资讯!!!
原文作者:bestsort