计算机网络

基础

Q:五层协议的体系结构分别是什么?每一层都有哪些协议?

https://blog.csdn.net/cainv89/article/details/46885197

应用层,应用层确定进程之间通信的性质以满足用户的需要。应用层不仅要提供应用进程所需要的信息交换和远地操作,还要作为互相作用的应用进程的用户代理(user agent);

运输层任务是负责主机中两个进程间的通信;

网络层网络层负责的是分组选择合适的路由;

数据链路层数据链路层的任务:将在网络层交下来的数据报组装成帧(frame),两个相邻结点间的链路实现帧的传输;

物理层物理层的任务:透明地传输比特流。

Q:为何有MAC地址还要IP地址?

http://blog.sciencenet.cn/blog-411071-1037673.html

基本上一个观点就是一个是物理地址,一个是逻辑地址。

假设两点在一个网络内。在这种情况下,只需要MAC地址就可以了。例如通过交换机将多台电脑组成一个网络。

然而,如果两点不在一个网络内。这时就需要IP地址了。因为IP地址含有两个部分,一个是网络地址,一个是主机地址。因此,通过对方的IP地址,是可以判断出对方是否和本机在一个网络内。如果在一个网络内,如上所述,只需要知道对方的MAC地址即可通信。

如果不在一个网络内,本机的网络层就认为数据应该发送给网关。道理是显然的,如果不在一个网络内,首先得把数据发送出网络才可以。如何发出网络,当然是发给网关,因为网关就相当于网络的门卫。要想把数据发给网关,同样需要知道网关的MAC地址,如何知道网关的MAC地址呢?这就涉及到ARP协议。

电脑缓存里有一张ARP表,该表主要有两列:一列是IP地址,另外一列是MAC地址。这张表不是天生就有的,是随着网卡收到网络中的各种通信数据,不断学习增加的。

话说回来,如果ARP表中有网关IP地址对应的MAC地址,则问题就转化为网内数据发送,上面已经讲的很清楚了。如果ARP表中没有网关IP地址对应的MAC地址,则启动ARP协议,即向网内广播,询问该IP地址的MAC地址。广播询问的结果是网关收到广播后,发现是问自己的MAC地址,所以就回复询问方自己的MAC地址。然后数据发给网关的问题,也转化为网内数据发送。

TCP

Q:TCP和UDP的区别?

https://blog.csdn.net/xiaobangkuaipao/article/details/76793702

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付

Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。

3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。

4.每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

5、TCP对系统资源要求较多,UDP对系统资源要求较少。

Q:拥塞控制和流量控制都是什么,两者的区别?

https://blog.csdn.net/ailunlee/article/details/53716367

流量控制是端到端的控制,例如A通过网络给B发数据,A发送的太快导致B没法接收(B缓冲窗口过小或者处理过慢),这时候的控制就是流量控制,原理是通过滑动窗口的大小改变来实现。 
拥塞控制是A与B之间的网络发生堵塞导致传输过慢或者丢包,来不及传输。防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不至于过载。拥塞控制是一个全局性的过程,涉及到所有的主机、路由器,以及与降低网络性能有关的所有因素。

Q:谈谈TCP为什么要三次握手?为什么要四次挥手?

https://blog.csdn.net/zhaobudaofangxia/article/details/55260259

https://blog.csdn.net/qq_33982721/article/details/78493967

三次握手:

第一次。A跟B说,我要建立连接了。
第二次。B跟A说,OK,那我也建立连接。
第三次。A跟B说,嗯,我知道了。
四次挥手:

第一次。A跟B说,我要断开连接了。
第二次。B跟A说,好的,我知道了,我不再接收你的信息了。
第三次。B跟A说,我传给你的信息传完了,你可以关闭连接了。
第四次。A跟B说,好的,我关闭连接了。

Q:播放视频用TCP还是UDP?为什么?

TCP 和 UDP 是质量和实时性的权衡。
拿视频网站来说,你完全可以缓冲 20s 再播放,不会带来什么影响,但如果画面有马赛克之类的东西出现肯定是不好的,所以用 TCP。
而对于视频聊天,如果缓冲 5s,相信整个聊天已经没法愉快的进行了,而这时出现一些画面质量的损失也可以被接受,所以用 UDP。

HTTP

Q:HTTP报文格式?

https://blog.csdn.net/holmofy/article/details/68492045

Q:了解哪些响应状态码?

https://blog.csdn.net/oops_qu/article/details/75675702

http状态返回代码 1xx(临时响应):表示临时响应并需要请求者继续执行操作的状态代码。

