乐趣区

关于java:Java岗面经两年半经验面10个公司经28轮面试拿9个offer涨麻了

给大家分享一个读者的面试经验。

我看了一下咱们的聊天记录,他 2020 年的时候就加了我,探讨过几次技术相干的问题。而后他也缓缓开始写文章,我看了他的文章隐隐感觉到是个工作多年的大佬。

没想到是大佬不假,然而他竟然才毕业不到三年工夫。

他是二本毕业,工作年限是 2 年半,以下是他的面试分享。

面试筹备

温习

你信我,真学习还得看书,看书能让你的常识体系更加健全。

当然,平时也能够看一些大佬的文章裁减一下知识库。

我看过的 Java 相干的书单如下:

  • Java:《Java 并发编程的艺术》、《Java 并发编程实战》
  • JVM:《深刻了解 Java 虚拟机》第三版、《深刻 Java 虚拟机:JVM G1GC 的算法与实现》、《新一代垃圾回收器 ZGC 设计与实现》、美团技术团队相干 JVM 的文章、R 大相干 JVM 文章
  • MySQL:《MySQL 技术底细:InnoDB 存储引擎》、《高性能 MySQL》、《MySQL 实战 45 讲》、《从根儿上了解 MySQL》、《从零开始带你成为 MySQL 实战优化高手》
  • Redis:《Redis 设计与实现》、《Redis 开发与运维》、水滴与银弹 Redis 系列文章
  • Kafka:半兽人博客、《Apache Kafka 实战》
  • Zookeeper:《从 Paxos 到 Zookeeper:分布式一致性原理与实际》
  • 架构:《凤凰架构》、《畛域驱动设计:软件外围复杂性应答之道》

还有一个点是,看书的时候能够尝试记一下笔记,这样效率会高一些,不至于看完就遗记了。

小编也筹备了一些 Java 面试材料,以助于大家温习,须要的小伙伴查看文末

算法

算法的话,没有那么多高超的技巧,LeetCode 前 200 道重复刷就行了,应酬社招入不敷出。

我只刷了 170 道题,面了十几个大公司,大多的算法题都是原题。

刚开始刷的时候会很苦楚,保持几天,没有思路的就看答案,看完答案持续写代码,写不出代码持续看答案,反反复复保持下来算法就搞定了。

简历

简历的话,从大学毕业到当初,我始终用的是超级简历,我感觉挺好用的:

https://www.wondercv.com/

至于怎么写简历,我也不是专家,不说些花里花哨的,间接给一个我的简历模板吧,仅供参考。

提一个点,你写的简历就是划了一个常识范畴,而后让面试官从题库外面选题,如果你本人划的知识点你都不分明,那你面试必定没有把握的。

所以,肯定要对你简历下面的每一字负责,要对你在简历上写的每一个技术点都相熟。

面试过程

自我介绍

自我介绍是简历的精简,不须要说一些没意义的事件,面试官也不关注你喜不喜欢打篮球,爱不爱唱歌,你只须要把你做过的最牛逼的事件,解决过的最简单的问题讲进去就行了。

举个例子:

面试官你好,我叫 CoderW,19 年毕业于哈佛大学。

从毕业到当初始终从事后盾研发相干工作。

19 年 -22 年在谷歌中间件团队,次要负责 xx 中间件的设计与开发,在这期间,实现了对 xxx 进行革新和优化,整体性能晋升了 80%;

22 年去了微软电商团队,负责微软电商体系的设计,两年的工夫,实现了微软电商从 0 到 1 的搭建过程。上线至今,日活量达到了 10 亿,零碎均匀 QPS 达到 1W。

这一次应聘的是贵公司中间件团队的资深专家岗位,在业务方向和技术栈方面,我集体认为我的匹配度还是比拟高的,十分心愿可能退出贵公司,一起打造 xx 零碎。谢谢!

技术探讨

自我介绍完之后,个别就是技术探讨环节,这个环节个别 30 到 50 分钟,是整个面试最重要的一个环节。

1. 不卑不亢

记住,这个环节是技术探讨环节,不是问答环节。一场好的技术探讨肯定是有来有回,而不是单方面的你问我答。

在尊重面试官的前提上,能够对面试官的一些论断提出质疑和探讨,在我看来,敢于提出本人的不同认识是一个加分项。

如果遇到不尊重你,甚至羞辱你的面试官,我倡议你间接把简历要回来,大家都是打工人,有什么好装的?

2. 真挚以待

有些面试官喜爱问一些比拟冷门的常识来验证候选人的技术深度,这是一个很失常的事件,你也不须要太过于缓和,真挚一点,会就是会,不会就是不会,没什么关系。

千万不要自作聪明强行去假造,真挚永远是第一要义!

