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