http状态返回代码 2xx (成功):表示成功处理了请求的状态代码。

http状态返回代码 3xx (重定向):表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。

http状态返回代码 4xx(请求错误):这些状态代码表示请求可能出错,妨碍了服务器的处理。

http状态返回代码 5xx(服务器错误):这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。

Q:get和post的区别?

https://www.cnblogs.com/huaxingtianxia/p/5895236.html

GET在浏览器回退时是无害的,而POST会再次提交请求。
GET产生的URL地址可以被Bookmark,而POST不可以。
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
GET请求只能进行url编码,而POST支持多种编码方式。
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
GET请求在URL中传送的参数是有长度限制的,而POST么有。
对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
GET参数通过URL传递,POST放在Request body中。
GET和POST还有一个重大区别

简单的说:

GET产生一个TCP数据包;POST产生两个TCP数据包。

长的说:

对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。

因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。但这是一个坑!跳入需谨慎。为什么?

1. GET与POST都有自己的语义,不能随便混用。

2. 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。

3. 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

Q:Http1.0、Http1.1、Http2.0的区别?

https://blog.csdn.net/linsongbin1/article/details/54980801/

Q:HTTP和TCP的区别?

实际上,传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议的,而Socket本身不算是协议,它只是提供了一个针对TCP或者UDP编程的接口。

Q:HTTP和HTTPS的区别?

https://www.cnblogs.com/wqhwe/p/5407468.html

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

Q:HTTP和Socket的区别?

https://blog.csdn.net/w369033345/article/details/72779553

https://blog.csdn.net/w369033345/article/details/72779553

http 为短连接:客户端发送请求都需要服务器端回送响应.请求结束后,主动释放链接,因此为短连接。通常的做法是,不需要任何数据,也要保持每隔一段时间向服务器发送"保持连接"的请求。这样可以保证客户端在服务器端是"上线"状态。

Socket为长连接:通常情况下Socket 连接就是 TCP 连接,因此 Socket 连接一旦建立,通讯双方开始互发数据内容,直到双方断开连接。在实际应用中,由于网络节点过多,在传输过程中,会被节点断开连接,因此要通过轮询高速网络,该节点处于活跃状态。

Q:在地址栏打入http://www.baidu.com会发生什么?

当输入www.baidu.com时,计算机会请求DNS服务器,进行域名转换,得到服务器IP地址,同时对服务器发出请求,服务器响应请求,客户端浏览器发起一个HTTP会话到IP地址,然后通过tcp进行封装数据包,输入到网络层

Q:长链接与短连接?

https://www.cnblogs.com/gotodsp/p/6366163.html

操作系统

Q:操作系统中进程和线程的区别?

进程是程序执行的一个实体,线程是CPU调度的最小单位

Q:死锁的产生和避免?

https://www.cnblogs.com/fangrong/p/5271724.html

死锁的四个必要条件:
(1)互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。
(2)请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。
(3)非剥夺条件(No pre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。
(4)循环等待条件(Circular wait):系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。

 死锁避免(deadlock avoidence)是在系统运行过程中注意避免死锁的发生。这就要求每当申请一个资源时,系统都应根据一定的算法判断是否认可这次申请,使得在今后一段时间内系统不会出现死锁。这面方最著名的算法首推Dijkstra[1965]提出的银行家(banker)算法。

数据库

Q:数据库中的事务了解吗?事务的四大特性?

数据库事务是数据库运行中的逻辑工作单位,单个逻辑工作单元所执行的一系列操作,要么都执行,要么都不执行。例如银行取款事务分为2个步骤(1)存折减款(2)提取现金,2个步骤必须同时完成或者都不完成。

数据库事务的四大特性(ACID):

(1) 原子性(Atomicity):
     事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。
(2)一致性(Consistency) :
    事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。这种特性称为事务的一致性。假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。
(3)分离性(Isolation):
   分离性指并发的事务是相互隔离的。即一个事务内部的操作及正在操作的数据必须封锁起来,不被其它企图进行修改的事务看到。假如并发交叉执行的事务没有任何控制,操纵相同的共享对象的多个并发事务的执行可能引起异常情况。
(4)持久性(Durability):
   持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。即一旦一个事务提交,DBMS保证它对数据库中数据的改变应该是永久性的,即对已提交事务的更新能恢复。持久性通过数据库备份和恢复来保证。

Q:如何理解数据库的范式?

https://blog.csdn.net/zymx14/article/details/69789326

第一范式(1NF):确保每一列的原子性

如果每一列都是不可再分的最小数据单元,则满足第一范式。

第二范式:非键字段必须依赖于键字段

如果一个关系满足1NF,并且除了主键以外的其它列,都依赖与该主键,则满足二范式(2NF),第二范式要求每个表只描述一件事。

第三范式:在1NF基础上,除了主键以外的其它列都不传递依赖于主键列,或者说: 任何非主属性不依赖于其它非主属性

(在2NF基础上消除传递依赖)

数据结构与算法

Q:怎么理解数据结构?

带有机构的数据元素的集合

Q:什么是斐波那契数列?

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)

