随笔分类 - 面试题
摘要:1.在源主机上,应用层将一串应用数据流向下传输给传输层 2.传输层将应用数据截流成分组,并加上TCP报头形成TCP段,向下递交给网络层 3.在网络层给TCP段加上包括源主机,目的主机IP地址的IP报头,生成一个IP数据包,并将IP数据包向下递交给链路层 4.链路层在其MAC帧的数据部分装上IP数据包
阅读全文
摘要:(以上为以太网的帧格式) Preamble:前导同步码7个字节+帧开始定界符1个字节=8个字节 Destination MAC adress:目的MAC地址 Source MAC adress:源MAC地址 Type/Length:帧类型 User date :数据信息 Frame Check Se
阅读全文
摘要:TCP粘包:指发送方发送的若干数据包在接收方接收时粘成一团,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾 产生的原因: 1.发送方的原因:TCP默认使用Nagle算法,而Nagle算法主要做两件事情:只有上一个分组得到确认,才发送下一个分组,收集多个小分组,在一个确认到来时一起发送,Nagle
阅读全文
摘要:在TCP的11种状态变迁中,我们需要用到TCP头部的三个标志位: 1.SYN,SYN=1表示这是一个连接请求报文或者连接接受报文 2.ACK,ACK=1,表示确认号生效 3.FIN,FIN=1表示发送方数据已经发送完毕,并要求释放连接 假设连接的请求和释放都是由客户端主动发起的! CLOSED状态:
阅读全文
摘要:1)超时重传计时器 目的:避免无限等待确认报文 创建时间:在发送TCP报文段时,会为该报文段设置一个超时重传计时器 可能发生的情况:在超时时间到达之前,收到了该报文段的确认则撤销计时器,否则重传该报文段,并将超时重传计时器复位 重传时间:2*RTT(RTT为往返时间) 2)坚持计时器 目的:解决零大
阅读全文
摘要:运行于TCP协议之上的协议: HTTP协议:超文本传输协议,用于普通浏览 HTTPS协议:安全超文本传输协议,身披SSL外衣的HTTP协议 FTP协议:文件传输协议,用于文件传输 POP3协议:邮局协议,收邮件使用 SMTP协议:简单邮件传输协议,用来发送电子邮件 Telent协议:远程登陆协议,通
阅读全文
摘要:TCP和UDP的区别: 1)TCP是面向连接的,而UDP是无连接的 2)TCP提供可靠服务,而UDP不提供可靠服务,只是尽最大努力交付报文 3)TCP面向字节流,TCP把数据看成一串无结构的字节流,而UDP是面向报文的(UDP数据报+IP头部=IP数据报) 4)TCP有拥塞控制,UDP没有拥塞控制
阅读全文
摘要:(除选项外的报头区总共20个字节) 1)版本:IPV4/IPV6 2)头长度:报头区长度,用于计算数据区的开始位置,比如头长度为6,代表报头区长度为6*4个字节,头长度的单位为4字节,所以报头区长度不为4字节的倍数时必须填充字节,满足倍数要求 3)服务类型TOS: 8位二进制,用于规定本数据报的处理
阅读全文
摘要:以web服务器产生大量的close_wait状态为例1.close_wait状态介绍:客户端主动关闭连接,服务器接收到客户端的FIN,但是还没有发送自己的FIN,此时的状态为close_wait状态,大量的close_wait状态拖累服务器性能2.close_wait产生的原因:某种情况下客户端关闭了连接,但是我方忙于读写,没有关闭连接3.解决方法:思想:检查出客户端已经关闭的连接,关闭他之所以会...
阅读全文
摘要:TIME_WAIT状态之所以存在,是为了保证网络的可靠性有以下原因:1.为实现TCP全双工连接的可靠释放 当服务器先关闭连接,如果不在一定时间内维护一个这样的TIME_WAIT状态,那么当被动关闭的一方的FIN到达时,服务器的TCP传输层会用RST包响应对方,这样被对方认为是有错误发生,事实上这只是正常的关闭连接工程,并没有异常2.为使过期的数据包在网络因过期而消失 在这条连接上,客户端...
阅读全文
摘要:select: 轮询+fd_set 1.采用fd_set存储fd(fd_set通过数组位图实现) 2.每次调用select,都需要把fd集合从用户态拷贝到内核态,fd越多开销越大 3.每次调用select,都需要在内核遍历传递进来的fd,开销大(轮询) 4.select支持的fd数量太少,1024(
阅读全文
摘要:1.http和https的区别 2.对称加密和非对称加密 3.三次握手与四次挥手的流程 4.为什么TCP需要三次握手?两次不可以吗?为什么 5.为什么TCP挥手需要四次?三次不行吗? 6.TCP协议如何来保证传输的可靠性? 7.客户端不断进行请求连接会怎么样?DDOS攻击? 8.get和post的区
阅读全文
摘要:1.进程和线程以及他们的区别 2.进程间通信的几种方式 3.线程同步的方式 4.死锁 5.分页和分段有什么区别?(内存管理) 6.操作系统中进程调度的策略有哪几种? 7.页面置换算法: 8.系统颠簸 9.程序局部性原理 1.进程和线程以及他们的区别 *进程是对运行时程序的封装,是系统进行资源调度和分
阅读全文
摘要:1.插入排序 *直接插入排序 *希尔排序2.选择排序 *简单选择排序 *堆排序3.交换排序 *冒泡排序 *快速排序4.归并排序5.基数排序不稳定排序:简单选择排序,快速排序,希尔排序,堆排序稳定排序:冒泡排序,直接插入排序,归并排序,奇数排序一.插入排序将第一个和第二个元素排好序,然后将第3个元素插入到已经排好序的元素中,依次类推(插入排序最好的情况就是数组已经有序了)二.希尔排序因为...
阅读全文
摘要:1.Lambda表达式:允许把函数作为一个方法的参数Lambda的优点:1)简洁2)非常容易并行计算3)可能代表未来编程趋势Lambda的缺点:1)若不要并行计算,很多时候计算速度没有传统的for快(并行计算有时候需要预热才能显示出效率)2)不容易调试3)若其他程序员没有学过lambda表达式,代表不容易让其他语言程序员看懂2.方法引用:直接引用已有的java类或实例的方法或构造器,使得语言结构更...
阅读全文
摘要:样例: 字符串“abcd1234"左移3位结果为”234abcd1“ K:左移位数 L:字符串长度 方案1:暴力 O(K * L) 可以每次将数组中的元素左移一位,循环K次。 abcd1234 ->4abcd123 ->34abcd12->234abcd1 算法复杂度为O(K * L) 方案2:暴力
阅读全文
摘要:样例:比如“abcdabc”,第一个只出现一次的字符为d,位置为3 解决方案1:O(n*n)的复杂度 遍历字符串中的每个字符,然后用该字符在字符串中进行查找,如果没有找到和当前字符相同的字符。则当前字符为第一个 只出现一次的字符。 解决方案2:O(n)的复杂度 采取空间换时间的策略 开一个辅助数组,
阅读全文