面试题
文章平均质量分 66
Netgrow
这个作者很懒,什么都没留下…
展开
-
微服务架构面试02
文章目录一、mybatis1、什么是 MyBatis?2、MyBatis加载mapper方式3、MyBatis缓存的作用?4、一级缓存默认开启还是关闭?生成原理是什么?什么是二级缓存?二、并发1、什么是死锁?如何排查死锁?2、如何保证多线程执行顺序?三、 zookeeper1、集群中的机器角色都有哪些?2、zookeeper有哪几种节点类型?3、集群支持动态添加机器吗?4、有哪几种集群方式:四、Redis1、单线程的Redis为什么这么快?2、Redis有哪些适合的场景?3、redis相比memcached原创 2021-07-21 15:59:57 · 106 阅读 · 0 评论 -
redis面试
文章目录一、redis二、总结一、redisredis底层是单线程为什么性能那么高?1、基于内存操作,性能高2、redis线程模型,多路复用,epoll机制3、高效的数据结构用户余额表,余额经常变换,使用json存储性能低,使用分字段存,各个技术都有自己最适合的应用场景。购物车用db实现比较麻烦,用redis中的hash实现购物车,hash是一个双层的KV,外层的key作为用户id,内层的key作为商品id,商品数量作为内层的value。Hash结构优缺点:List结构应用场原创 2021-07-17 23:27:50 · 92 阅读 · 0 评论 -
微服务架构面试01
文章目录前言一、微服务架构二、缓存和异步消息三、分布式锁四、分布式事务五、分布式Session总结前言Java架构面试一、微服务架构将项目里面的一个模块作为一个微服务,可以更方便的水平扩展二、缓存和异步消息缓存:Redis常用数据结构redis线程模型,redis为什么性能好?单线程,NIO,异步事件处理redis内部只有一个线程,给所有请求排队,socket来访问,排队,通过文件事件分派器分给不同的事件处理器client socket 和 server socket原创 2021-07-14 11:45:09 · 181 阅读 · 0 评论 -
事务隔离级别与传播属性
文章目录一、事务的隔离级别二、事务的传播属性总结一、事务的隔离级别脏读:一个事务读取到另一个事务没有提交的数据不可重复读:在同一个事务中,执行同一条语句,这时别的事务把数据更改了,导致查出来的数据不同幻读:在一个事务两次查询中的数据笔数不一致解决幻读最好使用分布式锁解决,在数据库解决效率低二、事务的传播属性总结...原创 2021-07-26 11:19:20 · 64 阅读 · 0 评论 -
深入理解Java虚拟机
文章目录一、JVM整体架构JVM由三个主要的子系统构成二、JVM类加载器三、JVM内存结构四、JVM执行引擎总结一、JVM整体架构JVM由三个主要的子系统构成.java文件通过javac变异成.class文件,通过JVM虚拟机运行,JVM虚拟机类加载子系统把.class装载入到内存中。二、JVM类加载器三、JVM内存结构四、JVM执行引擎总结...原创 2021-07-26 10:59:01 · 76 阅读 · 0 评论 -
微服务架构之分布式事务解决方案
文章目录一、微服务微服务概述二、分布式事务三、XA/JTA规范四、柔性事务CAP理论BASE理论最大努力通知方案TCC两阶段补偿型方案TCC与XA/JTA对比基于Rocket MQ的方案要是通过这两阶段怎么封装一个框架去实现TCC?总结一、微服务微服务概述dubbo和springcloud是流行的微服务框架,电商网站架构二、分布式事务假如下单操作,需要调用库存微服务和交易微服务,在传统的一个war包的项目中,用Spring提供的事务注解可以实现,但是微服务架构中不可以使用,因为Spri原创 2021-07-24 19:47:33 · 1033 阅读 · 0 评论 -
TCP半包粘包问题
文章目录一、TCP半包粘包问题示例与分析二、如何解决TCP半包粘包问题?拆包解决思路Netty拆包的基类Netty常用编码器基于长度的协议的解码器基于分隔符的解码器基于包头不固定长度的解码器总结一、TCP半包粘包问题示例与分析TCP层不管包,不知道什么是半包,半包粘包是应用层的概念。二、如何解决TCP半包粘包问题?拆包解决思路Netty拆包的基类Netty常用编码器基于长度的协议的解码器基于分隔符的解码器基于包头不固定长度的解码器总结...原创 2021-07-24 14:07:14 · 114 阅读 · 0 评论 -
Java是如何实现异常处理的?
文章目录一、二、总结一、二、总结原创 2021-07-24 12:30:15 · 145 阅读 · 0 评论 -
如何高效实现单例(Sinleton)设计模式
文章目录一、如何高效实现单例(Sinleton)设计模式单例模式的基本概念单例模式的不同实现方式及各自优势饿汉式懒汉式懒汉式 + synchronized懒汉式+Double CheckVolatile懒汉式+Double Check + Volatile内部类Holder单例模式实现的问题枚举(Enum)单例模式实现总结总结一、如何高效实现单例(Sinleton)设计模式单例模式的基本概念单例模式的不同实现方式及各自优势饿汉式懒汉式懒汉式 + synchronized懒汉式+D原创 2021-07-23 18:28:54 · 150 阅读 · 0 评论 -
Java零拷贝
文章目录一、什么是零拷贝哪里用到了零拷贝零拷贝Linux IO流程传统数据传送零拷贝内存映射Java NIO - MappedByteBuffersendfile - Linux 2.1Java NIO - FileChannel.transferToNetty中的零拷贝二、怎么实现零拷贝通过CompositeByteBuf实现零拷贝通过wrap操作实现零拷贝通过slice操作实现零拷贝通过FileRegion实现零拷贝总结一、什么是零拷贝哪里用到了零拷贝零拷贝Linux IO流程dma原创 2021-07-23 17:46:42 · 62 阅读 · 0 评论 -
Mysql索引底层数据结构
文章目录一、索引相关面试题说下索引底层数据结构什么是聚集索引InnoDB表为什么必须有主键InnoDB表主键为什么推荐使用自增的整形二、Mysql索引B+树原理MyISAM索引实现InnoDB索引实现主键索引与非主键索引的区别总结一、索引相关面试题说下索引底层数据结构什么是聚集索引InnoDB表为什么必须有主键InnoDB的表数据文件,本身就是一个索引结构的文件,必须需要主键,mySQL会给InnoDB的表自动生成一个主键,他的数据文件按照索引结构存储。InnoDB表主键为什么推荐使用自增的原创 2021-07-23 17:04:30 · 132 阅读 · 0 评论 -
Spring AOP原理实现
文章目录一、Spring AOP原理什么是AOP场景底层实现AOP相关术语总结一、Spring AOP原理什么是AOP场景底层实现两种技术都应用到了,被代理的对象是接口类型的话就默认使用Java动态代理,非接口的代理类或者加入会使用CGLIB代理。Java只允许单继承多实现,已经继承Proxy了,所以必须是接口。AOP相关术语总结...原创 2021-07-23 16:17:21 · 65 阅读 · 0 评论 -
HashMap底层实现
文章目录一、什么是哈希什么是数组什么是链表二、HashMap的使用数组链表HashMapget操作三、面试是线程安全的吗?HashMap数据结构是什么?JDK8对HashMap优化哪块,为何要优化?1.71.8HashMap和HashTable和ConcurrentHashMap区别总结一、什么是哈希什么是数组什么是链表二、HashMap的使用数组链表HashMapget操作三、面试是线程安全的吗?非线程安全的,put时在addEntry里面有一个扩原创 2021-07-23 15:57:27 · 63 阅读 · 0 评论 -
Java并发类库中的线程池
文章目录一、Executor框架的基本组成ThreadPoolExecutor线程池大小选择策略线程池工作流程二、线程池工作流程三、线程池实例分析总结一、Executor框架的基本组成ForkJoinPool主要是把我们的任务细分成多个小任务,根据CPU多核处理能力,把任务分配到多个核心上处理,最后再合并返回。ScheduledThreadPoolExecutor主要是对上面的线程池做了增强,加了调度的逻辑。建议使用Executors创建线程池,里面的方法封装了上面几个线程池。ThreadP原创 2021-07-23 15:31:48 · 89 阅读 · 0 评论 -
什么情况下Java程序会产生死锁
文章目录一、死锁的基本概念二、死锁程序实例剖析三、怎么预防死锁发生总结一、死锁的基本概念一般在线无法修复,需要重启服务打上补丁。二、死锁程序实例剖析线程A拿到锁A睡眠1秒尝试获取锁B,睡眠1秒时,线程B进入,获取到锁B休眠一秒,尝试获取锁A,线程A醒来尝试获取锁B,获取不到,线程B尝试获取锁A获取不到,发生死锁。JVM自带的排查死锁工具 Jstack 端口号三、怎么预防死锁发生总结...原创 2021-07-23 13:35:50 · 150 阅读 · 0 评论 -
String、StringBuild、StringBuffer
文章目录一、String的基本特征二、String的引申说明String对象是否真的不可变?三、StringBuffer与StringBuilder应用场景总结一、String的基本特征被声明为final类,内部变量亦被final修饰典型的Immutable(不可变)类字符串常亮缓存hash可能需要被重新计算,所以没有被设置为final。值一旦确立之后,在内存上就不会被改变了。删除添加的操作字符串操作都是新建了一个字符串,不是原来的字符串了。被设置为Immutable类还有一个好处,原创 2021-07-23 11:47:48 · 190 阅读 · 0 评论 -
final、finally、finalize
文章目录一、final为什么要用final修饰符?二、finally三、finalizefinalize的生命周期四、引申拓展总结一、finalfinal修饰类 类不可被继承final修饰方法 方法不可被重写final修饰变量 变量不可以被重新赋值为什么要用final修饰符?定义好的行为不希望别人修改它,防止出现一些不可预知的错误,保证代码的安全性、健壮性。二、finallyJava保证重点代码一定要被执行的一种机制关闭资源释放锁(Unlock)三、final原创 2021-07-23 11:28:22 · 90 阅读 · 0 评论 -
Exception、Error
文章目录一、Exception、Error的区别什么是Exception?什么是Error?Exception分哪几种类型?二、Exception、Error的设计与分类三、异常处理原则四、引申拓展总结一、Exception、Error的区别什么是Exception?Exception是程序中经常可能碰到的小错误,程序可以处理,修复的。什么是Error?JVM系统层面出错,程序修复不了Exception分哪几种类型?可检查型:IOException、SQLException原创 2021-07-23 11:09:28 · 66 阅读 · 0 评论