Q:迭代和递归的特点,并比较优缺点

https://blog.csdn.net/laoyang360/article/details/7855860

Q:了解哪些查找算法,时间复杂度都是多少?

https://blog.csdn.net/qq_23217629/article/details/52517741

Q:了解哪些排序算法,并比较一下,以及适用场景

https://blog.csdn.net/mountain_hua/article/details/81107024

Q:快排的基本思路是什么?最差的时间复杂度是多少?如何优化?

(升序)以某个记录的关键字为划分元,将整个数据分为两组,左边的数据小于等于划分元,右边的数据大于等于划分元。对左右两组数据,再各自选择一个划分元,将两组数据划分为更小的序列,这样一直进行下去,直到整个序列有序。

public static void quickSort(int[] array, int left, int right) {if (left < right) {int pivot = array[left];int low = left;int high = right;while (low < high) {while (low < high && array[high] >= pivot) {high--;}array[low] = array[high];while (low < high && array[low] <= pivot) {low++;}array[high] = array[low];}array[low] = pivot;quickSort(array, left, low - 1);quickSort(array, low + 1, right);}
}

最差时间复杂度即是但数据有序的时候,这时候退化为冒泡排序,时间复杂度为O(n2)

优化:https://blog.csdn.net/sinat_28676875/article/details/69053449

Q:冒泡排序如何优化?

public static void bubbleSort(int[] array) {int len = array.length;boolean flag = true;while (flag) {flag = false;for (int i = 0; i < len - 1; i++) {if (array[i] > array[i + 1]) {int temp = array[i + 1];array[i + 1] = array[j];array[i] = temp;flag = true;}}len--;}
}

存在这样一一种情况,冒泡过程中,后面的若干记录没有发生交换,这时候再继续进行冒泡就显得多此一举了,那么我们只需要记录没有发生交换的位置,对这个位置之后的数据不进行冒泡处理,只对这个位置之前的数据进行冒泡处理,提升算法的效率。

优化后的冒泡排序:

