想和大家分享一个读者的采访经历。我看了一下我们的聊天记录,他是2020年加我的,讨论了几个技术相关的问题。然后他也慢慢开始写文章。看了他的文章,我隐约觉得他是个从业多年的大老板。没想到老板说的没错,不过他才毕业不到三年。他是一名二年级毕业生,工作了2年半。以下是他的采访分享。相信我,您必须阅读书籍才能为面试做准备。读书可以使你的知识体系更加完整。当然你也可以看一些大佬的文章来扩充自己的知识面。我看过的Java相关书籍列表如下:Java:《Java 并发编程的艺术》、《Java 并发编程实战》JVM:《深入理解 Java 虚拟机》第三版、《深入 Java 虚拟机:JVM G1GC 的算法与实现》、《新一代垃圾回收器 ZGC 设计与实现》、美团技术团队JVM相关文章、以及JVM相关R大学篇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+DMAScatter/Gather。Divergence:深化后发散,说说为什么RocketMQ写日志时使用零拷贝,而Kafka写日志时不使用零拷贝。深入是展示你对技术的理解,发散是展示你视野的宽度。回答完一个问题后,可以做一个小总结,这样就不会自己一个人云里雾里,面试官找不到你想表达的重点。Programmingsession如果你的工作经验不是太长,通常在technicaldiscussionsession之后会有一个programmingsession(这个session也可以放在technicaldiscussion之前)。编程题分两种,一种是算法题,一种是语言技能题。算法题大家可能都懂,比如“双线程交叉打印A和B”、“手写单例模式”、“手写一个简单的工厂设计模式”都是语言技能题。算法题上面说了,随便刷一下;语文题只有几道,背一下就可以了。反问环节,个人认为反问环节没什么用,根本改变不了整个面试结果。所以我一般固定两个问题:我面试的职位需要用到什么技术栈?我面试的职位最大的挑战是什么?它不是很完整。我希望它能有所帮助。顺丰速递1.HashMap,扩容过程中hash冲突如何解决?2、讲到我之前写的一篇MySQL博客,讲到MySQL慢SQL优化思路?解决过程中应该考虑哪些方面?3、APM,如何监控,原理是什么?了解Java代理?4.G1,最大功能,标记位图,卡表卡页,SATB。5.介绍TiDB,什么是分布式数据库?与MySQL相比有哪些优势和劣势?6、冷热数据如何分离?分库分表怎么办?为什么要使用ES?7、分布式事务的几种实现方式,讲一下本地消息表,besteffortnotification,TCC。你选择了什么?AT有什么问题?8、汇报DSL优化、享元模式优化过程,优化效果如何?9.单机和微服务有什么区别?微服务存在哪些问题?如何解决数据一致性问题?如何解决幂等问题?10、系统现在负责多少个模块?怎么分?如何治理?11、MQ有哪些使用场景?它在项目中的什么地方使用?12、MQ消息发送不在MySQL事务中如何保证一致性?13、Kafka有四种选举,Controller选举,Partitionleader选举,GroupCoordinator选举,consumergroupcoordinator选举。你如何处理整体设计问题、使用场景和流量规划?14、缓存使用的具体场景、一致性问题、缓存使用的常见问题有哪些?15、熔断和降级有什么区别,具体使用场景是什么?16、QPS和TPS有什么区别?您系统的最大QPS是多少?QPS过大会出现什么问题,如何解决?17.如何设计RPC框架?需要考虑哪些点?18、你关注过新技术吗?log4j2与您有关吗?能简单介绍一下吗?总结:面试难度比较低。采访导演基本上就是聊场景设计的问题。面试体验非常好。导演非常恭敬,给予高度评价。治疗没问题。拼多多1.介绍一下我做过最满意的项目2.介绍TiDB、RocksDb、levelDB、LSMtree、SSTable。3、如何做XXL-Job二次分片?怎么了?如何优化呢?4、HashMap的位操作、HashSet的contains方法、红黑树的复杂度是多少?5.byte[]a=newbyte[10*1024]内存分配过程?多大的对象直接去老年代?通过什么参数配置?6.介绍TLAB、PLAB、CAS分配。7.为什么指针压缩,为什么指针可以压缩?原理是什么?8.类加载过程?你了解阶级隔离吗?9.你了解过字节码层面的多态和重载的底层实现原理吗?10、springboot自动组装,SPI的原理是什么?11.拦截器和过滤器有什么区别?使用场景?12、Spring事务实现原理,Spring的ACID是如何实现的?如果使用JDBC,如何实现事务?13、MySQL锁,哪一级锁是表级锁?行锁是哪一级锁?14.MySQL索引?B+树?每个节点的主键索引大小?一个页面有多大?一条大于16KB的数据如何保存?文本最多可以存储多少数据?行溢出问题?数据存储格式有哪些?如何管理溢出页面?15、Redisssd、Redis内存空间优化点、embstr和row、intset、ziplist。16、Kafka的服务器的物理存储架构是怎样的?零拷贝、mmap、sendfile、DMA收集。17.你如何说服别人接受你的计划?应该考虑哪些要点?你怎么做呢?您认为有什么可以改进的地方吗?18、系统流??量突然增加10倍怎么办?100次呢?19、白板编程:单例模式,为什么要加volatile20。白板编程:用栈实现线程安全高效的队列停不下来,后面几轮面试偏业务偏设计,相对容易。待遇满分。美团1、多少服务,多少机器?K8S,如何实现隔离?2、服务之间如何做数据一致性?如何保障业务?3.TCC?两阶段提交,三阶段提交?4.同步偏向锁。聊了半天,聊到源码,升级过程,JVMforSynchronized的源码?(面试官对JVM很感兴趣)5.安全点,安全点的作用是什么?一些JVM源码(上一篇写的,面试官感兴趣)6.垃圾回收算法;PS+PO,为什么CMS要用mark-and-sweep算法?CMS的前身,RBigArticles。7.ZGC,聊了彭汉城的《新一代垃圾回收器 ZGC 设计与实现》和美团技术团队的文章。8.在G1中,我们谈到了中村的《深入 Java 虚拟机:JVM G1GC 的算法与实现》。9.写屏障和读屏障有什么区别?10.JMV优化流程及效果。为什么要升级垃圾收集器?11.介绍SpringIOC,注解和XML有什么区别?后处理器,扩展点是做什么用的?有在项目中使用过吗?12、MySQL的binlog、redolog、undolog的写入过程是怎样的?刷盘机制及参数设置。你了解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的优点?上限理论。8、Redis存储数据需要注意哪些问题?如何处理热键问题和大键问题?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的区别,可以一起用吗?如何解决热键问题和大键问题?10、Kafka的日志、索引、稀疏索引。零拷贝、mmap、sendfile、DMAgather11.Kafkarebalance策略,具体流程。GroupCoordinator选举,消费者组协调者选举过程?kafka的默认主题是什么?12、如何解决Spring的循环依赖?为什么要加三级缓存呢?二级还不够吗?13、Springboot有什么特点,你了解springboot的自动组装原理吗?14.写了一道LeetCode原题,交换链表节点。总结:面试网约车部门,主要语言是GO。面试体验不错,面试官比较尊重,钱还可以。欧凯云链1、你了解QUIC/HTTP3吗?2、用笔画出一条记录在MySQL中的存储过程,写出日志过程,分两个阶段提交日志?3.JVM调优过程?您是如何发现JVM的问题的?如何做好预警?4、MinorGC和FullGC的触发机制是什么?5.Eden和Survivor的比例可以调整吗?参数是什么?使用了哪些其他参数?6、介绍一下TiDB和MySQL的迁移过程?你遇到了什么问题?你是怎么解决的?7.知道RocksDb吗?levelDB、LSM树、SSTable?8、你了解Paxos算法吗?介绍RAFT和ZAB,它们的区别?会不会出现脑裂问题?为什么?9、简单介绍一下Kafka消息的写入过程。为什么卡夫卡这么快?10.简单介绍一下Kafka的几个选举过程?11、你知道Kafka的高水位吗?为什么Kafka需要LeaderEpoch?12、用过Netty吗?谈论反应堆。你知道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书籍资料面试指导
