
面试
fanfan要努力呀
暂时就用csdn来记录我的复习之路吧
展开
-
jdk1.8 LinkedList
JDK1.8 LinkedList源码构造方法空参就是创建一个空的链表,可以将一个集合作为参数传进来,此时会新建一个空链表,然后把集合中的元素都拷贝过来add()方法第二句new Node()就表示创建一个新节点,节点元素为e,前继节点为l,后继节点为nulladd()方法的返回值为布尔类型,只会返回true;添加的过程就是调用linkLast方法的过程,其中它会先将最后一个...原创 2019-08-30 15:12:52 · 1276 阅读 · 0 评论 -
Redis面试_1
主流应用架构缓存中间件–Memcache和Redis的区别Memcache(我这个是直接看别人复制过来的,没怎么见过这个中间件,所以就没管):它非常简单易用,代码层次类似于Hash.它支持简单数据类型.不支持数据持久化存储,一旦服务器宕机,数据保存不下来的.不支持mysql那样的主从同步.不支持分片.Redis数据类型丰富,支持set.list等类型.支持数据磁盘持久化...原创 2019-07-28 12:59:18 · 154 阅读 · 0 评论 -
java基础_1
java异常java的异常处理机制主要回答了三个问题:What: 即异常类型,回答了什么异常类型会被抛出.Where: 即异常堆栈跟踪,回答了在哪儿抛出的异常.Why: 即异常信息,回答了为什么会抛出该异常.java的异常体系由图可知:Throwable是java异常体系的顶层父类,它有两个子类,分别是Error类和Exception类.而Exception类又包括了Runt...原创 2019-08-05 18:24:41 · 119 阅读 · 0 评论 -
数据库考点_11
GROUP BY作用: 根据给定数据列的每个成员,对查询结果进行分组统计,关于这句话,有两个解释:满足SELECT字句中的列名必须为分组列或者列函数.也就是说: 要么是group by 中用到了列,要么就是带有max这类的列函数的列.注意: 上面的条件只针对同一张表成立,如果用到了多张表,就算列名不满足条件也是正确的,具体看例子2列函数对于group by子句定义的每个组各返回一个...原创 2019-07-28 00:32:30 · 408 阅读 · 0 评论 -
JVM面试_6
垃圾回收算法分类:标记-清除算法复制算法标记-整理算法标记清除算法顾名思义,该算法进行垃圾回收共分为两个阶段:标记: 从根集合出发,进行扫描,通过可达性算法对需要回收的对象进行标记.这里有的地方说的是对存活的对象进行标记,其实也有道理,不过书上说的是对需要回收的对象,那就写需要回收的对象清除: 对堆内存从头到尾进行线性遍历,回收不可达对象内存.标记清除算法的不足...原创 2019-08-01 16:13:35 · 140 阅读 · 0 评论 -
数据库考点_10
title: 数据库考点_10date:2019/7/27 16:46:20tags: 数据库考点_10categories: 面试next-key锁(行锁 + gap锁)行锁行锁: 即record lock,指对单个行记录上的锁.gap锁gap lock(间隙锁): 表示锁定一个范围,但不包括记录本身.其主要目的是为了防止同一事务的两次当前读出现幻读的情况.它在RC...原创 2019-07-27 21:21:27 · 235 阅读 · 0 评论 -
JVM面试_5
对象被判定为垃圾的标准没有被其他对象引用的对象应该被判定为垃圾.判断对象是否为垃圾的算法引用计数算法可达性分析算法引用计数算法通过判断对象的引用数量来决定对象是否可以被回收.在这种机制下,堆中的每个实例对象都有一个引用计数器,对象被引用则计数器+1,完成引用(引用失效)则-1.当引用计数器值为0的时候,该实例对象便被认为可以被当做垃圾回收.引用计数算法优点:执行效率高,...原创 2019-08-01 14:32:48 · 89 阅读 · 0 评论 -
多线程面试_13
java线程池在web开发中,服务器需要接受并处理请求,所以会为一个请求来分配一个线程来进行处理,如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁线程,这样会大大降低系统的效率,所以,就出现了线程池来重复利用线程.利用位于J.U.C包下面Executors类创建不同的线程池满足不同场景的需求目前该类提供了五种不同的线程池创建方法以满足不同场景下的需求:对于第一...原创 2019-08-05 16:05:09 · 196 阅读 · 0 评论 -
多线程面试_12
title: 多线程面试_12date: 2019/8/5 13:19:51tags: 多线程面试_12cateories: 面试CAS(Compare and Swap)Java 平台中的锁包括内部锁( Intrinsic Lock )和显式锁 ( Explicit Lock )。内部锁是通过synchronized关键字实现的;显式锁是通过java.concurrent....原创 2019-08-05 14:02:18 · 162 阅读 · 0 评论 -
数据库考点_9
title: 数据库考点_9date:2019/7/26 23:15:01tags: 数据库考点_9categories: 面试InnoDB可重复读隔离级别下是如何避免幻读的表象: 快照读(非阻塞读)—伪MVCC内在: next-key锁(行锁+gap锁)...原创 2019-07-27 16:45:27 · 166 阅读 · 0 评论 -
数据库考点_8
数据库事务的四大特性总结起来就是: ACIDA–>Automic, 原子性,指的是事务包含的所有操作,要么全部执行,要么全部失败回滚.C–>Consistency.一致性,指的是事务应确保数据库的状态从一个一致性的状态,转变为另外一个一致的状态, 而一致状态是指数据库中的数据应满足完整性约束,比如说两个用户互相转账,他俩不管怎么转,钱的总数都应该是相等的.I–>Isol...原创 2019-07-26 23:15:40 · 167 阅读 · 0 评论 -
JVM面试_4
关于java内存模型我还没怎么整明白,我先写着,大家先看看jvm内存模型的面试题先java内存模型简介内存简介: 计算机所有程序都是在内存中运行的.在程序执行的过程中,需要不断地将内存的逻辑地址和物理地址进行映射,找到相关的指令和数据去执行.32位处理器: 2^32的可寻址范围,即4G.64位处理器: 2^64的可寻址范围.内存中地址空间的划分内核空间用户空间(java程序使...原创 2019-07-31 20:50:31 · 164 阅读 · 0 评论 -
多线程面试_11
java内存模型JMMjava内存模型(Java Memory Model,简称JMM) 本身是一种抽象的概念,并不真实存在,它描述的是一组规范或规则,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素的访问方式).同时我们知道,jvm运行程序的实体是线程,而每个线程创建时jvm都会为其创建一个工作内存(包括堆栈寄存器,程序计数器,线程控制块)用于存储其私有的数据....原创 2019-08-04 20:50:06 · 204 阅读 · 0 评论 -
JVM面试_7
Stop-the-World这个单词就是说,JVM由于要执行GC而停止了应用程序的执行,即除了GC的线程执行外,所有线程都处于等待状态,并且这种情况在任何一种GC算法中都会发生.多数GC优化就是通过减少Stop-the-World发生的时间来提高程序性能.Safepoint安全点形象的说: jvm垃圾回收就好比是宝洁阿姨在打扫卫生,如果一边打扫,一边有人扔垃圾可咋整?为了不让这种情况发生...原创 2019-08-01 18:18:48 · 112 阅读 · 0 评论 -
JVM面试_8
老年代常见的垃圾收集器Serial Old收集器通过命令UseSerialOldGC可以使老年代使用该收集器回收垃圾,它使用的是标记-整理算法.单线程收集,进行垃圾收集时,必须暂停所有的工作线程.简单高效,Client模式下默认的老年代收集器Parallel Old收集器通过命令UseParallelOldGC可以使老年代使用该收集器回收垃圾,它使用的是标记-整理算法.多线...原创 2019-08-01 19:12:39 · 128 阅读 · 0 评论 -
Redis面试_2
Redis供用户使用的几种数据类型(针对k-v结构中的value)注意: Redis存储的时key-value键值对格式,其中key永远是字符串,value值可以有多重不同的数据结构同时,不论value是什么类型,它里面的数据都是字符串类型String: 最基本的数据类型,二进制安全(可以存二进制的东西,比如图片等),也就是说可以存很多东西.Hash: String元素组成的字典,适合用...原创 2019-07-28 15:20:47 · 114 阅读 · 0 评论 -
JDK1.8ArrayList源码
JDK1.8ArrayList源码数组是存储在内存中的一块逻辑上连续的内存,只有相同类型的数据才能放到数组中构造方法无参构造方法: 直接给elementData这个Object数组指向一个空数组.带参构造方法: 如果参数大于0,就根据参数创建数组,参数为0则创建空数组,否则报错带参构造方法: 将集合通过toArray()方法转换为数组传给当前的空的elementData数组,然...原创 2019-08-30 11:56:06 · 290 阅读 · 0 评论 -
HashMap原理
emmm,这个是我自己写出来自己偶尔看的,大家可能看起来乱七八糟,所以就不建议大家看了JDK1.7的HashMap1.7的时候hashmap底层就是通过数组+链表如何确定key所在的位置呢?首先得到key的hash值,然后再对hash值与数组长度-1进行&运算来确定位置有可能出现多个元素都放在同一个位置,此时就用链表连接,思想就是讲元素添加在头结点,然后将整个链表向下移,让...原创 2019-08-29 16:53:06 · 187 阅读 · 0 评论 -
spring_1
这篇博客写得稀烂,大家谨慎观看你了解Spring IOC吗?IOC(Inversion Of Control): 控制反转它是Sprig Core最核心的部分,是Spring家族的基本.IOC是指由spring来负责控制对象的生命周期和对象间的关系.IOC不能算是一种技术,应该当做一种思想.要了解IOC,我们需要先了解一下依赖注入(Dependency Injection)DI(...原创 2019-08-07 17:20:31 · 150 阅读 · 0 评论 -
java基础_3
J.U.C知识点梳理java.util.concurrent包: 提供了并发编程的解决方案, J.U.C包里有两大核心:CAS(compare and swap)是java.util.concurrent.atomic包的基础.AQS(AbstractQueuedSynchronizer)是java.util.concurrent.locks包以及一些常用类比如ReentrantLock等...原创 2019-08-06 23:08:26 · 164 阅读 · 0 评论 -
多线程面试_1
进程和线程的区别进程:指的是 一个用户程序在同一数据集合上的一次执行过程,它是资源分配的基本单位,可以理解为它就是运行中的一个程序.线程:线程是进程上的一个实体,也是真正的执行体,它是系统调度的基本单位.进程和线程的由来:进程和线程的区别:正如上面所说:进程是资源分配的最小单位,线程是CPU调度的最小单位.所有与进程相关的资源,都被记录在PCB(Process Control B...原创 2019-08-02 14:07:13 · 135 阅读 · 0 评论 -
java基础_2
集合之List和Set集合之MapHashMaphashmap是非线程安全的,所以效率比较高.Java8之前,hashmap底层是通过数组+链表实现的,如图所示:hashmap没有赋值之前,数组长度默认为16,在该数组中每个位置存储的都是链表的头结点.通过hash(key.hashCode()) % len这个函数来获得要添加的元素在数组中的存放位置.这样子就会有一个问题,有...原创 2019-08-06 15:28:55 · 154 阅读 · 0 评论 -
spring_2
Spring Bean的作用域singleton: Spring的默认作用域,容器里拥有唯一的Bean实例,适合无状态的Bean.prototype: 针对每个getBean请求, 容器都会创建一个Bean对象,适合有状态的Bean.request: 会为每个Http请求创建一个Bean实例,该作用域只针对web容器有效.session: 会为每个session创建一个Bean实例,该作...原创 2019-08-08 16:06:24 · 156 阅读 · 0 评论 -
Redis面试_5
title: Redis面试_5date: 2019/7/28 20:28:53tags: Redis面试_5categories: 面试使用PipeLine的好处Pipeline和linux的管道类似,Redis从文本中读取数据到内存的时候,就用到了Pipline.Redis基于请求/响应模型,单个请求处理需要一一应答. 正常情况下,客户端发送一个命令就要等待redis的...原创 2019-07-28 21:28:07 · 120 阅读 · 0 评论 -
Redis面试_4
AOF持久化AOF(Append-Only-File)持久化: 保存Redis服务器所执行的写状态来记录数据库,默认是关闭的,且其文件名为appendonly.aof.可以通过conf set appenonly yes使得AOF持久化生效,也可以去配置文件中修改.RDB持久化相当于备份数据库状态,而AOF持久化是备份数据库接收到的指令,所有被写入AOF的命令都是以Redis的命令格式来保存...原创 2019-07-28 20:29:25 · 102 阅读 · 0 评论 -
Redis面试_3
因为我们知道,如果不进行数据的持久化,一旦服务器退出,数据就会丢失掉.持久化方式之RDBRDB(快照)持久化: 保存某个时间点的全部数据快照到dump.rdb文件中.其中,快照, 可以理解为拍照一样,把整个内存数据映射到硬盘中,保存一份到硬盘,因此恢复数据起来比较快,把数据映射回去即可.RDB的创建命令(手动)SAVE(很少用): 阻塞Redis的服务器进程,直到RDB文件被创建完毕,...原创 2019-07-28 19:25:14 · 145 阅读 · 0 评论 -
JVM面试_9
Object中的finalize()方法的作用是否与C++的析构函数作用相同它与C++的析构函数不同,析构函数调用时机是确定的,即对象离开作用域后就会被delete掉,而finalize()方法调用时机是不确定的.当垃圾回收器要宣告一个对象死亡时,要经过至少两次标记过程,如果对象在经过可达性算法分析后发现其没有与GC Roots相连的引用链,它就会第一次被标记,并且判断是否执行finaliz...原创 2019-08-01 20:24:57 · 124 阅读 · 0 评论 -
多线程面试_10
ReentrantLock这个东西,emm,我没怎么整明白,所以就没怎么写ReentrantLock(再入锁)java5之前,synchronized是仅有的同步手段,java5开始就提供了ReentrantLock,其语义与synchronized基本相同它位于java.util.concurrent.locks包下和CountDownLatch,Future,Semaphore一样,...原创 2019-08-04 16:42:23 · 125 阅读 · 0 评论 -
多线程面试_9
synchronized同步锁的四种状态无锁: 就是没有加入锁嘛,这个就很好理解了,也就是说此时的目标共享数据没有被任何一个线程占用.偏向锁轻量级锁重量级锁锁膨胀方向: 无锁–>偏向锁–>轻量级锁–>重量级锁偏向锁大多数情况下,锁不存在多线程竞争,总是由同一线程多次获得,因此,为了减少同一线程获取锁的代价而引入了偏向锁.核心思想:如果一个线程获得了锁,那么...原创 2019-08-04 15:31:27 · 157 阅读 · 0 评论 -
计算机网络_TCP与UDP的区别
UDP简介UDP: 即User Datagram Protocol, 用户数据报协议UDP报文结构如图:UDP特点面向非连接,和TCP必须要建立连接才能传输数据不一样,它只管发,不管你收没收到,它传送数据直接抓取来自应用程序的数据,并尽可能快得把它扔到网络上,所以在发送端UDP传送的速度仅仅受到应用程序生成数据的速度,计算机的能力和传输带宽的限制的影响,在接收端,UDP把每个消息段放在...原创 2019-07-17 23:30:27 · 266 阅读 · 0 评论 -
Linux面试_3
如何对文件内容做统计通过awk指令语法: awk [options] ‘cmd’ file.工作原理:一次读取一行文本,按输入分隔符进行切片,切成多个组成部分.将切片直接保存在内建的变量中,$1,$2…($0表示行的全部).支持对单个切片判断,支持循环判断,默认分隔符为空格.注意awk也是支持管道操作的.案例:提前准备了一个文本文件netstat.txt,内容如图:假设...原创 2019-07-29 23:48:31 · 129 阅读 · 0 评论 -
计算机网络_TCP的四次挥手
挥手是为了终止TCP连接,四次挥手是指总共要发出四个包来确认连接的断开,这一过程由客户端或者服务器端任意一方执行CLOSE来触发本文假设客户端主动触发CLOSETCP的四次挥手的流程图如下刚开始客户端和服务端都处于ESTABLISHED的状态,我们这里假设客户端主动关闭,服务器被动关闭.首先,客户端进程发出FIN报文,并且停止发送数据,在报文中的FIN结束标志位为1,seq序号为u(该值...原创 2019-07-17 21:00:39 · 258 阅读 · 0 评论 -
Linux面试_2
title: Linux面试_2date: 2019/7/29 18:56:56tags: Linux面试_2cateories: 面试如何查找特定的文件通过find指令语法: find path [options] params作用: 在指定目录下查找文件,任何位于参数前的字符串都将会被当做预查找的目录名.如果不设置任何参数,则find指令将会当前目录下查找子目录及其文...原创 2019-07-29 20:57:16 · 138 阅读 · 0 评论 -
数据库考点_2
二叉查找树作为索引优点:因为二叉查找树是有序的,左孩子都比父节点小,右孩子都比父节点大,所以其查找效率很高,类似于二分查找可以达到O(logN).缺点:当二叉查找树的结构变成了下图右边这种结构之后,时间复杂度就会变成O(N).B-Tree作为索引B-Tree就是平衡多路查找树,如果每个节点最多有m个孩子,那么这棵树就叫做m阶B树,如图所示就是一棵3阶段B树:上述每个节点就可以理解...原创 2019-07-24 16:44:55 · 496 阅读 · 0 评论 -
Linux面试_1
linux的体系结构如图所示: linux体系结构主要分为用户态(用户上层活动)和内核态,当然还有其他的哈,就是图片中的那些.下面就图片中的各个部分进行讲解内核: linux启动的时候,首先会启动内核,其本质是一段计算机程序,这个程序直接管理计算机硬件设备的程序,包括CPU,内存,硬盘接口,网络接口等.所有的计算机操作,都要通过内核传递给硬件用户态: 即上层应用程序的活动空间,应用程序...原创 2019-07-29 15:27:34 · 102 阅读 · 0 评论 -
计算机网络_TCP的三次握手
title: 计算机网络_TCP的三次握手date: 2019-07-16 16:31:57tags: 计算机网络_TCP的三次握手categories: 面试IP协议IP协议是 无连接 的通信协议, 作用在网络层 *主要作用是:负责寻址和路由选择,即将网络地址翻译为物理地址然后确定如何将数据从发送方路由到接收方.它不会占用两台正在通信的计算机之间的通信线路, 这样IP协议就降低...原创 2019-07-17 14:58:07 · 484 阅读 · 0 评论 -
Redis面试_6
Redis集群相关问题如何从海量数据里快速找到所需?方法1–分片: 可以按照某种规则,对海量数据进行划分,将其分散存储在多个Redis节点上.这种规则通常就是获取key的哈希值,然后根据节点数求模,然后根据结果决定放在哪个节点这种方法有明显的弊端: 当我们动态的增加或者减少节点的时候,会造成大量的key无法被命中,即常规的哈希划分无法实现节点的动态增减.为此,Redis提出了一致性哈希...原创 2019-07-28 23:43:26 · 106 阅读 · 0 评论 -
计算机网络_HTTP与HTTPS的区别
HTTPS简介HTTPS(Hypertext Transfer Protocol Secure),即超文本传输安全协议, 它是一种以计算机网络安全通信为目的的传输协议.它相对于HTTP来说,多了一个SSL(TLS)层,从而具有了保护数据安全以及完整性,并且提供了对网站服务器进行认证的功能,简单来说,它就是安全版的HTTPSSLSSL(Security Socket Layer,安全套接层...原创 2019-07-23 18:10:17 · 378 阅读 · 0 评论 -
计算机网络_HTTP相关
HTTP简介它是位于应用层的协议.是基于请求-响应模型的无状态的协议.中文名为超文本传输协议.基于TCP协议.HTTP协议定义了web客户端如何从web服务器请求web页面以及服务器如何把web页面传送给客户端.HTTP协议的主要特点:支持客户端/服务器模式(客户端向服务器发送请求,服务器根据请求向客户端发送响应信息).简单快速: 客户端发出请求的时候只需要传送请求方法(ge...原创 2019-07-19 09:07:12 · 550 阅读 · 0 评论 -
JVM_2_GC相关
程序计数器,虚拟机栈,本地方法栈随线程而生,随线程而灭,他们的回收就不用过多考虑,但是方法区和堆的内存分配和回收都是动态的,GC关注的就是这部分内存.jvm的基本概念堆被分成新生代和老年代,新生代被分成一个Eden区和两个Survivor区(From Survivor区和 To Survivor区)新生代GC(又叫Minor GC):指的是新生代的垃圾收集动作,因为java对象大都具备朝生...原创 2019-07-11 21:20:17 · 115 阅读 · 0 评论