计算机网络
- 说一下发送一次http请求完整过程
首先浏览器会去本地的DNS服务器(host)文件里进行解析,如果没找到再去网络上进行解析,当浏览器获取到该域名映射的IP地址后,浏览器就会向服务器建立连接,开始三次握手,当tcp建立连接完成后,浏览器则开始向服务器发送http请求,当服务器接受到这个请求,就会把该请求路径映射到相应的请求处理器进行处理,请求处理器会将视图返还给客户端,客户端进行视图解析,在页面上进行渲染,最终将页面呈现给用户
- 谈一下TCP与UDP的区别
TCP提供的是面向连接的服务,每次发送请求时都要建立连接,是可靠安全的服务,UDP则相反,他是无连接的,且连接不可靠。TCP面向的是字节流传播,而UDP面向的是报文传播。但是UDP节省资源,他的头部数据体积要小于TCP,所以UDP传输速度较快,适合在一些对数据传输速度由要求但对数据包完整性不太严苛的条件下使用,比如早期的QQ网际层架构就是使用了UDP传输,非常适用于QQ语音,视频连接这些场景下,同时,TCP只能支持一对一的传播,但是UDP除了支持一对一,还支持一对多,多对多的传输
- 三次握手的过程
客户端想要和服务端开始进行连接,首先客户端会向服务端发送一个请求连接的数据包,第一次握手
,客户端将SYN置为1,随机产生一个seq=j并且将数据包发送给服务端,等待服务端确认,第二次握手
服务端收到数据包后将SYN和ACK都置为1,ack=j+1,随机产生一个req=k,并且将数据包返还给客户端,第三次握手
客户端确认后,检查ack是否为j+1,ACK是否为1,如果正确则将标志为置为1,ack=k+1,并将数据包发给服务端,服务端再检查ack是否为k+1,ACK是否为1,如果正确则表示建立成功,客户端与服务端开始进入连接状态
- GET和POST的区别
Get请求的地址可以在浏览器里看得到,但POST不能;GET请求有长度限制,但是POST没有;GET请求相比于POST不安全;GET请求只支持url编码,但是POST支持多种编码方式
数据结构
- 说一下平衡二叉树和红黑树的区别
如果说平衡二叉树是一个类的话,那么红黑树就好比该类的一个实例,红黑树放弃了平衡二叉树追求绝对平衡的特点,其保证最多只需要三次旋转就可以达到平衡,实现较为简单,复杂度较低
数据库
-
谈一下事务
事务的四大属性:原子性
:每一次事务的操作都具有原子性,要么全部执行,要么全部不执行;隔离性
:同一时间间隔内只能允许一个事务对数据库执行操作;一致性
事务执行的前后,数据库表的完整性约束不会被改变;持久性
:一旦事务完成后,数据既不可再回滚 -
谈一下范式
第一范式
:列不可再分;第二范式
:建立与第一范式基础之上,非主键属性必须要依赖于主属性;第三范式
建立在第二范式基础上,要消除多种传递的属性依赖 -
MyISAM和InnoDB这两大存储引擎的区别
1. MyISAM不支持事务,InnoDB支持
2. MyISAM适合作为以查询为主的数据库引擎,而InnoDB适合频繁增删改且安全性较高的数据库引擎
3. InnoDB支持外键,但是MyIsam不支持
4. Mysql5.5后,InnoDB已经成为了默认引擎
5. MyIsam只支持表级锁,InnoDB支持事务和行级锁 -
查询语句的执行顺序
from,where,group by,having,select,order by -
事务的并发会造成哪些问题
- 脏读:事务A读完了事务B更新的数据,然后B回滚了,那么A读到的就是脏数据
- 不可重复读:事务A多次读取同一个数据,但是此时事务B正在对A所读的数据进行修改,这样就会造成A前后读到了不一样的数据
- 幻读,比如说事务A修改了一行数据,正要读之前,另外一个事务进了数据库又将数据改了会去,那么A再读就会产生没有修改的幻觉