mysql java 缓存框架_Java面试清单最全:基础-分布式-Spring-数据库-并发-缓存-高级...

今天是年中619了,2020年就过去了一半,春招已过,再过两月又是秋招了,不知道有多少朋友春招错失良机,正在等待着秋招的到来。

小编最近花了一个星期的时间去整理了咱Java岗招聘必备的面试知识点(并给出本人认为比较合理的解析),从基础-分布式-Spring-数据库-线程-网络-JVM-Tomcat-并发-缓存-算法与数据结构-并发-中级-高级等等,每一个都有筛选出很多知识点,大家其实也可根据各知识点在没有答案的情况下测试自己会是不会,有没有理解。

由于篇幅的原因,文章只是每个模块例举一部分的题目,详情的答案解析也有整理的(下面会展示一部分),更多完整题目+答案解析一篇文章是无法全部铺上,所以可以提供完整的面试题及答案...点我呀......1. 什么是 Java 程序的主类?应用程序和小程序的主类有何不同?

2. 成员变量与局部变量的区别有哪些?

3. 构造器 Constructor 是否可被 override?

4. String StringBuffer 和 StringBuilder 的区别是什么?String 为什么是不可变的?

5. 重载和重写的区别?

6. 对象的相等与指向他们的引用相等,两者有什么不同?

7. 在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?

8. 在一个静态方法内调用一个非静态成员为什么是非法的?

9. 什么是方法的返回值?返回值在类的方法里的作用是什么?

10. 简述线程,程序、进程的基本概念。以及他们之间关系是什么?

Netty1. BIO、NIO 和 AIO 的区别?

2. Netty 的特点?

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

4. Netty的线程模型

5. 如何选择序列化协议?

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

7. NioEventLoopGroup源码

8. Netty的零拷贝实现

分布式1. ActiveMQ 中的消息重发时间间隔和重发次数吗?

2. 在 Nginx 中,如何使用未定义的服务器名称来阻止处理请求?

3. Kafka 创建 Topic 时如何将分区放置到不同的 Broker 中?

4. MongoDB 在 A:{B,C}上建立索引,查询 A:{B,C}和 A:{C,B}都会使用索引吗?

5. Kafka 消息是采用 Pull 模式,还是 Push 模式?

6. 若 cluster 中拥有某个 queue 的 owner node 失效了,且该 queue 被声明具有durable 属性,是 否能够成功从其他 node 上重新声明该 queue ?

7. RabbitMQ 上的一个 queue 中存放的 message 是否有数量限制?

8. memcached 和服务器的 local cache(比如 PHP 的 APC、mmap 文件等)相比,有什么优缺点?

9. 为什么说保证 message 被可靠持久化的条件是 queue 和 exchange 具有durable 属性,同时 message 具有 persistent 属性才行?

10. 如何理解 MongoDB 中的 GridFS 机制,MongoDB 为何使用 GridFS 来存储文件?

Dubbo1. Dubbo 支持哪些协议,每种协议的应用场景,优缺点?

2. Dubbo 超时时间怎样设置?

3. Dubbo 有些哪些注册中心?

4. Dubbo 集群的负载均衡有哪些策略

5. Dubbo 中 zookeeper 做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么?

6. dubbo 服务负载均衡策略?

7. Dubbo 在安全机制方面是如何解决的?

8. dubbo 连接注册中心和直连的区别?

9. dubbo 通信协议 dubbo 协议为什么采用异步单一长连接

10. Dubbo 的注册中心集群挂掉,发布者和订阅者之间还能通信么?

Spring相关1. Spring Boot、Spring MVC 和 Spring 有什么区别?

2. SpringMvc 用什么对象从后台向前台传递数据的?

3. 服务注册和发现是什么意思?Spring Cloud 如何实现?

4. 请解释 Spring Bean 的生命周期?

5. 当一个方法向 AJAX 返回特殊对象,比如 Object,List 等,需要做什么处理?

6. Spring 框架中的单例 Beans 是线程安全的么?

7. SpringMVC 怎么样设定重定向和转发的?

