2026牛客网大厂Java面试真题全解析(阿里/腾讯/字节/百度亲测)

张开发
2026/6/7 14:42:05 15 分钟阅读

分享文章

2026牛客网大厂Java面试真题全解析(阿里/腾讯/字节/百度亲测)
​前言首先提前要求自带简历的一般都不太靠谱特别是小公司要求自带简历一般都是hr不专业不想提前把你的简历打印出来或者说不想为了你浪费几张A4纸所以这种公司可以直接pass了除非你特别缺offer生存都成困难了。其次可以提前问一下hr面试流程是什么样的现在很多公司都取消笔试了。众所周知笔试没有人监督你所以可以掏出手机(虽然我没做过但是面试看见其他人这样做过)所以我觉得笔试作用其实没多少。如果有公司是明确要先笔试笔试通过再进行面试而你面试的不是应届生岗位就要小心了先考虑一下那家公司过去面试距离远不远提前去看准网看一下相关的评价再考虑要不要去面试的事。我之前面过两家都是需要笔试的笔试没通过是直接没有后面的面试的有的面试题非常NT下面上图来回也比较远浪费了我一个上午的时间。面试准备面试的时候99.99%的公司都会让你做一下自我介绍和最近做的一个项目所以自我介绍和项目要提前打好草稿特别是不太会说话的。自我介绍我觉得简洁一点就行了一般面试官都会趁着你自我介绍的时候看简历也没认真听你做自我介绍。下面是我自己打的草稿面试官你好非常荣幸参加贵公司的本次面试。下面我简单的介绍一下我的个人情况我叫凌霄xx年毕业于xxx学院xxx专业。目前在xxx公司工作主要是从事xxx开发。 通过xxx招聘平台关注到贵公司岗位的招聘信息这个职位比较符合我未来的职业发展而且贵公司的业务对我都非常有吸引力非常希望能够进入贵公司发展。我对技术有浓厚的兴趣专业知识面宽技术也相对全面责任心强思路清晰沟通能力好熟悉JAVA体系 对各种开发流程和主流架构模式设计模式和UML有较强的需求分析、架构设计、项目管理能力并有丰富的实战经验 出于对工程师文化的向往我在研发团队管理期间尝试了多种方法去建立良性的团队氛围并有效的改善了研发效率 技术是为产品支撑的所以我现在也在熟悉产品设计过程希望可以结合公司发展战略营销策略跟着团队打造出一个好的产品。上面的可以适当简化一下能说出来多少取决于你的记忆力。项目介绍这个是真的要提前准备好说辞不然你面试的时候边想边说说起来磕磕巴巴的你给面试官的第一印象就不好了至少说明你的表述能力不强。介绍项目的话可以不用太紧张面试官才拿到你的简历看多久所以肯定是对你自己的项目是最熟悉的。需要注意的地方就是不要只讲一些业务相关的面试官不需要知道这些他只关心你的技术能力是否足够通过你的描述知道你使用了什么技术再根据相关的技术进行提问。贴一下我的草稿我在xx公司做的xx系统客户主要是xx项目的功能主要是提供代理雨伞代理快递代理订餐图书借阅等服务后台用的是主体架构是使用Spring Cloud微服务模块划分为xxx我主要负责其中xxx几个模块的开发 orm用的是mybatis数据库是用的mysql缓存是用的redis前台用到了vue技术。共有xx个同事参与开发整个项目持续了xx时间。面试官会对他感兴趣的点进行提问。项目中遇到的难题让我想起小学时经常写的作文最难忘的一件事。这可真是太那啥了没想到小学学的知识现在派上了用场。项目中遇到的难题解决了之后其实都不是什么难题了。我列几个点可以参考一下跨域任务调度幂等性使用mq遇到的问题分布式系统中的事务问题内存溢出问题当然最后还是要自己的专业技能扎实才能获取源源不断的offer。面试经验接下来分享一些这段时间的面试公司睿沿科技做人脸识别相关的和我上家公司做的产品差不多。Hashmap原理ConcurrentHashMap原理为什么多线程条件下性能这么好我从sync在1.6做的优化谈的他从锁的粒度方面谈的项目相关代码优化mysql优化spring的aop怎么实现的每天抓拍的数据量比较大有做过分库分表吗用的shardingjdbc 还有mycat中小公司一般用shardingjdbcRabbitmq实现原理不知道后面两个没有回答好吧所以没有后续了。小海豚能源科技这家应该是要找做全栈的吧开头就问我好几个前端相关的我直接懵了理所当然的没有后续了用过jquery哪些框架es6语法熟悉吗vue用过哪些组件spring用过哪些注解使用autowired注入的时候如果这个接口有多个实现怎么指定注入哪一个的实现eureka搭过集群吗mysql优化什么时候不会用到索引select *可能会导致不走索引where后面有函数运算导致不走索引索引不适用于隐式转换的情况比如你的SELECT * FROM T WHERE Y 5 在Y上面有一个索引但是Y列是VARCHAR2的那么Oracle会将上面的5进行一个隐式的转换SELECT * FROM T WHERE TO_NUMBER(Y) 5,这个时候也是有可能用不到索引的。like查询使用通配符开头不会用到索引但是这些好像不是他想要的答案我也猜不透。。接受长期出差吗开通金融做互联网金融的公司总部在北京我面试的时候是在成都的新网银行公司看这个模式应该就是驻场开发了但是公司本身不是外包。springboot和spring的不同springboot特性自动装配怎么实现的spring用到哪些组件具体场景spring默认是单例还是多例全局变量会有什么问题spring事务传播行为、隔离级别aop实现方式jdk动态代理和cglib动态代理区别jdk lambda表达式几种使用方式取最大和最小值list转maplist中有重复的怎么办线程池 有哪些参数各个参数的意义ioc容器有什么优点jvm 堆栈区别线程共享还是线程私有的springcloud组件、用途负载均衡的几种算法分布式事务怎么做的mybatis一对多多对多怎么做jpa和mybatis区别vmstat命令干嘛的redis查看内存占用命令mysql导入大量数据怎么优化mysql有一条数据死锁了怎么排查问题mysql表死锁怎么排查nginx反向代理是什么正向代理呢这次面试回答得挺好的hr也打了好几次电话说面试官对我挺有意向的就是一顿操作猛如虎一问工资0.9。而且我当时还是在职要求我一周到岗我就没去。京东物流自带简历朋友内推的听他说是稳了去面就能过结果还是翻车了。java特点描述一下继承封装多态分别是什么意思synchronized和lock区别ConcurrentHashMap线程安全怎么实现的创建线程的几种方式创建线程池几个参数的含义线程饱和策略sleep和wait区别spring是单例还是多例多线程并发会出现什么问题SpringBoot如何解决跨域具体怎么配置全局异常捕获怎么做的SpringSecurity的前后端分离登录怎么做的我拦截登录的url然后获取到用户名和密码把这个用户名和密码交给managermanager会交给具体的provider处理provider会调用UserDetailsService的方法完成验证。这里是我失误了他说用户名和密码是通过getattribute 获取到的吗我说是的。怎么设计一个安全的对外接口单线程的redis为什么这么快redis持久化方式什么是聚簇索引什么是非聚簇索引mysql事务隔离级别你觉得你能承担独立开发的任务吗其他问题回答得挺好的自我感觉不错本来以为能收到offer的但是朋友说那个面试官觉得我不行不能承担独立开发系统的任务估计是第8个问题回答失误了吧其他我觉得我回答没有问题。教育家网络科技面试的人比较多所以是群面一个面试官对应多个面试者。虽然我回答得比另外一个面试者好很多但是没有收到offer很迷真的很迷。介绍项目然后基本上就围绕着项目的业务说对金额的计算用什么类型数据库中用什么类型存储SpringBoot怎么自定义注解mysql优化like查询的时候数据量很大如果like查询以%开头不会走索引怎么优化。多表关联查询怎么优化代码优化怎么做的平时重构从哪方面考虑翻车面试如果各位以后有机会面试别人的话希望对面试者多一些尊重吧。根据简历提前准备好针对不同的level提不同的问题不要问一些偏门的怪题问题都是和面试职位相关的以下是一些翻车面试有些公司真的把我心态搞崩了导致后面的面试都没有发挥好。协能共创自带简历公司很小面试官架子不小面试全程非常不愉快经常在我说到一半打断我挺会嘲讽人的。面试的时候没有空间了然后在外面靠近电梯的走廊面试的。因为我的项目是做人脸识别相机相关的然后他问我图片处理到算法识别经历了什么过程我是直接调算法最多把jpg格式的图片转成bgr格式或者图片有旋转的通过exif修正旋转。但是我的回答好像不是他要的然后就直接打断我说我不知道就直接说不知道rabbitmq用了哪些设计模式。发布订阅模式还有其他的吗我不知道有知道的朋友可以告诉我一下tcp/ip协议让你设计eureka你怎么设计乐观锁悲观锁介绍一下我乐观锁实际上没有加锁然后他就直接打断我了发出一声嘲笑问我那你觉得什么是锁。jvm参数调优怎么做的我回答的是用的微服务部署有的微服务访问很频繁的就多给他设置一些内存比如网关一些不怎么用到的可以设置稍微小一点。然后他说你们这就是全凭感觉瞎设置呗哎面完之后心情低落了很多难受了一下午开始质疑我自己。芯软科技自带简历Boos直聘上标榜的上市公司我去面试的时候顶多就看见5个人在公司办公区域很空旷很安静。项目介绍挑出你在项目里做的一个模块谈谈这个模块的整个设计这个我真不知道怎么回答你说整个项目怎么设计的我还能画个架构图啥的给你瞅瞅但是你这说到具体的模块设计我不知道怎么说最多给你说说数据库怎么设计的项目并发情况你这公司规模还问我这个不合适吧听你说对linux比较熟环境搭建过吗tomcat之类的有没有遇到什么问题大环境都成为一个技术点来问了嘛反正我现在用docker了。nginx你们一般做什么正向代理一般用来干啥你会前端啊说说vue用history打包之后部署到服务器nginx需要配置什么说说你的优点假如你最近加班很累你已经很累了要猝死了但是项目比较急你想请假怎么跟领导沟通。广东世纪网通信设备股份有限公司自带简历第一次见到这样问问题的兄弟挺有新鲜感的其他公司翻来覆去的就是那几个问题。就是浪费了我的简历打印一次一块钱你还在我的简历上涂涂改改我都不好意思要回简历了。java的序列化和反序列化什么含义 生成的serialVersionUID有什么用yml文件里有一些属性怎么获取这些属性有一个枚举类有很多value和code然后yml中的一个属性对应这个code的值怎么通过code的值获取到这个对应value我想说循环判断但是觉得没这么简单所以沉默了半天。。。。然后他说枚举类里面有一个方法valueOf啊这是他没表达清楚还是我理解错了final干嘛的如果有一个final Stirng a 123后面还可以改变吗一般io操作会捕获异常然后在catch中释放资源有更简单的办法吗。有一个list给它按照类里的一个属性排序有个string数组里面有些空的值我想去除空的怎么做线上有个接口速度慢但是本地测试环境和线上环境是一样的数据量也是一样接口速度却很快。怎么排查常问问题jvm调优我觉得这不是一个中级开发工程师甚至高级开发工程师能做的出来的但是面试就是要问。死记硬背考记忆力呗只要记住其中几个常用的配置就行了。堆大小设置-Xms:初始堆大小-Xmx:最大堆大小-XX:NewSizen:设置年轻代大小-XX:NewRation:设置年轻代和年老代的比值。如:为3表示年轻代与年老代比值为13年轻代占整个年轻代年老代和的1/4-XX:SurvivorRation:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如3表示EdenSurvivor32一个Survivor区占整个年轻代的1/5收集器设置-XX:UseSerialGC:设置串行收集器-XX:UseParallelGC:设置并行收集器-XX:UseParalledlOldGC:设置并行年老代收集器-XX:UseConcMarkSweepGC:设置并发收集器调优总结年轻代选择响应时间优先的应用尽可能设大直到接近系统的最低响应时间限制根据实际情况选择。在此种情况下年轻代收集发生的频率也是最小的。同时减少到达年老代的对象。 吞吐量优先的应用尽可能的设置大可能到达Gbit的程度。因为对响应时间没有要求垃圾收集可以并行进行一般适合8CPU以上的应用。年老代选择响应时间优先的应用年老代使用并发收集器所以其大小需要小心设置一般要考虑并发会话率和会话持续时间等一些参数。如果堆设置小了可以会造成内存碎片、高回收频率以及应用暂停而使用传统的标记清除方式如果堆大了则需要较长的收集时间。代码优化分为三个维度来谈可以稍微拓展一下整体框架的优化根据模块类的职责做一些划分尽量做到每个模块的接口清晰。然后就是善用六大设计原则和24种设计模式。功能逻辑的优化把内聚的逻辑独立成一个个函数函数依赖的数据都通过参数传递这样做到函数可重用当上层结构做出改变的时候修改的代码量不会太多。性能优化如果性能不敏感代码也不是那么糟糕那这个优化可以不用关注。六大设计原则单一职责原则接口的单一职责一个职责一个接口我们对外公布的是接口而不是实现类所以不需要过度关心实现类是否遵循单一职责生搬硬套单一职责会引起类的剧增给维护带来非常多的麻烦里式替换原则只要父类能出现的地方我子类就可以出现而且调用子类还不产生任何的错误或异常调用者可能根本就不需要知道是父类还是子类。但是反过来就不成了有子类出现的地方父类未必就能适应。里式替换原则包含了四层意思子类必须完全的实现父类的方法。我们经常写service会定义一个接口或者抽象类然后编写实现调用类则直接传入接口或抽象类其实这里已经使用了里氏替换法则。子类可以有自己的个性。子类当然可以有自己的行为和外观了也就是方法和属性在子类出现的地方父类未必就可以胜任。父类向下转型可能会出现类型转换异常覆盖或实现父类的方法时输入参数可以被放大。覆盖或实现父类的方法是输出结果可以被缩小。依赖倒置原则依赖倒置原则的本质就是通过抽象(接口或抽象类)使各个类或模块的实现彼此独立不互相影响实现模块间的松耦合。我们在项目中使用这个原则要遵循下面的规则每个类尽量都有接口或者抽象类或者抽象类和接口两都具备变量的表面类型尽量是接口或者抽象类任何类都不应该从具体类派生尽量不要覆写基类的方法接口隔离原则客户端不应该依赖它不需要的接口客户端需要什么接口就提供什么接口把不需要的接口剔除掉对接口进行细化保证其纯洁性。通俗的讲就是建立单一接口不要建立臃肿庞大的接口。迪米特法则一个对象应该对其他对象有最少的了解通俗的讲一个类对自己需要耦合/调用的类应该知道的最少这个类内部是怎么复杂、怎么纠缠不清都和我没关系。尽量不要对外公布太多public方法和非静态的public变量尽量内敛多使用private、package-private、protected等访问权限开闭原则类、方法对于扩展是开放的对于修改是关闭的在程序需要进行拓展的时候不能去修改原来的代码。24种设计模式单例模式工厂模式建造者模式观察者模式有观察者和被观察者被观察者接口增加观察者、删除观察者通知观察者更新 观察者被观察者发送消息了我自己也要做些什么责任链模式适配器模式mysql的优化十家公司有九家会问这个必须要记住。基本上只要记住我写的这些面试基本上稳了数据库表设计优化所有表必须使用Innodb存储引擎字符集统一使用utf-8字段加注释控制单表数据量的大小建议控制在500w内冷热数据分离减小表宽度禁止存储图片文件等二进制数据三大范式数据库字段设计优化优先选择符合存储条件最小的数据类型能用tinyint的就不用int能用varchar的不用text避免使用textblob数据类型尽可能把所有列定义为not null索引设计优化限制每张表的索引数量单张表不超过5个禁止给每一列都建立单独索引每个表必须有一个主键频繁查询的字段建立索引编写sql优化建议预编译语句进行数据库操作避免数据类型的隐式转换充分利用表上已经存在的索引不要使用select * 查询要使用select 字段列表 查询避免使用子查询把子查询优化成join操作避免使用join关联太多得表对同一列进行or判断时使用in代替orwhere从句中禁止对列进行函数转换和计算在明显不会有重复值时使用union all而不是union拆分复杂的大SQL为多个小SQL使用 group by 分组查询时默认分组后还会排序可能会降低速度在 group by 后面增加 order by null 就可以防止排序.jvm内存模型必考题抽时间看看深入理解jvm虚拟机吧。总结面试和工作是两回事面试没通过的人工作能力不一定比你弱面试通过的人工作能力不一定比你强。所以面试没通过也不要灰心回去好好总结复盘不要因为失败就丧失斗志加油通过以上的20多次的面试经历小编整理了全套的面试题以及一套大厂面试真题由于篇幅限制笔记无法全部为大家展示出来下面就以截图主要内容的形式让大家参考啦需要完整版的小伙伴可以点击下方名片获取

更多文章