今年的金九银十跳槽的难度明显比往年要大很多,今天在这里给大家分享一些 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 中级
-
BeanFactory 和 ApplicationContext 有什么区别
-
Spring Bean 的生命周期
-
Spring IOC 如何实现
-
说说 Spring AOP
-
Spring AOP 实现原理
-
动态代理(cglib 与 JDK)
-
Spring 事务实现方式
-
Spring 事务底层原理
-
如何自定义注解实现功能
-
Spring MVC 运行流程
-
Spring MVC 启动流程
-
Spring 的单例实现原理
-
Spring 框架中用到了哪些设计模式
-
为什么选择 Netty
-
说说业务中,Netty 的使用场景
-
原生的 NIO 在 JDK 1.7 版本存在 epoll bug
-
TCP 粘包/拆包的解决办法
-
......
答案示例:


深圳-平安,java 中级
-
介绍简历上主要项目,画框架图,说流程
-
针对简历上的技能进行提问
-
redis 各种应用场景
-
redis 持久化机制
-
mysql 调优
-
有没了解 Docker,Docker 和虚拟机有什么区别?
-
说说 rabbitmq 的结构
-
rabbitmq 队列与消费者的关系?
-
rabbitmq 交换器种类
-
项目中哪里用到了 kafka,kafka 特性?
-
rabbitmq、RocketMq、kafka 对比
-
介绍 springcloud 核心组件及其作用,以及 springcloud 工作流程
-
介绍 springcloud 心跳机制,以及消费端如何发现服务端(Ribbon)?
-
eureka 的缺点
-
eureka 缓存机制?
-
rpc 和 http 的区别,使用场景?
-
分布式事务如何保持一致性?
-
什么情况下用到分布式开发?
-
jvm 内存模型,各个部分的特点?
-
......
-
写出几个 jvm 优化配置参数
-
有哪几种 GC 机制?
-
spring 相关...
-
数据结构相关...
-
并发相关...
-
线程池相关...
-
数据库相关...
答案示例:


深圳-银盛支付,java 中级
-
说说 springcloud 的工作原理
-
用什么组件发请求?
-
注册中心心跳是几秒?
-
消费者是如何发现服务提供者的?
-
多个消费者调用同一接口,eruka 默认的分配方式是什么?
-
说说常用的 springboot 注解,及其实现?
-
spring 的事务注解是什么?什么情况下事物才会回滚?
-
说说 spring 事物的传播性和隔离级别?
-
mysql 的引擎有什么?他们的区别?
-
innodb 如何实现 mysql 的事务?
-
mysql 索引谈一谈?
-
说说 b+树的原理?
-
让你设计一个索引,你会怎么设计?
-
还问了 git 和 svn 的区别?
-
git 命令的一些底层原理以及流程?
答案示例:

杭州-蚂蚁金服,java 高级
-
jdk1.7 到 jdk1.8 Map 发生了什么变化(底层)?
-
ConcurrentHashMap
-
并行跟并发有什么区别?
-
jdk1.7 到 jdk1.8 java 虚拟机发生了什么变化?
-
如果叫你自己设计一个中间件,你会如何设计?
-
什么是中间件?
-
ThreadLock 用过没有,说说它的作用?
-
Hashcode()和 equals()和==区别?
-
mysql 数据库中,什么情况下设置了索引但无法使用?
-
mysql 优化会不会,mycat 分库,垂直分库,水平分库?
-
分布式事务解决方案?
-
sql 语句优化会不会,说出你知道的?
-
mysql 的存储引擎了解过没有?
-
红黑树原理?
答案示例:


深圳-腾讯,java 高级
-
从简历项目中选一个项目,说说你在其中遇到了什么重大挑战?以及你的解决问题的思路?
-
一段代码要执行多个 redis 命令,不加锁的情况下如何保证原子性?
-
谈谈数据结构,比如二叉树、红黑树?
-
说说 B-tree、B+tree 的区别和使用场景?
-
mysql 哪个版本哪个存储引擎的索引使用的 B+tree,为什么不使用红黑树?
-
说说几种常见的消息中间件的区别?
-
rabbitmq 如何保证消息的可靠性?
-
springcloud 服务发现原理?
-
介绍下 springcloud 各个组件?springcloud 的注册中⼼除了 eureka 还可以用什么?
-
微服务有几种限流方式?
-
......
答案示例:


上海-拼多多,java 高级
-
并发编程三要素?
-
实现可见性的方法有哪些?
-
多线程的价值?
-
创建线程的有哪些方式?
-
创建线程的三种方式的对比?
-
线程的状态流转图
-
Java 线程具有五种基本状态
-
什么是线程池?有哪几种创建方式?
-
四种线程池的创建
-
线程池的优点?
-
常用的并发工具类有哪些?
-
CyclicBarrier 和 CountDownLatch 的区别
-
......
答案示例:

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

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

被折叠的 条评论
为什么被折叠?