8. 什么是 Hystrix 断路器?我们需要它吗?

9. 如何实现 Spring Boot 应用程序的安全性?

10. Spring Boot 配置的默认 H2 数据库的名字是上面?为什么默认的数据库名字是 testdb?

数据库1. mysql都有什么锁,死锁判定原理和具体场景,死锁怎么解决?

2. varchar和char的使用场景?

3. 聚集索引和非聚集索引区别?

4. 有哪些锁(乐观锁悲观锁),select 时怎么加排它锁?

5. 非关系型数据库和关系型数据库区别,优势比较?

6. 数据库三范式,根据某个场景设计数据表?

7. MySQL常见的三种存储引擎(InnoDB、MyISAM、MEMORY)的区别?

8. MySQL的MyISAM与InnoDB两种存储引擎在,事务、锁级别,各自的适用场景?

9. 事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL默认是哪个级别?

10. MySQL B+Tree索引和Hash索引的区别?

线程1. atomicinteger和volatile等线程安全操作的关键字的理解和使用

2. volatile 变量是什么?volatile 变量和 atomic 变量有什么不同?

3. 当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其它方法?

4. 简述 synchronized 和

java.util.concurrent.locks.Lock 的异同?

5. 多线程之间通信的同步问题,synchronized锁的是对象,衍伸出和synchronized相关很多的具体问题,例如同一个类不同方法都有synchronized锁,一个对象是否可以同时访问。或者一个类的static构造方法加上synchronized之后的锁的影响。

6. volatile 类型变量提供什么保证?能使得一个非原子操作变成原子操作吗?

7. 了解可重入锁的含义,以及ReentrantLock 和synchronized的区别

8. Java创建线程之后,直接调用start()方法和run()的区别

9. 同步的数据结构,例如concurrentHashMap的源码理解以及内部实现原理,为什么它是同步的且效率高

10. newFixedThreadPool此种线程池如果线程数达到最大值后会怎么办,底层原理

中级1. Dubbo的运行原理,与SpringCould相比它为什么效率要高一些,Zookeeper底层原理

2. 说出几种MQ之间的区别,以及为什么使用这种MQ,消息重复发送(幂等性),消息发送失败,消息掉包,长时间收不到消息,发送的消息太大造成接收不成功

3. Spring的AOP和IOC是什么?使用场景有哪些?Spring事务,事务的属性,数据库隔离级别

4. SpringCould组件有哪些,它们的作用是什么?微服务的CAP是什么?BASE是什么?

5. HashMap底层实现原理,红黑树,B+树,B树的结构原理,CAS(比较与交换)实现原理

6. Redis支持的数据类型以及使用场景,持久化,哨兵机制,缓存击穿,缓存穿透

7. 安全性问题(数据篡改(拿到别人的URL,篡改数据(金额)发送给系统))

8. 索引使用的限制条件,sql优化有哪些,数据同步问题(缓存,数据库数据同步)

9. 悲观锁,乐观锁,读写锁,行锁,表锁,自旋锁,死锁,分布式锁,线程同步锁,公平锁,非公平锁分别是什么?

10. JVM内存模型,算法,垃圾回收器,调优,类加载机制(双亲委派),创建一个对象,这个对象在内存中是怎么分配的?

网络1. 为什么要三次握手

2. 二次握手有什么问题

3. 三次握手有哪些缺陷

4. TCP是如何控制流量的

5. 发送方发送频率过高造成丢包,TCP是如何解决的

6. HTTPs加密在哪一层实现

7. http是无状态通信,http的请求方式有哪些,可以自己定义新的请求方式么。

8. socket通信,以及长连接,分包,连接异常断开的处理。

9. socket通信模型的使用,AIO和NIO。

10. socket框架netty的使用,以及NIO的实现原理,为什么是异步非阻塞

JVM1. GC 是什么? 为什么要有 GC?

2. 如何判断一个对象是否存活?(或者 GC 对象的判定方法)

3. 垃圾回收的优点和原理。并考虑 2 种回收机制

4. 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?

