面试汇总
冬子一定要努力
你可以菜,但不能不努力呀
展开
-
平衡二叉树、B树、B+树、B*树 理解其中一种你就都明白了
b树就是b-树。1.为什么使用b树: 为了减少磁盘IO的次数,就你必须降低树的深度,将“瘦高”的树变得“矮胖”。一个基本的想法就是: (1)、每个节点存储多个元素 (2)、摒弃二叉树结构,采用多叉树2.下面是一棵3阶的B+树: B+树通常有两个指针,一个指向根结点,另一个指向关键字最小的叶子结点。因些,对于B+树进行查找两种运算:一种是从最小关键字起顺序查找,另一种是从根结点开始,进行随机查找。查找 B+树的优势在于查找效率上,下面我们做一具体说明: 首先,B+树.原创 2020-07-21 14:50:37 · 289 阅读 · 0 评论 -
netty Rpc
1.BIO、NIO 和 AIO 的区别?BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。伪异步 IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。NIO:一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有 I/O 请求时才启动一个线程进行处理。AIO:一个有效请求一个线程,客户端的 I/O 请求都是由 OS 先完成了再通知服务器应用去启动线程进行处理。BIO 是面向流的,NIO 是面向缓冲区的.原创 2020-08-17 10:33:56 · 114 阅读 · 0 评论 -
经常被问道的cap是什么
在弄清楚这个问题之前,我们先了解一下什么是分布式的CAP定理。根据百度百科的定义,CAP定理又称CAP原则,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),最多只能同时三个特性中的两个,三者不可兼得。一、CAP的定义Consistency (一致性):“all nodes see the same data at the same time”,即更新操作成功并返回客户端后,所有节点在同一时原创 2020-09-03 20:21:46 · 611 阅读 · 0 评论 -
Error occurred during initialization of VM等一些启动错误,都是参数配置问题
1.tomacat启动失败错误Error occurred during initialization of VMCould not reserve enough space for 2097152KB object heapDisconnected from server2.然后你修改时候一定要注意内存分配规律,不然很坑的!!!一定要了解每个值得含义:-vmargs -Xm...原创 2019-11-18 17:04:57 · 7300 阅读 · 0 评论 -
maven打包内存溢出解决,各种内存设置
1.今天一直打包maven package失败。报的是内存溢出问题。2.设置maven运行内存大小,最后就ok了。3.随带记下各种区分的内存:tomacat:这个运行web项目,我们调优时候可以给内存大小使用4.idea内存:这个可以调节idea运行内存。还注意一个坑就是字节乱码,这个utf—8也可以解决很多乱码问题...原创 2019-11-18 16:16:40 · 5208 阅读 · 0 评论 -
面试准备(自用)
1.锁,原理源码探究2.redis 内存模型原理探究3.关键字https://blog.csdn.net/Myuhua/article/details/81411707原创 2019-10-31 11:14:16 · 98 阅读 · 0 评论 -
分布式事务问题解决思路汇总(转)
转自:https://mp.weixin.qq.com/s/kPjpBX6LsPErsAiB05gpkA只要聊到你做了分布式系统,必问分布式事务,你对分布式事务一无所知的话,确实会很坑,你起码得知道有哪些方案,一般怎么来做,每个方案的优缺点是什么。现在面试,分布式系统成了标配,而分布式系统带来的分布式事务也成了标配了。因为你做系统肯定要用事务吧,如果是分布式系统,肯定要用分布式事务吧...原创 2019-10-21 11:31:14 · 130 阅读 · 0 评论 -
Nginx简单实用(汇总)
一、静态代理Nginx擅长处理静态文件,是非常好的图片、文件服务器。把所有的静态资源的放到nginx上,可以使应用动静分离,性能更好。二、负载均衡Nginx通过反向代理可以实现服务的负载均衡,避免了服务器单节点故障,把请求按照一定的策略转发到不同的服务器上,达到负载的效果。常用的负载均衡策略有1、轮询将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不...原创 2019-06-17 21:36:34 · 210 阅读 · 0 评论 -
ssm框架面试总结(面试使用)
一、Spring面试题1、Spring 在ssm中起什么作用? Spring:轻量级框架 作用:Bean工厂,用来管理Bean的生命周期和框架集成。 两大核心: 1、IOC/DI(控制反转/依赖注入) :把dao依赖注入到service层,service层反转给action层,Spring顶层容器为BeanFactory。把创建对象的操作交给Spring容器,利用反射...原创 2019-06-12 13:39:59 · 417 阅读 · 0 评论 -
java框架知识点汇总02
1.Spring 为啥把bean默认设计成单例?答案:为了提高性能!!!从几个方面, 少创建实例 垃圾回收 缓存快速获取 单例有啥劣势?如果是有状态的话在并发环境下线程不安全...原创 2019-08-08 09:59:58 · 179 阅读 · 0 评论 -
Java并发编程73道面试题及答案(转)
1、在java中守护线程和本地线程区别?java中的线程分为两种:守护线程(Daemon)和用户线程(User)。任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bool on);true则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon()必须在Thread.start()之前调用,否则运行时会抛出异常。两者的区别:唯一的...原创 2019-08-19 10:42:11 · 177 阅读 · 0 评论 -
分库分表后如何部署上线(转)
引言我们先来讲一个段子面试官:“有并发的经验没?”应聘者:“有一点。” 面试官:“那你们为了处理并发,做了哪些优化?” 应聘者:“前后端分离啊,限流啊,分库分表啊。。” 面试官:"谈谈分库分表吧?" 应聘者:“bala。bala。bala。。” 面试官心理活动:这个仁兄讲的怎么这么像网上的博客抄的,容我再问问。面试官:“你们分库分表后,如何部...原创 2019-08-23 18:40:31 · 352 阅读 · 0 评论 -
怎么保证缓存与数据库的双写一致性?(转)
分布式缓存是现在很多分布式应用中必不可少的组件,但是用到了分布式缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?Cache Aside Pattern最经典的缓存+数据库读写的模式,就是 Cache Aside Pattern。读的时候,先读缓存,缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。更新的时...原创 2019-08-21 10:50:59 · 96 阅读 · 0 评论 -
MySQL面试汇总
1. 什么是索引?索引是一种数据结构,可以帮助我们快速的进行数据的查找.2. 索引是个什么样的数据结构呢?索引的数据结构和具体存储引擎的实现有关, 在MySQL中使用较多的索引有Hash索引,B+树索引等,而我们经常使用的InnoDB存储引擎的默认索引实现为:B+树索引.3. Hash索引和B+树所有有什么区别或者说优劣呢?首先要知道Hash索引和B+树索引的底层实现原理:...原创 2019-08-21 16:48:30 · 104 阅读 · 0 评论 -
HTTPS工作流程
1.Client发起一个HTTPS(比如 https://juejin.im/user)的请求,根据RFC2818的规定,Client知道需要连接Server的443(默认)端口。2.Server把事先配置好的公钥证书(public key certificate)返回给客户端。3.Client验证公钥证书:比如是否在有效期内,证书的用途是不是匹配Client请求的站点,是不是在CRL...原创 2019-09-09 14:49:34 · 178 阅读 · 0 评论 -
线程池源码分析(总结的真的很好很实用)
为什么要用线程池?简洁的答两点就行。 降低系统资源消耗。 提高线程可控性。 如何创建使用线程池?JDK8提供了五种创建线程池的方法:1.创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。2.(JDK8新增)会根据所需的并发数来动态创建和关闭线程。能够合理的使用CPU进行对任务进行并发操作,所以适合使用在很耗时的任务。注意返回的是F...转载 2019-06-17 21:31:17 · 197 阅读 · 0 评论 -
高级Java面试题汇总(个人笔记)
1.什么是可变参数?可变参数允许调用参数数量不同的方法。请看下面例子中的求和方法。此方法可以调用1个int参数,或2个int参数,或多个int参数。//int(type) followed ... (three dot's) is syntax of a variable argument. public int sum(int... numbers) { //in...原创 2019-06-19 18:22:54 · 98 阅读 · 0 评论 -
c3p0,DBcp,Druid三大连接池的区别/性能【面试+工作】
先来点实用的:<!-- 配置dbcp数据源 --> <bean id="dataSource2" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${j...转载 2019-06-19 18:58:41 · 1772 阅读 · 1 评论 -
面试官:聊聊你对分布式锁技术方案的理解(转)
前言 由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题。第一步,自身的业务场景: 在我日常做的项目中,目前涉及了以下这些业务场景: 场景一:比如分配任务场景。在这个场景中,由于是公司的业务后台系统,主要是用于审核人员的审核工作,并发量并不是很高,而且任务的分配规则设计成了...转载 2019-06-17 13:50:47 · 149 阅读 · 0 评论 -
个人集合汇总(面试使用)
一.Map最强hashmap源码:https://mp.weixin.qq.com/s/bjT9Uvyprgtk2IPMwt9SAA经典:https://mp.weixin.qq.com/s/EoOqH9aBcO_OQBDj1X5pKAhashMap hashTable concurrentHashMap1.核心的常量:负载因子默认0.75(从查询性能和hash表所占内存开销两方面...原创 2019-06-11 22:31:40 · 178 阅读 · 0 评论 -
个人总结java基础(面试使用)
一.String的相关内容:都是基于char类型的数组操作1.String的低层是用char数组,且使用final修饰。则不被继承,不被改变特性。保证安全和共享。提高效率。2.Stringbuffer Stringbuilder总结:底层实现和StringBuilder都是一样,只是区别在于方法加锁和没加,常量有没有使用关键字StringBuffer:1.方法都加锁了 2.有初...原创 2019-06-11 22:29:09 · 108 阅读 · 0 评论 -
mysql个人总结(面试使用)
一.联合索引1.什么是索引和索引分类:聚集索引和非聚集索引,等同于字典中的按拼音查和按偏旁查2.什么时候使用索引:外键,where语句后,常使用的查询条件字段。不适用的:text,image这中大类型的字段。3.索引限制:最好三个,不超过五个。影响性能4.索引的有效性:abc三个 ,只有ab,abc才有效用到。中间断开都不行。且不能加范围(<符号使用,失效),最左侧原则...原创 2019-06-11 22:34:20 · 226 阅读 · 0 评论 -
jvm个人总结(面试使用)
https://mp.weixin.qq.com/s/iyk359KRwQiMjVrAnJMM8g一。jvm运行时数据区域 https://www.cnblogs.com/fubaizhaizhuren/p/4976839.html1.1.8之前1.8版本结构2.对于每个区域的解析:线程私有的:程序计数器:记录线程执行顺序,实现代码流程的控制。不存在内存溢出,随线程...原创 2019-06-11 22:36:28 · 153 阅读 · 0 评论 -
设计模式个人总结(面试使用)
一,单例模式1.使用场景和特点:某类中只要求生产一个对象实例;当对象需要被共享的场合;某类需要频繁实例化2.分类:饿汉式:类创建的同时就创建好了一个静态的对象供系统使用,线程安全懒汉式:当调用getInstance()方法时候才回去创建一个实例,加了锁。但性能低二 ,工厂模式1.定义一个用于创建对象的接口,通过传不同类型信息,让子类决定去实例化那个类。底层是所有工厂都是...原创 2019-06-13 15:23:42 · 262 阅读 · 0 评论 -
一些面试问题总结(面试使用)
https://mp.weixin.qq.com/s/RVqQ1ZxHDbgAtledMl6pxQ 问题1。如何保证事务一致性分布式中,确保一个事务中能够控制数据最终一致性。目前没有最完美的方案,都是通过mq。采用补偿机制,确认机制,重试机制。发送mq信息 ,等到mq服务确认后持久化存起来。等到被消费ack后才能更改状态和删除持久化的数据。通过确认机制。且mq必须保持幂等性 ,在...原创 2019-06-12 09:43:11 · 187 阅读 · 0 评论 -
分布式缓存(面试使用)
一:缓存穿透含义:缓存中取不到数据,直接透过缓存请求db。如果是恶意攻击,会使数据库崩方案:1。对于自己系统可以根据bloom filter算法计算一个hash值,只对自己系统业务请求。如果是其他请求则过滤;2.空值缓存;对于没有的key值数据返回空,且缓存进缓存区,设置短暂的过期时间。短时间范围内可以避免无效的攻击二:缓存雪崩含义:缓存数据在同一时间内失效,然后突然一些请求到...原创 2019-06-13 15:23:13 · 630 阅读 · 0 评论 -
通讯(面试使用)
一.三次握手四次挥手https://www.cnblogs.com/Andya/p/7272462.html1.三次握手: 客户端发送信息-------------- 到服务端,服务端响应信息确认--------- 到客户端,客户端在此确认-------------- 到服务端为什么三次:因为前两次,服务端只是在一个等待交互状态,确保客服端没有断开,在此响应第三次,为了确认链接需求...原创 2019-06-13 15:23:22 · 128 阅读 · 0 评论 -
锁(面试使用)
一,volatile https://blog.csdn.net/eff666/article/details/676406481.作用:多线程下,某一个线程修改一个共享变量的值,那么所有的线程都能读取到新的值。保证可见性。2.并发中内存模型:多线程下,每个cpu都会有自己的缓存,一般的共享变量都会在每一个cpu中缓存下来供使用。为了保证共享变量一致。使用lock和缓存一致性。lock...原创 2019-06-13 15:23:33 · 710 阅读 · 0 评论 -
线程个人总结(面试使用)
https://mp.weixin.qq.com/s/h6SMb1y7XVJa8jc-Xu3LYw 详解线程池https://mp.weixin.qq.com/s/AdxtmZcc93ZN9w-Kl3G7WQ 超强的个人理解线程池(大佬们的分享)一。创建线程的方式1.继承thread类创建线程,重写run方法2.实现runnable接口,重写run方法3.实现callabl...原创 2019-06-13 15:23:00 · 127 阅读 · 0 评论 -
并发(面试使用)
一。分布式中的三个锁基于 Redis 分布式锁实现“秒杀”(含代码)https://mp.weixin.qq.com/s/JaltkW9z7oAOMFxbec8a4whttps://mp.weixin.qq.com/s/TuAQHj2_VzXFGCvUfvTtiw史上最通俗分布式锁解读,看完不懂算我输https://mp.weixin.qq.com/s/NQuefbBGUIpOEg...原创 2019-06-12 22:44:09 · 188 阅读 · 0 评论 -
一些框架杂乱个人总结01(面试使用)
一。springmvc1.mvc模式2.常用注解:controller 表示控制器requestMapping urlresponseBody 将java对象转为json返回给客户端rquestbody 将客户端请求过来的json转成java对象method:设置请求方式post或get3.Springmvc是基于类,Struts2基于filterspringm...原创 2019-06-13 15:22:48 · 170 阅读 · 0 评论 -
hashmap源码核心三个方法解析
一。介绍HashMap在底层数据结构上采用了数组+链表+红黑树,通过散列映射来存储键值对数据因为在查询上使用散列码(通过键生成一个数字作为数组下标,这个数字就是hash code)所以在查询上的访问速度比较快,HashMap最多允许一对键值对的Key为Null,允许多对键值对的value为Null。它是非线程安全的。在排序上面是无序的。二。haspmap三个核心的方法get,put,...原创 2019-06-14 09:54:16 · 327 阅读 · 0 评论