mybatis的mapper代理是用的jdk的动态代理
5.Mybatis缓存
MyBatis 默认开启了一级缓存,一级缓存是在SqlSession 层面进行缓存的。即,同一个SqlSession ,多次调用同一个Mapper和同一个方法的同一个参数,只会进行一次数据库查询,然后把数据缓存到缓冲中,以后直接先从缓存中取出数据,不会直接去查数据库。
但是不同的SqlSession对象,因为不用的SqlSession都是相互隔离的,所以相同的Mapper、参数和方法,他还是会再次发送到SQL到数据库去执行,返回结果。
为了克服这个问题,需要开启二级缓存,是的缓存SqlSessionFactory层面给各个SqlSession 对象共享。默认二级缓存是不开启的,需要手动进行配置
二级缓存的范围是 mapper 级别( mapper 同一个命名空间), mapper 以命名空间为单位创建缓存数据结构,结构是 map。 mybatis 的二级缓存是通过 CacheExecutor 实现的。 CacheExecutor其实是 Executor 的代理对象。
elasticsearch
2.说说你们公司 es 的集群架构,索引数据大小,分片有多少
按数据库划分索引。十几个库对应十几个索引,每个索引几百G,5个分片,每个分片几十G。3个副本。
1.关闭data结点的http功能 2.最小主节点数量,防止脑裂 3.指定集群及节点名字 4.一台服务器上最好只部署一个Node 5.预留一半内存给Lucene使用 6.集群恢复配置 7.索引别名和零停机 8.设置最优的分片数和备份数 9.设置合理的刷新时间 10.根据业务设置合理的字段类型
Elasticsearch 原理和使用总结_击水三千里的专栏-CSDN博客_elasticsearch原理及使用
尽可能使用基于时间的索引来管理数据保留期。根据保留期(retention period,可以理解成有效期)将数据分 组。基于时间的索引还可以轻松地随时间改变主分片和副本分片的数量(以为要生成的下一个索引进行更改)。这 简化了适应不断变化的数据量和需求。
kafka
nginx
spring boot
spring cloud
服务发现——Netflix Eureka 客服端负载均衡——Netflix Ribbon 断路器——Netflix Hystrix 服务网关——Netflix Zuul 分布式配置——Spring Cloud Config
网络
http
- HTTP/1.1与HTTP/1.0的区别
- HTTPS的加密方式是什么,讲讲整个加密解密流程
- HTTP请求报文和HTTP响应报文
- 常用的http方法
- 常用的http响应码详解
- 如何避免浏览器缓存
- 简述Http请求get和post的区别
- 什么是HTTP2.0
- Http 如何处理长连接
- http和tcp的区别
tcp
架构
系统架构
3.一个在线文档系统,文档可以被编辑,如何防止多人同时对同一份文档进a行编辑更新
7.聊下曾经参与设计的服务器架构并画图,谈谈遇到的问题,怎么解决的
13.如何优化线程数
14.常见的缓存策略有哪些,如何做到缓存与 DB 里的数据一致性,你们项目中用到了什么缓存系统,如何设计的
分布式、高并发
4.接口限流怎么做
一个基本的RPC架构里面应该至少包含以下4个组件: 1、客户端(Client):服务调用方(服务消费者) 2、客户端存根(Client Stub):存放服务端地址信息,将客户端的请求参数数据信息打包成网络消息,再通过网络传输发送给服务端 3、服务端存根(Server Stub):接收客户端发送过来的请求消息并进行解包,然后再调用本地服务进行处理 4、服务端(Server):服务的真正提供者
6自己实现过rpc么,原理可以简单讲讲,Rpc要解决什么问题
1、RPC是什么 RPC远程过程调用协议,它是一种通过网络从远程计算机程序上请求服 务,而不需要了解底层网络技术的协议。简言之,RPC使得程序能够像访问本地系统资源一样,去访问远端系统资 源。 2.RPC要解决什么问题 各个团队的服务提供方就不要各自实现一套序列化、反序列化、网络框架、连接池、收发线程、超时处理、状态机 等“业务之外”的重复技术劳动,造成整体的低效。
7.高并发下1个数频繁更改(更改频率1000次-10000次)应该怎么处理?
系统设计、设计模式
- 常见设计原则
- 编程中自己都怎么考虑一些设计原则的,比如开闭原则,以及在工作中的应用
- OO 的设计原则
- 请结合 OO 设计理念,谈谈访问修饰符 public、private、protected、default 在应用设计中的作用
- 如何做到接口的幂等性
- 说说你平时用到的设计模式
- 工厂模式
- 代理模式
- 适配模式
性能优化
微服务
1、REST 可以看着是HTTP协议的一种直接应用,默认基于JSON作为传输格式,使用简单,学习成本低效率高,但是安全性较 低。 2、SOAP SOAP是一种数据交换协议规范,是一种简单的、基于XML的协议的规范。而SOAP可以看着是一个重量级 的协议,基于XML、SOAP在安全方面是通过使用XML-Security和XML-Signature两个规范组成了WS-Security 来实现安全控制的,当前已经得到了各个厂商的支持 。 它有什么优点?简单总结为:易用、灵活、跨语言、跨平台。 3、SOA 面向服务架构,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是 SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。 SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯 模型。SOA可以看作是B/S模型、XML(标准通用标记语言的子集)/Web Service技术之后的自然延伸。 4、REST 和 SOAP、RPC 有何区别呢? 没什么太大区别,他们的本质都是提供可支持分布式的基础服务,最大的区别在于他们各自的的特点所带来的不 同应用场景 。
消息队列
- MQ的基本原理
- MQ消息可靠性保证
- MQ怎么解决幂等性
- MQ系统的数据如何保证不丢失
- 用过哪些 MQ,和其他 mq 比较有什么优缺点
- 用过哪些 MQ,和其他 mq 比较有什么优缺点,MQ 的连接是线程安全的吗
- 怎么利用 mq 实现最终一致性
- MQ有可能发生重复消费,如何避免,如何做到幂等
- MQ 的消息延迟了怎么处理,消息可以设置过期时间么,过期了你们一般怎么处理
- 消息队列满了怎么处理
- 如何自己设计一个消息中间件
- kafka,activemq,rabbitmq本质区别是啥
数据库
关系型数据库
1.数据库隔离级别有哪些,各自的含义是什么,MYSQL默认的隔离级别是是什么
3.MYSQL有哪些存储引擎,各自优缺点,myisam与innodb区别
8.数据库会死锁吗,举一个死锁的例子,mysql怎么解决死锁
10.Mysql的索引数据结构
14.select for update是什么含义,会锁表还是锁行或是其他
15.Btree原理
17.数据库的ACID是什么
21.数据库自增主键可能的问题
22.MVCC的含义
雪花算法
29.说下mysql内存分配
32.说下JDBC 连接步骤
33.MySQL事务实现原理
非关系型数据库
前者是一个完全无中心的设计,节点之间通过gossip方式传递集群信息,数据保证最终一致性
后者是一个中心化的方案设计,通过类似一个分布式锁服务来保证强一致性,数据写入先写内存和redo log,然后定期compat归并到磁盘上,将随机写优化为顺序写,提高写入性能。
15Redis的并发竞争问题如何解决,了解Redis事务的CAS操作吗
算法
- 什么是一致性 hash算法?
- 说说你知道的几种hash算法
- 什么是paxos算法
- 什么是zab算法
- 什么是二叉树算法
- 什么是红黑树算法
- 二叉树和二叉查找树的区别是什么?
- 手写各种排序算法,如冒泡、快速等
- 算法的时间复杂度是什么?
- 说出常见的负载均衡算法?
- 写出常见排序算法(快排、冒泡)
- 二分法查找
项目
项目开发
- 你们项目是怎么打包部署
- 项目出现乱码怎么解决
- 你们是怎么管理分支的,出现冲突怎么解决
- 项目中遇到那些难题挑战,怎么解决
- 线上出了问题怎么排查,分析的过程和方法
- 说说你最满意的一个项目的架构
- 画出你们项目的架构图
业务问题
1.分布式服务情况下,怎么保证一个新闻一天一个用户只能点赞一次
2.微信红包怎么实
Hadoop
Hbase
- RowKey设计原则
- Hbase内部是什么机制
- Hbase过滤器实现原则
- HBase, zookeeper 搭建过程
- hbase 写数据的原理是什么
- hbase读数据的原理是什么
- hbase 宕机如何处理