5. Java 中会存在内存泄漏吗,请简单描述

6. 如果对象的引用被置为 null,垃圾收集器是否会立即释放对象占用的内存?

7. 什么是分布式垃圾回收(DGC)?它是如何工作的?

8. 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?

9. 在 Java 中,对象什么时候可以被垃圾回收?

10. 简述 Java 内存分配与回收策略以及 Minor GC 和 MajorGC

Tomcat1. Tomcat 的缺省端口是多少,怎么修改?

2. tomcat 有哪几种 Connector 运行模式( 优化) ?

3. Tomcat 有几种部署方式?

4. tomcat 容器是如何创建 servlet 类实例?用到了什么原理?

5. tomcat 如何优化?

6. 怎样加大 tomcat 的内存

7. 关于 Tomcat 的 的 session 数目

8. 监视 Tomcat 的内存使用情况

9. 打印类的加载情况及对象的回收情况

10. Tomcat 一个请求的完整过程

并发1. 为什么说Synchronized是非公平锁?

2. 为什么说Synchronized是一个悲观锁?乐观锁的实现原理又是什么?什么是CAS,它有 什么特性?

3. CyclicBarrier 和 CountDownLatch 看起来很相似,请对比下呢?

4. 除了ReetrantLock,你还接触过JUC中的哪些并发工具?

5. 如何让Java的线程彼此同步?你了解过哪些同步器?请分别介绍下

6. 请谈谈volatile有什么特点,为什么它能保证变量对所有线程的可见性?

7. 很多人都说要慎用ThreadLocal,谈谈你的理解,使用ThreadLocal需要注意些什么?

8. 什么是Java的内存模型,Java中各个线程是怎么彼此看到对方的变量的?

9. 跟 Synchronized 相 比 ,可重入锁ReentrantLock其实现原理有什么不同?

10. ReentrantLock 是如何实现可重入性的?

Redis1. 请介绍一下Redis的数据类型SortedSet(zset)以及底层实现机制?

2. redis 常见数据结构以及使用场景分析(String、Hash、List、Set、Sorted Set)

3. redis 设置过期时间

4. redis 内存淘汰机制(MySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据?)

5. redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)

6. 如何保证缓存与数据库双写时的数据一致性?

7. Redis 常见异常及解决方案(缓存穿透、缓存雪崩、缓存预热、缓存降级)

8. 分布式环境下常见的应用场景(分布式锁、分布式自增 ID)

9. Redis 集群模式(主从模式、哨兵模式、Cluster 集群模式)

10. 如何解决 Redis 的并发竞争 Key 问题

MyBatis1. Mybatis中的Dao接口和XML文件里的SQL是如何建立关系的?

2. 当实体类中的属性名和表中的字段名不一样,怎么办 ?

3. 模糊查询like语句该怎么写?

4. 什么是MyBatis的接口绑定?有哪些实现方式?

5. 使用MyBatis的mapper接口调用时要注意的事项

6. 通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?

7. Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?

8. Mybatis 是如何进行分页的?分页插件的原理是什么?

9. Mybatis 动态 SQL 是做什么的?都有哪些动态 SQL ?能简述一下动态 SQL 的执行原理吗?

10. Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?

算法与数据结构1. 最长公共的序列问题

2. 如何仅用递归函数和栈操作逆序一个栈?

3. 将单向链表按某值划分成左边小、中间相等、右边大的形式

4. 分别用递归和非递归方式实现二叉树先序、中序和后序遍历

5. 将单链表的每K个节点之间逆序

6. 在二叉树中找到累加和为指定值的最长路径长度

7. 判断一棵二叉树是否为搜索二叉树和完全二叉树

8. 斐波拉契系列问题的递归和动态规划

9. 判断字符数组中是否有的字符都只出现过一次

10. 未排序数组中累加和小于或等于给定值的最长子数组长度

高级1. 为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么优点和缺点?

2. 为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数据库如何进行垂直拆分或水平拆分的?

3. 说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程?

4. 有没有做 MySQL 读写分离?如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决MySQL 主从同步的延时问题?

