2020-Java面试实战总纲

一 基础

1.1 MyBatis #{},${}区别?

1.2 MyBatis 插件用过哪些?

1.3 Hashmap 为什么是线程不安全的

1.3.1 我们知道并发环境下使用concurrentHashMap,为何它就是线程安全的?1.7和1.8有何不同?

1.4 Hashmap 数据结构

1.4.1 散列表后面跟什么数据结构是怎么确定的?

1.5 HTTPS

1.5.1 HTTPS第三方颁发的证书,存放位置在哪里

1.6 String 的数据结构

1.7 Runable和Thread区别

1.7.1 Runable中的run()方法和Thread中的start()方法的区别

1.8 Java反射的原理,注解的原理

1.9 ArrayList和LinkedList的插入,取出时间复杂度

1.10 JDK1.8新特性

1.11 过滤器和拦截器区别,分别属于谁的技术栈

1.12 ThreadLocal

二 数据库

2.1 MySQL存储引擎种类及区别, 当前项目用的啥引擎, 为啥?

2.2 MySQL 四种事务隔离级别, RC是如何解决RU的脏读问题的?

2.2.1 RC隔离级别是如何解决RU的脏读问题的
2.2.2 说到MySQL的事务隔离级别,那你知道MVCC吗?它解决了什么问题?

2.3 MySQL explain 的参数?

2.4 SQL优化

2.4.1 索引为什么那么快?什么情况下使用索引?索引失效的情况,索引的类型(BTree,B+Tree)

2.5 SQL回表查询

2.6 Redis与MySQL 的数据一致性如何保证

2.7 为什么先更新数据库在更新Redis

2.8 如何判断数据库是否打满了?

2.9 MySQL的主从复制,读写分离实现

三 Spring

3.1 Spring事务传播机制

3.2 SpringAOP原理

3.3 Spring IoC和DI

3.3.1 Spring Bean的注入方式
3.3.2 如果两个甚至多个Bean有循环依赖,其注入方式可选哪种?

3.4 Spring Bean的生命周期

3.5 Spring自定义注解实现方式

3.6 SpringBoot start 运行机制

3.7 SpringMVC 的工作流程

四 设计模式

4.1 代理模式和装饰模式的区别

4.2 工作中常用的设计模式有哪些?

4.3 你知道JDK和Spring中用到了哪些设计模式吗?

五 缓存

5.1 Redis 数据结构有哪些? zset数据结构?

5.2 聊聊redis的线程模型, 为啥单线程还能有很高的效率?

5.3 Redis map底层实现原理, 为什么不能过多?

5.4 项目中Redis数据的更新方式

5.4.1 就不会有并发问题了吗?

5.5 redis hash结构的扩容方案和 java hashmap扩容的一个区别,因为扩容阶段,一般是无法进行读写操作的,那redis是如何避免扩容导致的卡顿的(hash)

5.6 持久化策略

5.7 谈谈redis缓存雪崩、穿透 出现的场景以及防止手段?都有哪些监控措施?

5.8 redis你是如何压测的,瓶颈在哪?为什么?

5.9 Redis中key的过期机制?

5.10 Redis 主从复制方式 ,复制步骤

5.11 Redis数据丢失的两种场景

5.12 Redis实现分布式锁

5.13 redis如何通过读写分离来承载读请求QPS超过10万+?

六 并发多线程

6.0 syncronized 和 Lock的异同

6.1 谈谈volatile

6.1.1 什么是可见性
6.1.2 什么是原子性
6.1.3 什么是有序性

6.2 CAS工作原理

6.3 JUC锁

6.4 线程池 ThreadPoolExecutor? 项目中使用哪个线程池? 七大参数了解吗?

6.4.1 线程池的局决策略

6.5 原子类AtomicInteger的ABA问题谈谈, 原子更新引用知道吗?

6.6 我们知道 ArrayList 是线程不安全的, 请编写一个不安全的案例并给出解决方案

6.7 CountDownLatch/CyclicBarrier/Semphore使用过吗?

6.8 阻塞队列知道吗?

6.9 线程池处理任务的流程是怎样的?

6.10 死锁编码及定位分析

6.11 如何实现一个生产者与消费者模式?

七 消息队列

7.1 项目中是怎么用消息队列的?

7.2 Kafka 怎样保证数据不丢失?怎样保证幂等?有哪些方法保证业务幂等?

7.3 如何保证消息队列的高可用?

7.4 Kafka 如何保证消息的可靠性传输,顺序性传输啊?消息丢了怎么办?

7.5 如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?

7.6 Kafka 吞吐量大的原因

八 JVM

8.1 JVM 与 JMM

8.2 JVM内存结构划分以及存储内容

8.3 谈谈JVM的垃圾回收机制,你们生产上用的哪一种?为什么?

8.4 说一下GC Roots

8.5 介绍下CMS和G1 垃圾回收器 随便说下它们的区别

九 分布式微服务

延1 说说 Zookeeper 都有哪些使用场景?

延2 分布式锁是啥? 该如何进行选择?

延2.1 实现分布式锁的方式有哪几种?该如何进行选择?
延2.2 讲下 Redlock
延2.3 讲下 Curator

延3 说说你们的分布式 session 方案是啥? 怎么做的?

延4 了解分布式事务方案吗? 你们都怎么做的? 有什么坑?

延5 分布式锁和分布式事务的区别

9.1 为什么要把系统拆分成分布式的?为什么要用Dubbo?

9.2 RPC 的原理

9.3 Dubbo的工作原理是啥? 注册中心挂了会怎样?

9.3.1 Dubbo 单注册表中心会怎样?注册中心挂了还可以继续通信吗?
9.3.2 Dubbo监控中心Monitor的监控原理

9.4 Dubbo 如何区分测试和生产环境?

9.5 Dubbo都支持哪些通信协议以及序列化协议?

9.6 Dubbo都支持哪些负载均衡,高可用以及动态代理的策略?

9.7 SPI 是什么思想? Dubbo的 SPI 机制是怎么玩的?

9.8 基于Dubbo如何做服务治理,服务降级以及重试?

9.9 分布式系统中接口的幂等性该如何保证? 举例说明(如重复扣款的问题)

9.10 分布式系统中的接口如何保证顺序性?

9.11 如何设计一个类似 Dubbo 的 RPC框架? 架构上该如何考虑?

9.12 说一下Spring Cloud的核心架构原理?

9.13 服务注册中心的对比,选择

9.13.1 注册中心集群如何保证高可用

9.14 服务网关的技术对比,选型

9.14.1 生产环境下,怎么实现的网关对服务的动态路由?
9.14.2 如果网关要抗每秒10万级的高并发, 如何做优化?
9.14.3 你们是如何基于网关做灰度发布的?

9.15 说一下服务熔断和降级

9.16 你们公司的各个服务在生产环境是如何部署的?机器配置如何?

9.17 你们系统每天有多大访问量?每个服务高峰多少QPS?压测过服务最大QPS吗?

9.18 你们系统是如何配置超时和重试参数的?

9.19 对于核心接口的防重幂等性你们是如何设计的?

9.20 从底层原理的角度,对比下Dubbo和Spring Cloud的优劣

9.21 淘宝和京东的库存是怎么实现的?

十 架构思想

10.1 百万用户量访问,进行打卡报体温,前端按照学号进行排序,后台可导出,前后端架构方面应该注意哪些问题

10.2 如何设计一个秒杀系统

在这里插入图片描述

十一 项目篇

11.1 谈谈生产上有什么让你印象比较深刻的,造成的原因,如何处理的,为什么这么处理?(这道题一定要搞明白!!!)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值