void Bubble_Modified_Sort(int R[],int n){int i=n;int j;int LastExchangeIndex;while(i>1){LastExchangeIndex=1;for(j=0,j<i,j++){if(R[j]>R[j+1]){int temp=R[j+1];R[j+1]=R[j];R[j]=temp;LastExchangeIndex=j;}    //end if}    //end fori=LastExchangeIndex;}    //end while
}

Q:AVL树插入或删除一个节点的过程是怎样的?

https://blog.csdn.net/Ivan_zgj/article/details/51495926

https://blog.csdn.net/friendbkf/article/details/50160141

Q:什么是红黑树?

红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。

它是在1972年由Rudolf Bayer发明的,当时被称为平衡二叉B树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的“红黑树”。

红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。

它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和删除,这里的n 是树中元素的数目。

https://blog.csdn.net/eric491179912/article/details/6179908

Q:100盏灯问题
Q:老鼠和毒药问题,加个条件,必须要求第二天出结果
Q:海量数据问题
Q:(手写算法)二分查找
Q:(手写算法)反转链表
Q:(手写算法)用两个栈实现队列
Q:(手写算法)多线程轮流打印问题
Q:(手写算法)如何判断一个链有环/两条链交叉
Q:(手写算法)快速从一组无序数中找到第k大的数/前k个大的数
Q:(手写算法)最长(不)重复子串

计算机基础类面试(计网,操作系统,数据库,数据结构等)相关推荐

  1. 前端面试计网、HTTP协议,操作系统(自留,持续更新)

    参考: https://juejin.cn/post/6844903590058786824 https://space.bilibili.com/327247876 https://blog.csd ...

  2. Android面试计网面经大全【持续更新中。。。】

    前言 本篇文章为本人面试以及空闲时间整理的计网面试常见问题.供本人复习之用.分享给大家.大家可以评论补充哦! 因为面试常见问题一般都是网络层,传输层以及应用层.所以我就按自上而下的顺序,来分享 最后一 ...

  3. 2020 - [Java基础 +多线程 + 虚拟机] + [计网 + 操作系统] + [MySQL] + [Redis] + [RocketMQ] + [Spring]常见面试题与解析

    前情提要:下面的内容主要由网上的资料和个人的理解整理而成.由于时间仓促可能没有给出相应的链接,并不代表我不尊重他人的劳动成果,后续更新会补上相应的链接.其中内容可能有理解不到位的地方,大家可选择性采纳 ...

  4. 复试day4 计网DS

    1.按范围网络分为几类? 广域网,城域网,局域网.广域网覆盖范围大,通常借用公用网络,传输速率较慢,网络拓扑结构复杂 . 城域网局域网范围较小,用户接入简单 . 网络的功能有哪些? 信息传输 . 资源 ...

  5. 大二学科不挂科 速冲方法推荐(数据结构+计组+操作系统+算法+数据库+计网)

    文章目录 前引 学科速成总结 1.数据结构 2.计算机组成原理 3.操作系统 4.数据库系统概论 5.算法设计与分析 结束语 前引 这段时间本来是紧锣密鼓的在准备面试 原本以为自己已经学过的科目 考试 ...

  6. 如何把计算机组成原理、操作系统、数据结构和计算机网络融会贯通,相互联系起来?

    如何把计算机组成原理.操作系统.数据结构和计算机网络融会贯通,相互联系起来? 何为融会贯通? 知识的融会贯通的唯一核心衡量指标是,遇到没有遇见过的问题却能用处理过的经验去解决问题. 工业计算发展史 现 ...

  7. 计算机考研复试面试常问问题 数据库篇

    计算机考研复试面试常问问题 数据库篇 在复习过程中,我用心查阅并整理了在考研复试面试中可能问到的大部分问题,并分点整理了答案,可以直接理解背诵并加上自己的语言润色!极力推荐打印下来看,效率更高!绝对良 ...

  8. 【面试】计网知识点复习与总结

    [面试]计网知识点复习与总结 1. 计算机网络层次结构 ISO/OSI七层网络模型与TCP/IP五层网络模型的比较如图所示: 物理层:它的主要作用是传输比特流,进行模数转换与数模转换,这一层的数据叫做 ...

  9. 南开大计算机学院夏令营,【2022夏令营】南开大学“e入计网”优秀大学生云端夏令营的通知...

    南开大学计算机学院.网络空间安全学院面向全国重点大学接收2022年优秀应届本科生推荐免试为研究生.拟于2021年7月初举办"e入计网"优秀大学生云端夏令营活动,旨在增进国内高校优秀 ...

最新文章

  1. java服务器端编程
  2. 使用 Parallel HTTP Request 根据配置文件动态发送多个 HTTP 请求的失败尝试
  3. python环境变量的配置 alias_配置别名
  4. [转载]程序员如何写出杀手级简历
  5. 方法的运用_运用正确管理方法缩减库存,助力企业发展
  6. Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel 1
  7. Asp.Net MVC学习总结(三)——过滤器你怎么看?
  8. excel取整数的函数_Excel教程:取整函数INT 与TRUNC~~Excel新技能
  9. Jzoj4384 Hashit
  10. 【开篇】抽象代数的历史背景与内容总览
  11. WPS国际版添加中文包
  12. 今日头条推荐算法原理
  13. android mp4 画面裁剪,说说Android的视频裁剪(二)
  14. 《经济学原理》——读书笔记(一)
  15. 交互式电子白板的八种常用功能
  16. 双十一之后,留给证券区块链转型的时间不多了……
  17. win10控制台打开远程桌面连接
  18. ::before和::after伪元素的使用及优惠券案例
  19. HTML中表格怎么制作
  20. python如何连接创建我的世界_我的Python世界 玩《Minecraft我的世界》学Python编程...

热门文章

  1. mysql 邮箱格式的_正则表达式验证邮箱格式
  2. 1438 奥格瑞拉日常—考考你的记忆
  3. 零基础学Android——布局管理器
  4. 推荐几款流量统计网站,通过流量分析管理自己的网站
  5. DSG证券基金行业本地异地容灾备份查询一体化方案(西部证券)
  6. 阿里游戏实习生活(杂谈)
  7. excel工具栏隐藏了怎么办_Excel还能打印证件照?没错,一寸和两寸证件照轻松印...
  8. 栈溢出攻击系列:shellcode在linux x86 64位攻击获得root权限(二)shellcode
  9. 服务器怎么弄无限箱子,魔兽怀旧服安其拉甲虫箱子无限开方法
  10. 综合案例-使用 Thymeleaf 模板技术实现表白墙