5. 如何设计可以动态扩容缩容的分库分表方案?

6. 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?

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

8. 布式锁?使用 zk 来设计分布式锁可以吗?这两种分布式锁的实现方式哪种效率比较高?

9. redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?

10. 了解什么是 redis 的雪崩、穿透和击穿?redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 redis 的穿透?

完整题目+答案

篇幅有限,就说到这儿了,所整理的全部题目+答案都如下所展示的,全部已经整理成PDF文档了,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
案例一:电商网站 电商网站是一个复杂的信息系统,需要支持用户注册、商品展示、购物车管理、订单处理等业务。以下是该系统实施中使用的技术和框架: 1. 消息队列:使用Kafka作为消息队列,用于异步处理订单和库存信息。当用户下单时,订单信息会被发送到Kafka,然后由订单处理系统进行处理。库存信息也会被发送到Kafka,由库存管理系统进行处理。 2. 分布式存储:使用MongoDB作为分布式存储,存储商品信息、用户信息、订单信息等。MongoDB支持水平扩展,可以满足系统的高并发访问需求。 3. 分布式事务:使用Saga模式实现分布式事务,当用户下单后,订单处理系统会向库存管理系统发起扣减库存的请求,如果请求成功,则确认订单,否则回滚事务。 4. 分布式缓存:使用Redis作为分布式缓存缓存商品信息、用户信息、订单信息等。Redis支持高并发访问和快速响应,可以提高系统的性能。 5. 分布式数据库:使用MySQL作为分布式数据库,用于存储用户登录信息、地址信息、商品评价等。MySQL支持水平扩展和读写分离,可以提高系统的可用性和性能。 6. RPC服务框架:使用Dubbo作为RPC服务框架,实现系统的服务化架构。订单处理系统、库存管理系统、商品展示系统等均作为Dubbo服务提供者,供其他系统调用。 7. 网关:使用Nginx作为网关,将用户请求路由到不同的系统。Nginx支持负载均衡和反向代理,可以提高系统的可用性和性能。 案例二:在线教育平台 在线教育平台是一个大型的信息系统,需要支持学生注册、课程管理、作业管理、成绩管理等业务。以下是该系统实施中使用的技术和框架: 1. 消息队列:使用RocketMQ作为消息队列,用于异步处理作业和成绩信息。当学生提交作业时,作业信息会被发送到RocketMQ,然后由作业处理系统进行处理。成绩信息也会被发送到RocketMQ,由成绩管理系统进行处理。 2. 分布式存储:使用HBase作为分布式存储,存储学生信息、课程信息、作业信息、成绩信息等。HBase支持高并发访问和快速响应,可以满足系统的高并发访问需求。 3. 分布式事务:使用TCC模式实现分布式事务,当学生提交作业时,作业处理系统会向成绩管理系统发起提交成绩的请求,如果请求成功,则确认提交作业,否则回滚事务。 4. 分布式缓存:使用Ehcache作为分布式缓存缓存学生信息、课程信息、作业信息、成绩信息等。Ehcache支持高并发访问和快速响应,可以提高系统的性能。 5. 分布式数据库:使用Oracle作为分布式数据库,用于存储学生登录信息、地址信息、课程评价等。Oracle支持水平扩展和读写分离,可以提高系统的可用性和性能。 6. RPC服务框架:使用Spring Cloud作为RPC服务框架,实现系统的微服务化架构。作业处理系统、成绩管理系统、课程展示系统等均作为Spring Cloud服务提供者,供其他系统调用。 7. 网关:使用Zuul作为网关,将用户请求路由到不同的系统。Zuul支持负载均衡和反向代理,可以提高系统的可用性和性能。 总结 以上两个案例中,我们展示了电商网站和在线教育平台的实施案例。可以看出,这些信息系统中使用了多种技术和框架,如消息队列、分布式存储、分布式事务、分布式缓存分布式数据库、RPC服务框架、网关等。这些技术和框架的使用,可以提高系统的可用性、性能、可扩展性和可维护性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值