2023最新互联网一线大厂Java面经总结(附答案解析)

本文分享了BATJ(百度、阿里巴巴、腾讯、京东)等大厂在面试Java程序员时的常见问题,包括JVM内存管理、网络编程(BIO、NIO、AIO)、MySQL索引优化、Linux基础、Spring框架以及并发与分布式技术的相关知识。这些问题旨在帮助求职者准备面试,查漏补缺,提升技术水平。

今年的金九银十跳槽的难度明显比往年要大很多,今天在这里给大家分享一些 BATj 面试 Java 程序员真题,让大家进行突击复习,查漏补缺,希望大家都能在这个金九银十拿到满意的 offer!(文末有答案分享哦!)

JVM 面试真题:

  • 类加载器是有了解吗?

  • Java 虚拟机是如何判定两个 Java 类是相同的?

  • 类加载器是如何加载 class 文件的?

  • 双亲委派模型(Parent Delegation Model)?

  • 双亲委派模型的工作过程?

  • 双亲委派模型为什么这样设计呢?

  • JVM 内存划分:

  • 对象分配规则?

  • 简述一下 Java 中创建一个对象的过程

网络编程与高效 IO

  • BIO、NIO 和 AIO 的区别?

  • NIO 的组成?

  • Netty 的特点?

  • Netty 的线程模型?

  • TCP 粘包/拆包的原因及解决方法?

  • 了解哪几种序列化协议?

  • 如何选择序列化协议?

  • Netty 的零拷贝实现?

  • Netty 的高性能表现在哪些方面?

  • NIOEventLoopGroup 底层源理是?

mysql 优化 索引

  • 索引的好处和坏处是什么?

  • 数据库中,哪些列需要创建索引,哪些列不适合创建索引?

  • 说说你对索引的认识(结构、对 dml 的影响、为什么提高查询性能)

  • 若果一个 sql 查询语句很长,执行速度慢,你会想到哪些优化的方法?

  • 数据库里有些数据会反复被查询,问有什么好方法提高效率?

  • 什么是跨站脚本攻击,有何危害,sq|注入攻击如何防范?

  • 在工作中,一台线上 MSSQL 数据库查询数据突然变得异常缓慢,如果交给你排查,请写出排查思路。

Linux 面试

  • 随意写文件命令?怎么向屏幕输出带空格的字符串,比如”hello world”?

  • 终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?

  • Grep 命令有什么用?如何忽略大小写?如何查找不含该串的行

  • Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?

  • 把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?

Spring&SpringMVC

  • 什么是 spring?

  • 使用 Spring 框架的好处是什么?

  • 解释一下什么是 IOC?

  • 解释一下什么是 AOP?

  • spring 有哪些主要模块?

  • spring 常用的注入方式有哪些?

  • spring 中的 bean 是线程安全的吗?

  • spring 支持几种 bean 的作用域?

  • spring 自动装配 bean 有哪些方式?

  • 说一下 spring 的事务隔离?

  • 什么是 Spring 的 MVC 框架?

  • 说一下 spring mvc 运行流程?

  • spring mvc 有哪些组件?

  • @RequestMapping 的作用是什么?

  • @Autowired 和 @Resource 的区别?

并发与高性能

  • 有个每秒钟 5k 个请求,查询手机号所属地的笔试题(记得不完整,没列出),如何设计算法?请求再多,比如 5w,如何设计整个系统?

  • 高并发情况下,我们系统是如何支撑大量的请求的

  • 集群如何同步会话状态

  • 负载均衡的原理

  • 如果有一个特别大的访问量,到数据库上,怎么做优化(DB 设计,DBIO,SQL 优化,Java 优化)

  • 如果出现大面积并发,在不增加服务器的基础上,如何解决服务器响应不及时问题“。

  • 假如你的项目出现性能瓶颈了,你觉得可能会是哪些方面,怎么解决问题。

  • 如何查找 造成 性能瓶颈出现的位置,是哪个位置照成性能瓶颈。

  • 你的项目中使用过缓存机制吗?有没用用户非本地缓存

分布式技术面试

  • 为什么使用 MQ??

  • Kafka, ActiveMQ, RabbitMQ, RocketMQ 各有什么优缺点?

  • 消息中间件产生的背景

  • Netty 有什么用?NIO/BIO/AIO 有什么用?有什么区别?

  • 为什么要进行系统拆分?拆分不用 Dubbo 可以吗?

关于面试题答案

文中所有的面试题答案,我已经整理成一个 PDF 文档了,这一份文档涵盖了 Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink 等高并发分布式、大数据、机器学习等技术面试点,如果需要的话各位可以来找我获取到

 

