一. 计网
-
计算机网络tcp相关东西【靠什么保证可靠传输】
参考
【涉及:三次握手,四次挥手,为什么三次握手,三次握手会产生危险吗?为什么四次挥手?为什么等待2MSL】1) 应用数据被分割成 TCP 认为最适合发送的数据块。
2) 确认机制,发送报文后,等待确认。
3) 重发机制,没有收到确认,将重发数据段。
4) 保持它首部和数据的校验和。 确认数据的准确性。
5) 排序,丢弃重复的,流量控制。 -
http与https区别;https证书在哪存放;
http和https的区别参考
对称加密和非对称加密参考
https运行过程看后面的图片 -
get,post区别;post请求数据量过大,是一次发送还是可以分多次发送请求
简单介绍参考
更清楚明了的参考博客
get和post综合参考在HTTP报文上体现: Get方法的参数应该放在url中,Post方法参数应该放在body中
-
百度页面加载不出来有什么原因
参考 -
tcp/udp区别,生活场景中哪些需要哪些协议
tcp:面向连接;可靠性高;时延大;适用于大文件
UDP:无连接;可靠性低;时延小;适合小文件
什么时候应该使用TCP:
当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。
那么什么时候应该使用UDP:
当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。
比如,日常生活中,常见使用UDP协议的应用如下:QQ消息,QQ语音等 -
计算机网络七层模型
应用层;会话层;表示层;传输层;网络层;链路层;物理层
-
拥塞机制中的快重传
快重传要求接收方在收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方,可提高网络吞吐量约20%)而不要等到自己发送数据时捎带确认。快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。
-
session和cookie区别
Cookie 和 Session都是⽤来跟踪浏览器⽤户身份的会话⽅式,但是两者的应⽤场景不太⼀样。
Cookie ⼀般⽤来保存⽤户信息 ;Session 的主要作⽤就是通过服务端记录⽤户的状态。
(1)cookie数据存放在客户的浏览器上,session数据放在服务器上
(2)cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,如果主要考虑到安全应当使用session
(3)session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用COOKIE -
状态码,404,502,504,报以上错误的具体原因及问题定位和排查
各类错误代码参考:要看具体的错误码
可能出现错误的原因
5xx错误排查 -
http的请求方法有哪些
Get;Head;Post;Put;Delete;CONNECT;OPTIONS;TRACE;PATCH -
ARP协议是为了得到吓一跳的mac地址,当发送的数据报肯定还是ip1和ip5,但是当使用ARP协议在进行地址广播的时候,需要注意的是:路由器中会有路由表,会告诉你想要从ip1到ip5经历哪几个ip,假设下一个经历的是ip6,那么ARP协议发送的分组,就是,我要得到ip6的mac地址,然后ip6返回一个mac地址,然后发送数据的时候,发送的是ip1和ip5以及mac地址。
-
路由风暴是什么?如何避免?为什么采用这种方式能避免
广播风暴 -
太网数据包的大小最大为多少?
参考数据链路层:1500
网络层:头部站20字节:最长只能为:1500-20=1480字节
传输层:UDP占8字节:最长只能为:1480-8=1472字节
TCP占20字节:最长只能为:1480-20=1460 -
TCP协议三次握手四次挥手
三次握手过程中是否存在安全问题?描述一下存在什么样的安全问题?针对这样的安全问题如何防御?
简单的三次握手四次挥手五5
更详细具体的介绍!
解决SYN -
tcp可靠传输
参考(1)首先,采用三次握手来建立TCP连接,四次挥手来释放TCP连接,从而保证建立的传输信道是可靠的。
(2)其次,TCP采用了连续ARQ协议(回退N,Go-back-N;超时自动重传)来保证数据传输的正确性,使用滑动窗口协议来保证接方能够及时处理所接收到的数据,进行流量控制。
(3)最后,TCP使用慢开始、拥塞避免、快重传和快恢复来进行拥塞控制,避免网络拥塞。 -
TCP如何进行拥塞控制?拥塞控制如何判断发生拥塞?TCP快重传如何判断丢失?
慢开始;拥塞避免;快重传;快恢复拥塞控制如何判断发生拥塞?其根据就是没有按时收到确认,虽然没有收到确认可能是其他原因的分组丢失,但是因为无法判定,所以都当做拥塞来处理.
TCP快重传如何判断丢失?快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。 -
知道timewait和2MSL吗,简单介绍一下?
参考五.5 -
MySQL/Oracle端口号
oracle 默认端口号为:1521 -
长连接短连接
参考博客短连接的操作步骤是:
建立连接——数据传输——关闭连接…建立连接——数据传输——关闭连接
长连接的操作步骤是:
建立连接——数据传输…(保持连接)…数据传输——关闭连接
二. 操作系统
-
进程和线程的区别;以及为什么引入线程
参考:二_5和7线程占有的都是不共享的,其中包括:栈、寄存器、状态、程序计数器
线程间共享的有:堆,全局变量,静态变量;
进程占有的资源有:地址空间,全局变量,打开的文件,子进程,信号量、账户信息。 -
进程之间的通信
管道;共享内存;消息传递;信号量;信号;socket
各个优缺点参考
参考(1)管道通信分为:匿名管道和命名管道,匿名管道只适合父子进程间通信,命名管道都可以,但是管道通信的方式:管道这种通信方式效率低,不适合进程间频繁地交换数据。
(2) 消息队列:,A 进程要给 B 进程发送消息,A 进程把数据放在对应的消息队列后就可以正常返回了,B 进程需要的时候再去读取数据就可以了。一是通信不及时,二是附件也有大小限制,这同样也是消息队列通信不足的点。
(3) 共享内存的机制,就是拿出一块虚拟地址空间来,映射到相同的物理内存中。用了共享内存通信方式,带来新的问题,那就是如果多个进程同时修改同一个共享内存,很有可能就冲突了。例如两个进程都同时写一个地址,那先写的那个进程会发现内容被别人覆盖了。
(4) 信号量其实是一个整型的计数器,主要用于实现进程间的互斥与同步,而不是用于缓存进程间通信的数据。使用原语PV操作。
(5) 上面说的进程间通信,都是常规状态下的工作模式。对于异常情况下的工作模式,就需要用信号 的方式来通知进程。
(6) 前面提到的管道、消息队列、共享内存、信号量和信号都是在同一台主机上进行进程间通信,那要想跨网络与不同主机上的进程之间通信,就需要 Socket 通信了。 -
线程之间的通信
参考博客最后面线程间的通信目的主要是用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制。
-
死锁的产生
必要条件:互斥条件;不可剥夺性;请求与保持;循环等待
-
进程的状态
新建;就绪;运行;阻塞;死亡;挂起
-
操作系统了解吗?什么是Linux用户态和内核态?
为什么区分内核态和用户态
内核态和用户态其他方面知识核心态和用户态各有优势
核心态程序:可以访问资源更多,单可靠性/安全性要求高,维护管理都较复杂
用户态程序:访问资源受限,但可靠性、安全性要求低,自然编写维护起来都较简单。 -
为什么引入线程
(1)线程的创建时间比进程快,因为进程在创建的过程中,还需要资源管理信息,比如内存管理信息、文件管理信息,而线程在创建的过程中,不会涉及这些资源管理信息,而是共享它们;
(2)线程的终止时间比进程快,因为线程释放的资源相比进程少很多;
(3)同一个进程内的线程切换比进程切换快,因为线程具有相同的地址空间(虚拟内存共享),这意味着同一个进程的线程都具有同一个页表,那么在切换的时候不需要切换页表。而对于进程之间的切换,切换的时候要把页表给切换掉,而页表的切换过程开销是比较大的;
(4)由于同一进程的各线程间共享内存和文件资源,那么在线程之间数据传递的时候,就不需要经过内核了,这就使得线程之间的数据交互效率更高了;
所以,线程比进程不管是时间效率,还是空间效率都要高。 -
进程调度算法
参考二、10:先来先服务;最短作业优先;高响应比优先算法;时间片轮转调度算法;最高优先级调度算法;多级反馈对列调度算法。
三. 数据库
- 数据库:查询成绩最高的人的姓名
select name from student where score = (select max(score) from student)
- 一条sql语句查询慢有哪些可能
具体解释参考
数据库关于锁的用法1、SQL偶尔执行慢,可能是因为网络抖动、InnoDB的脏页刷新机制、操作等待锁资源导致的;
2、SQL一直执行慢,可能是因为SQL执行没有索引或者没有走上索引,以及单表数据量过大导致的。 - 分数都大于80的人
参考 - 数据库,索引,事务ACID,主键,外键(知道多少说多少)
参考二:(主键约束、自增约束),(外键约束),(唯一约束),(非空约束),(默认约束)
参考:数据库整体概念参考 - 索引
什么情况下建立索引;索引优点;缺点;类型; - 了解乐观锁和悲观锁吗
参考CAS算法:在对数据进行操作的时候,先把原始数据备份,当真正实用的时候验证备份数据和数据库中的数据是否一致,一致就不进行任何操作,不一致就更新备份的数据,直到两者相同,验证通过。
- 主键唯一键之间有什么区别
主键不能为null,唯一主键可以为null - 数据库中char和varchar的区别
数据类型参考
数据库中char和varchar的区别 - 数据库在一个成绩单中选出平均成绩小于60的学生的ID和平均成绩
select ID,avg(score) from student group by name having avg(score)>=60
也不知道对不对?? - redies和数据库的区别,什么时候用Redis什么时候用数据库
说说redis中的数据结构和应用场景
redies和数据库详细参考
redies和数据库简单参考【类型上;作用上;需求上】Redis适合放一些频繁使用,比较热的数据,因为是放在内存中,读写速度都非常快,一般会应用在下面一些场景:排行榜、计数器、消息队列推送、好友关注、粉丝.
- 内连接,左连接,右连接
参考 - Mysql索引的类型
参考
主键索引、唯一索引、普通索引、全文索引、组合索引 - 一个数据库sql查询重复个数
参考select username,count(*) as count from hk_test group by username having count>1;
-
- 主键外键
主键外键参考
若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键。
存在于外面的主键就是外键。比如上面成绩表的学号是学生表的外键,成绩表的课程编号是课程表的外键。
主键是唯一的,用于标识一张表。外键可以有多个,用于建立表和表的关系。 - 主键外键
- 子查询缺点
子查询的缺点在于过多的子查询将会影响性能,而且将导致代码可读性不佳。 - 连接查询
内连接;外连接:左连接,右连接;全连接 - 怎么看索引是否合理
索引类型在哪些列上添加索引比较好:
1.比较频繁的作为查询的字段
2.唯一性太差的字段不适合加索引,要找唯一性比较好的
3.更新太频繁的字段不适合做索引
4.不会出现在where中的 不应该建立索引 - 索引底层结构
参考 - 现在有两个表,员工表Employee,存储内容:id, name,dept_id; 部门表Dept, 存储内容:dept_id,dept_name,要求获取员工的id, name, dept_name;
参考
SELECT e.id, e.name, e.class_id, d.dept_name FROM Employee e INNER JOIN Dept d ON e.dept_id= d.dept_id;
- 数据库的事务了解吗,数据库引擎知道吗
Mysql 中 MyISAM 和 InnoDB 的区别
自己写的引擎参考 - 表T,列A,B,C,A为主键,C含有重复值,查找C列重复的记录
参考 - SQL 增删改查
考察where
考察聚合函数
where和having的区别having:是从前面筛选的字段再筛选,而where是从数据表中的字段直接筛选。