3. 深刻发散

如果聊到你相熟的一个知识点,你肯定要好好把握,能够尝试着深刻和发散,让面试官缓缓的进入你的节奏。

举个例子,聊到 Kafka 零拷贝的时候。

  • 深刻:你能够持续深刻,聊一下 sendfile+DMA Scatter/Gather。
  • 发散:深刻后再发散,聊一下为什么 RocketMQ 写日志用到了零拷贝,然而 Kafka 写日志的时候不必零拷贝。

深刻是展示你对技术的理解水平,发散是展现你的视线宽度。

答复完一个问题之后,能够小小的总结一下,这样不至于你一个人在那里讲的云里雾里,让面试官都找不到你想要表白的重点了。

编程环节

如果你的工作年限不是太长,技术探讨环节过后个别会有一个编程环节(这个环节也有可能会放到技术探讨之前)。

编程题分为两种,一种是算法题,一种是语言技巧题。

算法题可能大家都能了解,像什么“两个线程穿插打印 A 和 B”、“手写单例模式”、“手写一个简略工厂设计模式”就属于语言技巧题。

算法题下面提过了,狂刷就行;语言技巧题也就那几个,背一下就好。

反诘环节

集体认为,反诘环节没啥用,基本就不能扭转整个面试后果。

所以我个别就固定两个问题:

  • 我面试的这个岗位须要用到哪些技术栈?
  • 我面试的这个岗位的最大挑战是什么

面经

面经奉上,不是很全,心愿有帮忙。

顺丰

1.HashMap,扩容过程,怎么解决哈希抵触?

2. 聊了一篇之前写过的 MySQL 的一篇博客,讲讲 MySQL 慢 SQL 优化思路?解决流程,应该从哪些方面思考?

3.APM,怎么监控,原理是什么?Java Agent 理解过吗?

4.G1,最大的特点,标记位图,卡表卡页,SATB。

5. 介绍 TiDB,什么是分布式数据库?和 MySQL 比优缺点是什么?

6. 怎么做数据冷热拆散?怎么做分库分表?为什么要用 ES?

7. 分布式事务几种实现形式,讲讲本地音讯表、尽最大致力告诉、TCC。你们选用的是什么?AT 有什么问题?

8. 报表 DSL 优化,享元模式优化过程,优化成果怎么样?

9. 单机和微服务的区别,微服务有什么问题?数据一致性问题怎么解决?幂等问题怎么解决?

10. 当初负责的零碎分为几个模块?如何划分?怎么治理?

11.MQ 应用场景有哪些?在我的项目中具体哪些地方用到了?

12.MQ 音讯发送不在 MySQL 事务中如何保障一致性?

13.Kafka 四个选举,Controller 选举、Partition leader 选举、GroupCoordinator 选举、生产组协调器选举。整体设计问题,应用场景,流量布局怎么做的?

14. 缓存应用的具体场景,一致性问题,缓存应用常见问题有哪些?

15. 熔断和降级的区别,具体应用场景有哪些?

16.QPS 和 TPS 的区别是什么?你们零碎的最大 QPS 是多少?QPS 大了会有什么问题,怎么解决?

17. 如何设计一个 RPC 框架?须要思考哪些点?

18. 有没有关注新技术?log4j2 问题关注没有?能简略介绍一下吗?

总结 :面试难度偏低,总监面根本是聊一下场景设计问题,面试体验很好,总监特地尊重人,强烈好评。待遇还行。

拼多多

1. 介绍本人做过的最称心的一个我的项目

2. 介绍 TiDB、RocksDb、levelDB、LSM 树、SSTable。

3.XXL-Job 二次分片怎么做的?有些什么问题?怎么去优化的?

4.HashMap 的位操作,HashSet 的 contains 办法复杂度是多少,红黑树简略讲一下?

5.byte[] a = new byte[10 * 1024] 内存调配过程?多大的对象间接进入老年代?通过什么参数配置?

6. 介绍 TLAB,PLAB,CAS 调配。

7. 为什么要指针压缩,为什么能指针压缩?原理是什么?

8. 类加载过程?类隔离理解过吗?

9. 多态和重载的底层实现原理,字节码层面的理解过吗?

10.Springboot 主动拆卸,SPI 原理讲一下?

11. 拦截器和过滤器的区别?应用场景?

12.Spring 事务实现原理,Spring 的 ACID 如何实现的?如果让你用 JDBC 实现事务怎么实现?

13.MySQL 的锁,表级锁是哪一层的锁?行锁是哪一层的锁?

14.MySQL 索引?B+ 树?主键索引每一个节点的大小?一个 page 多大?如果一条数据大于 16KB 怎么存?text 最多存多少数据?行溢出问题?数据存储格局有哪些?溢出页如何治理?15.Redis ssd,Redis 内存空间优化的点,embstr 和 row、intset、ziplist。

