MyBatis 面试题
1、什么是 Mybatis?
2、Mybaits 的优点:
3、MyBatis 框架的缺点:
4、MyBatis 框架适用场合:
5、MyBatis 与 Hibernate 有哪些不同?
6、#{}和${}的区别是什么?
7、当实体类中的属性名和表中的字段名不一样 ,怎么办 ?
8、 模糊查询 like 语句该怎么写?
ZooKeeper 面试题
ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现。分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、配置维护,名字服务、分布式同步、分布式锁和分布式队列等功能。
zookeeper 负载均衡和 nginx 负载均衡区别
Zookeeper Watcher 机制--数据变更通知
客户端注册 Watcher 实现
zookeeper 是如何保证事务的顺序一致性的?
Zookeeper 对节点的 watch监听通知是永久的吗?为什么不是永久的?
zk 节点宕机如何处理?
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 面试题
-
谈谈对 Spring IoC 的理解?
-
谈谈对 Spring DI 的理解?
-
BeanFactory 接口和 ApplicationContext 接口不同点是什么?
-
请介绍你熟悉的 Spring 核心类,并说明有什么作用?
-
介绍一下 Spring 的事务的了解?
-
介绍一下 Spring 的事务实现方式?
7.什么是 Spring 的依赖注入?
JVM面试题
JVM三大性能调优参数,JVM 几个重要的参数
JVM调优
JVM内存管理,JVM的常见的垃圾收集器,G1垃圾收集器。GC调优,Minor GC ,Full GC 触发条件
Java内存模型
Java垃圾回收机制
描述JVM中一次Full gc过程
Java 中都有哪些引用类型?
JVM中类加载机制,类加载过程,什么是双亲委派模型?,类加载器有哪些
如何判断是否有内存泄露?定位 Full GC 发生的原因,有哪些方式?
Spring Cloud 面试题
什么是Spring Cloud?
使用Spring Cloud有什么优势?
服务注册和发现是什么意思?Spring Cloud如何实现?
负载平衡的意义什么?
什么是Hystrix?它如何实现容错?
什么是Hystrix断路器?我们需要它吗?
什么是Netflix Feign?它的优点是什么?
什么是Spring Cloud Bus?我们需要它吗?
Kafka面试题
Kafka 与传统 MQ 消息系统之间有三个关键区别?
讲一讲 kafka 的 ack 的三种机制?
消费者故障,出现活锁问题如何解决?
kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费?
kafka 如何不消费重复数据?比如扣款,我们不能重复的扣。
网路基础常见面试题
【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?
答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
【问题2】为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
答:虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。在Client发送出最后的ACK回复,但该ACK可能丢失。Server如果没有收到ACK,将不断重复发送FIN片段。所以Client不能立即关闭,它必须确认Server接收到了该ACK。Client会在发送出ACK之后进入到TIME_WAIT状态。Client会设置一个计时器,等待2MSL的时间。如果在该时间内再次收到FIN,那么Client会重发ACK并再次等待2MSL。所谓的2MSL是两倍的MSL(Maximum Segment Lifetime)。MSL指一个片段在网络中最大的存活时间,2MSL就是一个发送和一个回复所需的最大时间。如果直到2MSL,Client都没有再次收到FIN,那么Client推断ACK已经被成功接收,则结束TCP连接。
【问题3】为什么不能用两次握手进行连接?
答:3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。
现在把三次握手改成仅需要两次握手,死锁是可能发生的。作为例子,考虑计算机S和C之间的通信,假定C给S发送一个连接请求分组,S收到了这个分组,并发 送了确认应答分组。按照两次握手的协定,S认为连接已经成功地建立了,可以开始发送数据分组。可是,C在S的应答分组在传输中被丢失的情况下,将不知道S 是否已准备好,不知道S建立什么样的序列号,C甚至怀疑S是否收到自己的连接请求分组。在这种情况下,C认为连接还未建立成功,将忽略S发来的任何数据分 组,只等待连接确认应答分组。而S在发出的分组超时后,重复发送同样的分组。这样就形成了死锁。
【问题4】如果已经建立了连接,但是客户端突然出现故障了怎么办?
TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。