2021/01/26背题笔记
-
-
OSI七层模型,挑选几层解释一下
-
物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
-
-
能不能详细解释一下TCP三次握手四次挥手的过程以及原因,为什么一定要三次握手,四次挥手
-
服务器处于监听状态,TCP客户端发送数据请求,SYN=1,seq=x
-
服务器接收到之后,发出确认报文,ACK=1,SYN=1,确认号ack=x+1,同时发送一个seq=y
-
客户端收到后,发出确认报文,ACK=1,ack=y+1,自己的序列号seq=x+1
-
当服务器接收到之后,三次握手就正式完成了
(四次挥手)
-
客户端发送FIN=1,seq=u,
-
服务器接收后,发送ACK=1,ack=u+1,seq=v
-
服务器发送FIN=1,seq=w,ACK=1,ack=u+1
-
客户端返回ACK=1,seq=u+1,ack=w+1
-
3、为什么要四次挥手三次握手,为什么多了一次
-
其实三次握手也是四次握手,不过他在中间的那一段,把确认和同步这两个信息合并了,之所以这样是因为建立连接的时候不需要等待数据传输完成,而在释放连接的时候,客户端停止向服务端发送数据后,服务端可能还有数据要发送给客户端,所以中间分开了,等待服务端数据传输完成,在发送了一次服务端的关闭请求
4、GET,POST,UPDATE,delete哪一个是幂等的,能不能讲解一下
-
get获取资源不会进行修改,update对资源更新,多次修改仍然不变,delete删除后会返回空,依旧幂等,post不幂等,会不断新加资源
5、你经常使用的Linux命令
-
ps -ef|grep programname
-
mkdir /a/b/c -p
-
rm -rf
-
shutdown -r now
-
kill -9 PID
-
rpm -qa |grep filename
-
cat
-
vim
6、你是如何理解Linux的启动过程的,如果我们使用SSH链接服务器,服务器断开之后能否会话能否继续执行,不能,如何解决,tmux
-
关于linux系统的启动流程可以分为以下步骤:
POST(加电自检)–>加载BIOS(Basic Input/Outpu System)–>确定启动设备(Boot sequence)、加载Boot Loader–>加载内核(kernel)初始化initrd–>运行/sbin/init初始化系统–>打印用户登录提示符
-
tmux https://www.ruanyifeng.com/blog/2019/10/tmux.html
-
会话的一个重要特点是,窗口与其中启动的进程是
一个典型的例子就是,
为了解决这个问题,会话与窗口可以"解绑":窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话"绑定"其他窗口。
-
-
-
操作系统 1、简单介绍一下进程和线程
-
系统调用的基本单位和CPU调度的基本单位
2、进程和线程的区别
-
进程下细分为多个线程,一个程序跑起来就是一个进程,
-
-
数据库 1、MySql的事务隔离级别
-
读未提交(脏读,不可重复读,幻读),读提交(不可重复读,幻读),可重复读(Innodb默认级别,幻读),串行化
2、可重复读和已提交读的区别
3、Mysql中的不同join链接的一个问题
4、不同的事务隔离级别他们分别如何实现
-
RC-读取不加锁,数据写入,修改,删除需要加锁
-
RR-类似于排了一个快照,原理是采用记录事务id,然后通过undo log来找寻到id对应的状态
5、最左前缀
-
联合索引是遵循最左前缀匹配原则
6、为什么使用联合索引?
-
减少开销:一个联合索引(a,b,c)相当于创建了(a),(a,b)(a,b,c)三个索引
-
覆盖索引:不用建立繁多的覆盖索引
6、有没有遇到过慢SQL如何进行解决,怎么进行优化
-
如果是偶尔执行很慢,可能是数据库再刷新脏页,或者遇到了锁
-
如果是一直很慢,没有用上索引,选错了索引,语句用了*
7、索引的数据结构
b+树,为什么不是b树,b+树数据下沉全在最后叶子节点,查询稳定,叶子节点有指针相连也更适合范围查询,但是b树也不是毫无作用,显然单一数据查询性能更优秀,mongodb用的就是b树
-
-
Java基础 1、HashMap的底层如何进行实现的
-
1.7数组+链表,头插法1.8数组+链表+红黑树,尾插法
2、ArrayList和LinkedList如何实现
-
数组初始容量10,扩容增量1.5,链表
3、双亲委派模型
-
首先,判断两个类是否相等,最基础的就是应该一个类加载器加载
-
(启动类加载器)bootstrap-(扩展类加载器)extension-应用类加载器(application)
-
如果一个类加载器收到了类加载的请求,他首先不会自己去尝试加载这个类,而是把这个请求委派父类加载器去完成。每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个请求(他的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去加载。
-
如果没有使用双亲委派模型,由各个类加载器自行加载的话,如果用户自己编写了一个称为java.lang.Object的类,并放在程序的ClassPath中,那系统将会出现多个不同的Object类, Java类型体系中最基础的行为就无法保证。应用程序也将会变得一片混乱。
4、Tomcat中的双亲委派模型
-
common类加载器->webapp类加载器->jsp类加载器
5、打破双亲委派模型的原因,双亲委派模型的意义
-
为了实现隔离性,每个项目加载自己的class文件,不会传递给父类加载器
6、GC
-
标记清除,标记整理,复制算法
7、可达性分析,引用计数
-
会出现a<->b循环引用删除不掉的问题
-
以一个root作为根,可达即存活
8、CMS和G1的区别
-
初始标记,并发标记,重新标记,并发清除
-
初始标记,并发标记,最终标记,筛选回收
-
g1可预测的停顿时间模型,会根据region价值进行回收
9、JMM,CMS作用范围
-
JMM是java内存模型,就是线程在主内存中有共享变量
-
与serial,parnew组合,自身处理老年代
10、StopTheWorld如何解决
-
垃圾回收算法的选择,现在都是多核,尽量使用并行的垃圾回收算法
-
堆不要设计的过大
-
无用对象尽早释放
11、标记清除会产生内存碎片,标记整理和标记清除的区别
-
标记清除标记无用的,直接清掉
-
标记整理,标记存活的,进行移动
-
浮动垃圾就是下次的时候清除掉,或者
12、安全点
-
安全点就是指,当线程运行到这类位置时,堆对象状态是确定一致的,JVM可以安全地进行操作,如GC,偏向锁解除等。
13、分代的优点
-
年轻代相对复制算法,改善了吞吐量,解决了碎片问题
-
老年代使用标记整理算法
-
-
线程 1、线程状态
-
初始,运行,阻塞,等待,超时等待(时间一到自动返回),死亡
2、sleep()方法进入什么状态
-
阻塞
3、Synchronzied的工作原理
-
monitor-enter,monitor-exit(对象,代码块),acc_synchronzied(方法)
4、CAS的一个引用场景
-
锁
5、如何解决ABA
-
时间戳
-
-
Spring 1、Spring IOC
-
IOC全称是控制反转,就是把原先在程序中手动创建对象的权限交给了IOC容器,这样我们在用的时候直接拿就可以,IOC容器实际上就是个map,value中存储的是各种对象,讲对象之间的相互依赖关系交给IOC容器来管理,并由IOC容器完成对象的注入,可以很大程度上简化应用的开发,IOC容器就像一个工程一样,当我们需要创建这个对象的时候,只需要配置好注解,完全不用考虑对象是如何被创建出来的,
2、Spring AOP
-
AoP是面向切面编程,他将那些与事务无关,但是是各个事务之间的逻辑的公共部分封装起来,减少重复代码,降低耦合
3、Spring解决循环依赖
-
Spring是通过递归的方式获取目标bean及其所依赖的bean的;
-
Spring实例化一个bean的时候,是分两步进行的,首先实例化目标bean,然后为其注入属性。
结合这两点,也就是说,Spring在实例化一个bean的时候,是首先递归的实例化其所依赖的所有bean,直到某个bean没有依赖其他bean,此时就会将该实例返回,然后反递归的将获取到的bean设置为各个上层bean的属性的。
不用构造器注入用setter注入就算过
4、Spring 的代理方式,cglib和Java自带的一个区别
-
AOP基于动态代理,如果要代理的对象有接口,那么就是用JDKproxy,如果没有接口Spring AOP会通过Cglib创建一个子类进行代理,当然也可以使用AspectJ来进行代理,现在的Spring AOP已经继承了AspectJ,Spring AOP属于运行时增强,AspectJ属于编译时增强,Spring AOP基于代理,Aspect基于字节码操作,如果切面较多,建议使用AspectJ,更快
5、静态代理和动态代理的区别,各自的优点和缺点。
https://segmentfault.com/a/1190000011291179
-
静态代理在编译时产生class字节码文件,可以直接使用,效率高。
-
动态代理必须实现InvocationHandler接口,通过反射代理方法,比较消耗系统性能,但可以减少代理类的数量,使用更灵活。
-
cglib代理无需实现接口,通过生成类字节码实现代理,比反射稍快,不存在性能问题,但cglib会继承目标对象,需要重写方法,所以目标对象不能为final类。
-
-

浙公网安备 33010602011771号