16.Kafka 的服务端的物理存储架构是什么?零拷贝,mmap,sendfile、DMA gather。

17. 你做的计划怎么让他人服气?要思考哪些点?你是怎么做的?有哪些你感觉能够改良的中央?

18. 如果零碎流量忽然回升 10 倍,怎么解决?100 倍呢?

19. 白板编程:单例模式,为什么要加 volatile

20. 白板编程:用栈实现一个线程平安、高效的队列

21. 白板编程:二叉树两个节点的间隔

总结 :一面难度较高,会始终诘问问到你不会为止,后几轮的面试偏业务和设计,比拟轻松。待遇拉满。

美团

1. 多少个服务,多少台机器?K8S,怎么做到隔离?

2. 服务之间的数据一致性怎么做?业务上怎么保障?

3.TCC?二阶段提交,三阶段提交?

4.Synchronized,偏差锁聊了很久聊到了源码,降级过程,Synchronized 的 JVM 源码?(面试官对 JVM 很感兴趣)

5. 平安点,平安点的作用?一些 JVM 源码(之前的文章写过,面试官和感兴趣)

6. 垃圾回收算法;PS+PO,CMS 为什么要用标记革除算法?CMS 的前身,R 大的文章。

7.ZGC,聊到了彭寒成的《新一代垃圾回收器 ZGC 设计与实现》和美团技术团队的文章。

8.G1,聊到了中村成洋的《深刻 Java 虚拟机:JVM G1GC 的算法与实现》。

9. 写屏障和读屏障的区别是什么?

10.JMV 优化过程,成果。为什么要降级垃圾收集器?

11. 介绍一下 Spring IOC,注解和 XML 两种形式有什么区别?后置处理器,扩大点有什么用?在我的项目中有用到过吗?

12.MySQL 的 binlog、redo log、undo log 写入过程?刷盘机制和参数设置。MVCC 机制理解吗?

13. 遇到的死锁问题?惟一键抵触导致的死锁问题,MySQL 为什么要这么设计?隐式锁是什么理解吗?

14. 还理解 MySQL 的哪些锁?间隙锁、临检锁 …..

15.ZK 的选举过程是怎么样的?如果选举过程中网络故障怎么办?ZAB 和 RAFT 的最大区别是什么?

16.Redis 用的 Gossip 协定有哪些具体音讯?流言流传,为什么要去中心化?有哪些优缺点?

17.Redis 分布式锁和 ZK 分布式锁的比拟。AP 和 CP,CAP 实践讲一下?

18.Kafka 的劣势是什么?RocketMQ 提早队列怎么做的?如果让你优化你会怎么做?Kafka 能实现提早队列吗?

19.Kafka 能保证数据一条都不失落吗?为什么?业务上丢数据了怎么办?

20. 白板编程:顺时针打印矩阵

总结 :美团的面试官很喜爱问并发编程和 JVM,一面始终在聊这些货色,后几轮的面试偏业务和场景问题,比拟轻松。

面试官很尊重人,还加了面试官的微信,起初面试官还给我打电话要我去美团,因为有其余抉择了就拒掉了,祝好!

字节

总结:算法难度拉满,一轮一道算法,因为面的是 GO 岗位,对根底要求比拟高,没有问太多 Java 的知识点。待遇不错。

58 团体

1.MySQL 迁徙到 TiDB 做了哪些工作,自增主键,数据量多大?

2.TiDB 的性能问题,做了哪些调研?TP90、TP95 是多少。

3.TiDB 上线步骤是怎么样?怎么做到数据不失落?怎么保障可靠性?

4.XXL-Job 怎么封装的?工作跑失败了怎么办?

5.DAG 是如何实现的?二次分片怎么做的?

6.Redis 应用场景、缓存什么数据?怎么保证数据一致性?

7. 还理解 Redis 哪些常识、Redis 的劣势、CP 还是 AP?CAP 实践。

8.Redis 存储数据须要留神哪些问题?热 key 问题、大 key 问题怎么解决?

9.Redis 分布式锁、红锁。红锁有什么问题?

10. 介绍 SpringBean 创立过程、AOP 实现原理?

11.BeanFactory 和 FactoryBean 的区别?

12.Spring 是怎么解决循环依赖的?Spring 解决构造方法注入的循环依赖了吗?解决多例下的循环依赖了吗?

13. 动静代理,JDK 动静代理和 CGlib 动静代理的区别?Spring 是如何选用的?怎么配置?

14. 如何做降级的?如何做限流?

15. 负载平衡算法有哪些?自适应负载平衡怎么做的?有什么问题?怎么优化的?

16.Java 的汇合都有哪些,都有什么特点?