北京-百度,java 中级

  1. BeanFactory 和 ApplicationContext 有什么区别

  2. Spring Bean 的生命周期

  3. Spring IOC 如何实现

  4. 说说 Spring AOP

  5. Spring AOP 实现原理

  6. 动态代理(cglib 与 JDK)

  7. Spring 事务实现方式

  8. Spring 事务底层原理

  9. 如何自定义注解实现功能

  10. Spring MVC 运行流程

  11. Spring MVC 启动流程

  12. Spring 的单例实现原理

  13. Spring 框架中用到了哪些设计模式

  14. 为什么选择 Netty

  15. 说说业务中,Netty 的使用场景

  16. 原生的 NIO 在 JDK 1.7 版本存在 epoll bug

  17. TCP 粘包/拆包的解决办法

  18. ......

答案示例:

深圳-平安,java 中级

  1. 介绍简历上主要项目,画框架图,说流程

  2. 针对简历上的技能进行提问

  3. redis 各种应用场景

  4. redis 持久化机制

  5. mysql 调优

  6. 有没了解 Docker,Docker 和虚拟机有什么区别?

  7. 说说 rabbitmq 的结构

  8. rabbitmq 队列与消费者的关系?

  9. rabbitmq 交换器种类

  10. 项目中哪里用到了 kafka,kafka 特性?

  11. rabbitmq、RocketMq、kafka 对比

  12. 介绍 springcloud 核心组件及其作用,以及 springcloud 工作流程

  13. 介绍 springcloud 心跳机制,以及消费端如何发现服务端(Ribbon)?

  14. eureka 的缺点

  15. eureka 缓存机制?

  16. rpc 和 http 的区别,使用场景?

  17. 分布式事务如何保持一致性?

  18. 什么情况下用到分布式开发?

  19. jvm 内存模型,各个部分的特点?

  20. ......

  21. 写出几个 jvm 优化配置参数

  22. 有哪几种 GC 机制?

  23. spring 相关...

  24. 数据结构相关...

  25. 并发相关...

  26. 线程池相关...

  27. 数据库相关...

答案示例:

深圳-银盛支付,java 中级

  1. 说说 springcloud 的工作原理

  2. 用什么组件发请求?

  3. 注册中心心跳是几秒?

  4. 消费者是如何发现服务提供者的?

  5. 多个消费者调用同一接口,eruka 默认的分配方式是什么?

  6. 说说常用的 springboot 注解,及其实现?

  7. spring 的事务注解是什么?什么情况下事物才会回滚?

  8. 说说 spring 事物的传播性和隔离级别?

  9. mysql 的引擎有什么?他们的区别?

  10. innodb 如何实现 mysql 的事务?

  11. mysql 索引谈一谈?

  12. 说说 b+树的原理?

  13. 让你设计一个索引,你会怎么设计?

  14. 还问了 git 和 svn 的区别?

  15. git 命令的一些底层原理以及流程?

答案示例:

杭州-蚂蚁金服,java 高级

  1. jdk1.7 到 jdk1.8 Map 发生了什么变化(底层)?

  2. ConcurrentHashMap

  3. 并行跟并发有什么区别?

  4. jdk1.7 到 jdk1.8 java 虚拟机发生了什么变化?

  5. 如果叫你自己设计一个中间件,你会如何设计?

  6. 什么是中间件?

  7. ThreadLock 用过没有,说说它的作用?

  8. Hashcode()和 equals()和==区别?

  9. mysql 数据库中,什么情况下设置了索引但无法使用?

  10. mysql 优化会不会,mycat 分库,垂直分库,水平分库?

  11. 分布式事务解决方案?

  12. sql 语句优化会不会,说出你知道的?

  13. mysql 的存储引擎了解过没有?

  14. 红黑树原理?

答案示例:

深圳-腾讯,java 高级

  1. 从简历项目中选一个项目,说说你在其中遇到了什么重大挑战?以及你的解决问题的思路?

  2. 一段代码要执行多个 redis 命令,不加锁的情况下如何保证原子性?

  3. 谈谈数据结构,比如二叉树、红黑树?

  4. 说说 B-tree、B+tree 的区别和使用场景?

  5. mysql 哪个版本哪个存储引擎的索引使用的 B+tree,为什么不使用红黑树?

  6. 说说几种常见的消息中间件的区别?

  7. rabbitmq 如何保证消息的可靠性?

  8. springcloud 服务发现原理?

  9. 介绍下 springcloud 各个组件?springcloud 的注册中⼼除了 eureka 还可以用什么?

  10. 微服务有几种限流方式?

  11. ......

答案示例:

上海-拼多多,java 高级

  1. 并发编程三要素?

  2. 实现可见性的方法有哪些?

  3. 多线程的价值?

  4. 创建线程的有哪些方式?

  5. 创建线程的三种方式的对比?

  6. 线程的状态流转图

  7. Java 线程具有五种基本状态

  8. 什么是线程池?有哪几种创建方式?

  9. 四种线程池的创建

  10. 线程池的优点?

  11. 常用的并发工具类有哪些?

  12. CyclicBarrier 和 CountDownLatch 的区别

  13. ......

答案示例:

以及暂时收集到的所有大厂面试真题 pdf↓

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值