前言:
伴随着新技术的不断更新,现在的面试太难了!主要分为一下两个点
-
Java 不仅吸收了 C++的优点,还摒弃了 C++里难以理解的多继承、指针等概念,因此 Java 语言具有功能强大和简单易用两个特征。。所以现在选择 Java 的小伙伴也是非常的多,导致了现在的竞争压力非常的大,逐步出现了僧多粥少的情况!
-
另一个就是受不可抗力原因,很多中小型互联网企业都面临了倒闭,整顿,所以就出现了“面试造火箭,入职拧螺丝”
近期一直有粉丝朋友们在后台“疯狂”私信我:想要小编整理出一份适合当下 Java 面试的实战文档
反派死于话多,直接展示:
本文收集整理了各大厂常见面试题 N 道,你想要的这里都有内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈,希望大家都能找到适合自己的公司,开开心心的撸代码。
目录:
看面试题可以是为了面试,也可以是对自己学到的东西的一种查漏补缺,更加深刻的去了解一些核心知识点
MyBatis 面试题
-
1、什么是 Mybatis?
-
2、Mybaits 的优点:
-
3、MyBatis 框架的缺点:
-
4、MyBatis 框架适用场合:
-
5、MyBatis 与 Hibernate 有哪些不同?
-
6、#{}和 ${}的区别是什么?
-
7、当实体类中的属性名和表中的字段名不一样 ,怎么办 ?
-
8、 模糊查询 like 语句该怎么写?
第 1 种:在 Java 代码中添加 sql 通配符。
string wildcardname = “%smi%”;
list<name> names = mapper.selectlike(wildcardname);
<select id=”selectlike”>
select * from foo where bar like #{value}
</select>
复制代码
...................MyBatis 面试题共 27 道,内容过多,文章尽量简洁,需要整个文档资料的私信我(面试)即可获取免费领取方式
ZooKeeper 面试题
ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现。分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、配置维护,名字服务、分布式同步、分布式锁和分布式队列等功能。
-
zookeeper 负载均衡和 nginx 负载均衡区别
-
Zookeeper Watcher 机制--数据变更通知
-
客户端注册 Watcher 实现
-
zookeeper 是如何保证事务的顺序一致性的?
-
Zookeeper 对节点的 watch 监听通知是永久的吗?为什么不是永久的?
-
zk 节点宕机如何处理?
Zookeeper 本身也是集群,推荐配置不少于 3 个服务器。Zookeeper 自身也要保证当一个节点宕机时,其他节点会继续提供服务。如果是一个 Follower 宕机,还有 2 台服务器提供访问,因为 Zookeeper 上的数据是有多个副本的,数据并不会丢失;如果是一个 Leader 宕机,Zookeeper 会选举出新的 Leader。ZK 集群的机制是只要超过半数的节点正常,集群就能正常提供服务。只有在 ZK 节点挂得太多,只剩一半或不到一半节点能工作,集群才失效。所以 3 个节点的 cluster 可以挂掉 1 个节点(leader 可以得到 2 票>1.5)2 个节点的 cluster 就不能挂掉任何 1 个节点了(leader 可以得到 1 票<=1)
..........
Dubbo 面试题
Spring Eureka 从开源转变为闭源,Consul 正在崛起,而 Dubbo 又开始重新更新。目前市场上仍有不少公司使用 dubbo 我们也需要继续学习。
-
为什么要用 Dubbo?
-
默认使用的是什么通信框架,还有别的选择吗?
-
服务调用是阻塞的吗?
-
一般使用什么注册中心?还有别的选择吗?
-
默认使用什么序列化框架,你知道的还有哪些?
-
Dubbo 的整体架构设计有哪些分层?
...............
Elasticsearch 面试题
-
elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段 。
-
elasticsearch 索引数据多了怎么办,如何调优,部署
-
elasticsearch 是如何实现 master 选举的
-
Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法
-
详细描述一下 Elasticsearch 更新和删除文档的过程。
-
Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?
...........
Redis 面试题
随着应用研发技术的不断成熟,Redis 缓存技术已经成为后台研发同学必备的能力之一。在很多公司面试的过程中,都必不可少地考察 Redis 知识点的掌握。
-
使用 Redis 有哪些好处?
-
Redis 是单进程单线程的?
-
Redis 的持久化机制是什么?各自的优缺点?
-
Redis 常见异常问题和解决方案(雪崩,穿透...)
-
redis 过期键的删除策略?
-
为什么 redis 需要把所有数据放到内存中?
-
Redis 集群的主从复制模型是怎样的?
-
Redis key 的过期时间和永久有效分别怎么设置?
MySQL 面试题
如今互联网行业用的最多就是 MySQL,然而对于高级 Web 面试者,尤其对于寻找 30k 下工作的求职者,很多 MySQL 相关知识点基本都会涉及,如果面试中,你的相关知识答的模糊和不切要点,基本大多稍好公司的面试官,基本也不会对你有兴趣,毕竟稍微量大的项目,最终都会让你去深入数据库,而且最终的大多瓶颈首先也会出现在数据库。
MySQL 相关存储引擎。
MySQL 索引实现原理。
MySQL 数据库锁。
MySQL 的 SQL 调优。
MySQL 分表分库全局 ID。
...............
Java 并发编程
-
在 java 中守护线程和本地线程区别?
-
什么是多线程中的上下文切换?
-
Java 中用到的线程调度算法是什么?
-
什么是线程组,为什么在 Java 中不推荐使用?
-
在 Java 中 Executor 和 Executors 的区别?
-
并发编程三要素?
-
什么是线程池?有哪几种创建方式?
.........内容过多,文章尽量简洁,需要整个文档资料的私信我(面试)即可获取免费领取方式
Spring 面试题
-
1. 谈谈对 Spring IoC 的理解?
-
2. 谈谈对 Spring DI 的理解?
-
3. BeanFactory 接口和 ApplicationContext 接口不同点是什么?
-
4. 请介绍你熟悉的 Spring 核心类,并说明有什么作用?
-
5. 介绍一下 Spring 的事务的了解?
-
6. 介绍一下 Spring 的事务实现方式?
-
7.什么是 Spring 的依赖注入?
..........
Kafka 面试题
-
Kafka 与传统 MQ 消息系统之间有三个关键区别
-
讲一讲 kafka 的 ack 的三种机制
-
消费者故障,出现活锁问题如何解决?
-
kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费
-
kafka 如何不消费重复数据?比如扣款,我们不能重复的扣。
....
大厂面试部分真题展示
杭州-蚂蚁金服-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. 红黑树原理?
杭州-蚂蚁金服-资深工程师
1. 二叉搜索树和平衡二叉树有什么关系,强平衡二叉树( AVL 树)和弱平衡二叉树(红黑树)有什么区别
2. B 树和 B+ 树的区别,为什么 MySQL 要使用 B+ 树
3. HashMap 如何解决 Hash 冲突
4. epoll 和 poll 的区别,及其应用场景
5. 简述线程池原理, FixedThreadPool 用的阻塞队列是什么?
6. sychronized 和 ReentrantLock 的区别
7. sychronized 的自旋锁、偏向锁、轻量级锁、重量级锁,分别介绍和联系
8. HTTP 有哪些问题,加密算法有哪些,针对不同加密方式可能产生的问题,及其HTTPS 是如何保证安全传输的
上海-拼多多-Java 高级
1 、并发编程三要素?
2 、实现可见性的方法有哪些?
3 、多线程的价值?
4 、创建线程的有哪些方式?
5 、创建线程的三种方式的对比?
6 、线程的状态流转图
7 、 Java 线程具有五种基本状态
8 、什么是线程池?有哪几种创建方式?
9 、四种线程池的创建:
10 、线程池的优点?
11 、常用的并发工具类有哪些?
12 、 CyclicBarrier 和 CountDownLatch 的区别
13 、 synchronized 的作用?
14 、 volatile 关键字的作用
15 、什么是 CAS
16 、 CAS 的问题
17 、什么是 Future ?
18 、什么是 AQS
19 、 AQS 支持两种同步方式:
20 、 ReadWriteLock 是什么
21 、 FutureTask 是什么
22 、 synchronized 和 ReentrantLock 的区别
23 、什么是乐观锁和悲观锁
24 、线程 B 怎么知道线程 A 修改了变量
25 、 synchronized 、 volatile 、 CAS 比较
26 、 sleep 方法和 wait 方法有什么区别 ?
27 、 ThreadLocal 是什么?有什么用?
28 、为什么 wait() 方法和 notify()/notifyAll() 方法要在同步块中被调 用
29 、多线程同步有哪几种方法?
30 、线程的调度策略
31 、 ConcurrentHashMap 的并发度是什么
32 、 Linux 环境下如何查找哪个线程使用 CPU 最长
33 、 Java 死锁以及如何避免?
34 、死锁的原因
35 、怎么唤醒一个阻塞的线程
36 、不可变对象对多线程有什么帮助
37 、什么是多线程的上下文切换
38 、如果你提交任务时,线程池队列已满,这时会发生什么
39 、 Java 中用到的线程调度算法是什么
40 、什么是线程调度器 (Thread Scheduler) 和时间分片 (TimeSlicing) ?
41 、什么是自旋
42 、 Java Concurrency API 中的 Lock 接口 (Lock interface) 是什么?对 比同步它有什么优势?
43 、单例模式的线程安全性
44 、 Semaphore 有什么作用
45 、 Executors 类是什么?
46、线程类的构造方法、静态块是被哪个线程调用的
上海-携程-Java 高级
1. 描述一下 JVM 加载 Class 文件的原理机制 ?
2. 什么是类加载器?
3. 类加载器有哪些?
4. 什么是 tomcat 类加载机制?
5、类加载器双亲委派模型机制?
6. Java 内存分配?
7. Java 堆的结构是什么样子的?
8. 简述各个版本内存区域的变化?
9. 说说各个区域的作用?
10. Java 中会存在内存泄漏吗,简述一下?
11. Java 类加载过程?
12. 什么是 GC? 为什么要有 GC ?
13. 简述一下 Java 垃圾回收机制?
14. 如何判断一个对象是否存活?
15. 垃圾回收的优点和原理,并考虑 2 种回收机制? 基本原理是什么?
16. 深拷贝和浅拷贝?
17. 什么是分布式垃圾回收( DGC)?它是如何工作的?
深圳-OPPO-Java 高级
1. 说说你的⼯作经历?
2. 项⽬主要负责哪⼏个模块?
3. 画出你项⽬的结构图
4. Eureka 是如何进⾏服务注册的?
5. 如果服务宕机或者⽆法访问了,我还去请求该服务, Eureka 会怎么处理? 会有什么现象?
6. 谈谈 Eureka 的保护机制
7. Ribbon 的负载均衡是⾯向服务内部还是外部的?
8. Ribbon 如何实现负载均衡的?
9. 如果没有 Eureka ,我能直接通过 Ribbon 进⾏服务请求吗?
10. Hystrix 如何实现熔断?
11. 当服务⽆法访问时,是直接熔断还是降级?
12. 怎么样才会出现熔断?
13. 在 Springcloud 中,消费者调⽤提供者的流程是如何的?请画图 springcloud 的⼯作原理
14. Redis 的集群⽅式有哪些?
15. 如果你原来读取的 Redis 中的数据,它的数据的结构发⽣了变化,如何在 不改变代码的情况下进⾏处理,使下游业务不受影响?
16. Redis 的持久化⽅式有哪些?说说他们的具体实现、
17. 使⽤ Redis 的过程中有没有遇到什么问题?
18. Redis 的内存回收机制有哪些?
19. Redis 的过期策略有哪些?简单介绍下不同策略
20. 说说 Redis 的淘汰策略?淘汰的算法可以修改或者⾃⼰重写吗?
21. 你们的项⽬中消息中间件⽤的是什么?
22. 你们的 Rabbit 集群是怎么部署的?
23. Rabbit 集群之间的数据是如何同步的?同步⽅式还是异步⽅式?
24. ⼀个队列中的数据你们是存放在⼀台机⼦上还是多台机⼦上?为什么?
25. RabbitMQ 内部结构是怎么样的?请画出 RabbitMQ 的架构图
26. 你们公司的数据库有分库分表吗?如何实现的?
27. Mysql 的索引是基于什么?
28. 说说 B+ 树
29. 使⽤⾃增 ID 和 UUID 作为主键有什么不同?
30. 说说数据库的事务隔离级别有哪些?
31. 在代码中,我们如何实现事务?
32. 如果在⼀个事务中,代码业务流程很⻓,会有什么问题吗?为什么会出 现这种问题?
33. 使⽤ volatile 关键字的时候有遇到过什么问题吗?为什么会出现这种问 题?
34. 请说说 volatile 的底层实现原理
35. 如何创建线程池?有什么参数?线程池的实现原理
36. 你有什么问题想问我们的吗?
深圳-丰巢科技-Java 高级
1.bio 与 nio 的区别
2.select 与 poll 的区别
3.zookeeper 的⼯作原理
4.cap 理论
5. ⼆段式满⾜ cap 理论的哪两个理论
6. 线程池的参数配置,为什么 java 官⽅提供⼯⼚⽅法给线程池
7. 分布式框架 dubbo 的好处,不⽤ dubbo 可不可以。为什么要使⽤分布式
8. 七个垃圾回收器之间如何搭配使⽤
9. 接⼝限流⽅案
10.ConcurrentHashMap 使⽤原理
11. 解决 map 的并发问题⽅案
12. 什么是协程,以及实现要点
13.lru cache 使⽤ hash map 的实现(算法)
14. 图的深度遍历和⼴度遍历(算法)
15. 基本排序(算法)
16. 设计模式的使⽤
17.java 8 流式使⽤
深圳-乐信-Java 高级
1. 画出项⽬的架构图
2. 所处⾃⼰负责的业务模块,其中⽤到了哪些技术点?
3. 如何实现最终⼀致性分布式事务?
4. 索引的 B+ 树结构是怎样的?
5. 哪些情况下索引会失效?除了加索引优化查询,还有哪些⽅法?
6. 说说⾃⼰了解的设计模式? Spring 中⽤到了哪些设计模式?⾃⼰有⽤过哪些设 计模式吗?
7.TCP 三次握⼿和四次挥⼿机制?
8.Https 原理?
9.Redis 的数据类型有哪些?与 Memcached 的区别?
10. 消息队列有⽤到吗?具体在项⽬中是怎么⽤的?如何保证消息的可靠传递?
深圳-商汤科技-Java 高级
1. 简历写什么问什么,注意所⽤技术产品的同类产品⽣态及对⽐。
2.kafka 数据分区和消费者的关系, kafka 的数据 offset 读取流程, kafka 内部如何保证顺序,结合外部组件如何保证消费者的顺序
3.cms 垃圾回收机制
4.springcloud 各个组件功能,内部细节,与 dubbo 区别, dubbo 架构, dubbo 负载策略
5.mapreduce 原理
6.nio , bio , sellector/epoll , aio , netty ⾃带编解码器, netty 优势, java 内存模型
7.akka 模型
8.java arraylist , linkedlist 区分及实现原理, hashmap 和 concurrenthashmap 区分及实现原理, concurrenthashmap 1.7 和 1.8 区分,
实现细节, linkedhashmap 排序原理,应⽤如何保证数据幂等
9.web.xml listener , filter , servlet 加载顺序。如何不再 web , xml 中配置来加载 filter
10. ⽆穷数就 top K 问题,提供多个⽅案
11.a , b , c 三张表,做关联查询,如何优化,可做外键,只在 c 表加 a 表外键即可。
12.CourrentHashMap JDK1.7 和 JDK1.8 有什么区别?
13. 线程 a , b , c , d 运⾏任务,怎么保证当 a , b , c 线程执⾏完再执⾏ d 线程 ?
14. 分布式系统中如何保证数据的⼀致性?
15. 拆分微服务应该注意哪些地⽅,如何拆分?
16.SpringCloud 全家桶包含哪些组件?
17. 有没了解 Docker , Docker 和虚拟机有什么区别?
18. 同⼀个宿主机中多个 Docker 容器之间如何通信?多个宿主机中 Docker 容器之间如何通信?
19. ⾼并发系统如何做性能优化?如何防⽌库存超卖?
20. 如何保证服务幂等性?
面试阶段不管遇到什么情况,尽可能保持心态好,现在大环境不好,很多公司招人的标准其实或多或少在变得更高,有可能你费尽心思准备了很久,但面试的过程和结果还是不尽人意,这也是正常的,毕竟是大厂嘛,要是那么好进就不会那么多人心向往之了。 由于篇幅太大更多技术栈的面试题在这就不多做展示了