17.HashMap、ConcurrentHashMap 的区别?扩容过程是怎么样的?

18. 介绍 AQS、CountDownLatch、Semaphore、volatile、synchronized

19. 线程池、自定义线程池、自定义回绝策略有理解过吗?什么场景用?

总结 :面的是风控部门,老牌公司了,面试难度较低,钱也给的少。

滴滴

1. 过程和线程的区别是什么?过程之间怎么通信的?线程之间呢?

2.HTTPS 和 HTTP 比照;CA 数字证书;对称加密非对称加密过程?

3. 常见的加密算法有哪些?

4.MySQL 测试,TiDB 测试,如何做到平滑迁徙?如何保证数据不失落?

5. 工作调用核心怎么做的?负载平衡?怎么收集执行器的 CPU 和内存应用状况?工作分片是怎么做的?

6. 工作幂等性革新?ZK 怎么部署的,几台机器,挂了一台怎么办?

7.ZAB 协定,ZK 选举过程,ZXID 的构造是怎么样的?ZXID 有什么用?

8.Redis 的 String 底层构造,hash 底层构造,rehash 过程是怎么样的?

9.Redis 的 AOF 和 RDB 区别,能配合应用吗?热 key 问题和大 key 问题怎么解决?

10.Kafka 的 log,index,稠密索引。零拷贝,mmap,sendfile、DMA gather

11.Kafka rebalance 策略,具体过程。GroupCoordinator 选举、生产组协调器选举过程?kafka 默认 topic 干什么用的?

12.Spring 的循环依赖怎么解决的,为什么须要加个三级缓存,二级不行么?

13.Springboot 有什么特点,理解 springboot 的主动拆卸原理么?

14. 写了一道 LeetCode 原题,替换链表节点。

总结 :面的是网约车部门,次要语言是 GO,面试体验不错,面试官比拟尊重人,钱给的还行。

欧科云链

1.QUIC/HTTP3 理解吗?

2. 用笔画 MySQL 一条记录的入库过程,写日志过程,日志两阶段提交?

3.JVM 调优过程?怎么发现 JVM 的问题的?怎么做预警解决?

4.Minor GC 与 Full GC 的触发机制是什么?

5.Eden 和 Survivor 比例能够调整么,参数是什么?还用到了哪些参数?

6. 介绍 TiDB 和 MySQL 的迁徙过程?遇到了些什么问题?怎么解决的?

7. 理解 RocksDb 吗?levelDB、LSM 树、SSTable?

8.Paxos 算法理解吗?介绍 RAFT 和 ZAB,以及它们之间的区别?会有脑裂问题吗?为什么?

9.Kafka 音讯的写入过程简略介绍一下,Kafka 为什么这么快?

10.Kafka 几种选举过程简略介绍一下?

11.Kafka 高水位理解过吗?为什么 Kafka 须要 Leader Epoch?

12.Netty 用到过吗?讲讲 reactor。Netty 的空轮询 bug 有理解吗?

13. 讲讲 BIO、NIO、AIO 的区别?

14.Dubbo 的服务发现是怎么做的?

15.Redis 的几种数据结构,底层别离是怎么做的?用 Redis 缓存什么数据?怎么更新数据?怎么淘汰数据?

16. 缓存和数据库一致性问题怎么解决?为什么要删缓存而不是更新缓存?删缓存删失败了怎么办?

17. 有一个蕴含 100 亿个 URL 的大文件,假如每个 URL 占用 64B,请找出其中所有反复的 URL。

18. 给了一张纸,下面有一段并发的代码,问执行后果是什么,考的是 volatile。

总结 :面的是数字货币交易系统,去现场面的试,画了很多架构图。面试体验很好,还加了面试官的微信。待遇不错,而且能够居家办公。

京东

1. 介绍一下你做的我的项目?

总结 :这个面试官放了我两次鸽子,前面忽然打电话过去,我匆匆忙忙接电话,介绍完我的项目之后,他轻易问了几个问题就完结了,整个过程不超过 10 分钟。可能是因为我不是东哥的兄弟?

后果

说一下后果吧,除了京东,其余的都拿到了口头 offer。

至于为什么没有面阿里和腾讯,因为那个时候阿里和腾讯在进行财年清理,锁 HC 了,也就没有面了。

至于为什么字节的面试题没写,懂得都懂 …

最初,祝大家都能成为 offer 收割机!

Java 面试复习资料

为了更好的帮忙到大家,小编顺便筹备了大厂面试真题、Java 书籍材料、Java 面试题总结等 Java 材料,须要的小伙伴点赞之后,间接【点击此处】即可收费获取!!!

大厂面试真题

Java 面试专题总结

Java 书籍材料

面试领导

退出移动版