【28】C++岗位求职面试八股文第二十八篇(计算机网络)

系列文章目录

第一篇:语言基础

第二篇:设计模式

第三篇:数据库

第四篇:计算机网络

第五篇:操作系统

第六篇:LInux

第七篇:数据结构

第八篇:智力题

[81] HTTP 常见的响应状态码及其含义

1XX : 信息类状态码(表示接收请求状态处理)2XX : 成功状态码(表示请求正常处理完毕)3XX : 重定向(表示需要进行附加操作,已完成请求)4XX : 客户端错误(表示服务器无法处理请求)5XX : 服务器错误状态码(表示服务器处理请求的时候出错)

200 ok204 no content

301 永久重定向302 临时重定向304 缓存重定向

400 : Bad Request 请求报文中存在语法错误(当错误方式时,需修改请求的内容后,再次发送请求)。403 : Forbidden 对请求资源的访问被服务器拒绝了。404 : Not Found服务器上无法找到请求的资源。

500 : Internal Server Error 服务器端在执行请求时发生了错误。503 : Service Unavailable 服务器暂时处于超负载或者是正在进行停机维护,现在无法处理请求。

[82]HTTP请求的常用方法

1.GET方法

GET方法用于使用给定的URI从给定服务器中检索信息,即从指定资源中请求数据。使用GET方法的请求应该只是检索数据,并且不应对数据产生其他影响。2.POST方法

向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。3.HEAD方法

向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回,仅传输状态行和标题部分。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。4.PUT方法

PUT方法用于将数据发送到服务器以创建或更新资源,它可以用上传的内容替换目标资源中的所有当前内容。即向指定资源位置上传其最新内容。5.DELETE方法

DELETE方法用来删除指定的资源,它会删除URI给出的目标资源的所有当前内容。6.CONNECT方法

HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。7.OPTIONS方法

允许客户端查看服务器的性能。8.TRACE方法

回显服务器收到的请求,主要用于测试或诊断。

[83]说说 GET请求和 POST请求的区别

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

[84]说说 Cookie 和 Session 的关系和区别是什么

Cookie与Session都是会话的一种方式。服务端通过为该用户创建Cookie/Session来获取这些信息。cookie数据存放在客户的浏览器上,session数据放在服务器上。cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session。

session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用COOKIE。单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

[85]http优化

[86]简述 HTTPS 的加密与认证过程

加密客户端先向服务器端索要公钥,然后⽤公钥加密信息,服务器收到密⽂后,⽤⾃⼰的私钥解密

1.客户端在浏览器中输入一个https网址,然后连接到server的443端口 采用https协议的server必须有一套数字证书(一套公钥和密钥) 首先server将证书(公钥)传送到客户端 客户端解析证书,验证成功,则生成一个随机数(私钥),并用证书将该随机数加密后传回server .server用密钥解密后,获得这个随机值,然后将要传输的信息和私钥通过某种算法混合在一起(加密)传到客户端 客户端用之前的生成的随机数(私钥)解密服务器端传来的信息

2.首先浏览器会从内置的证书列表中索引,找到服务器下发证书对应的机构,如果没有找到,此时就会提示用户该证书是不是由权威机构颁发,是不可信任的。如果查到了对应的机构,则取出该机构颁发的公钥。

用机构的证书公钥解密得到证书的内容和证书签名,内容包括网站的网址、网站的公钥、证书的有效期等。浏览器会先验证证书签名的合法性。签名通过后,浏览器验证证书记录的网址是否和当前网址是一致的,不一致会提示用户。如果网址一致会检查证书有效期,证书过期了也会提示用户。这些都通过认证时,浏览器就可以安全使用证书中的网站公钥了。

[87]http请求全过程

[88]⽹络层(IP)与数据链路层(MAC)有什么关系呢?

[89]IPv6

⾸部成为固定⻓度的 40 字节,ipv6共128位Arp协议在网络层IP 中还包括 ICMP 协议和 ARP 协议。ICMP ⽤于告知⽹络包传送过程中产⽣的错误以及各种控制信息

ARP ⽤于根据 IP 地址查询相应的以太⽹ MAC 地址

[91]本地socket通信

链接socket进程通信与网络通信使用的是统一套接口,只是地址结构与某些参数不同。

int socket(int domain, int type, int protocol);

domain 参数指定协议族,对于本地套接字来说,其值须被置为 AF_UNIX 枚举值

int connect(int socket, const struct sockaddr *address, size_t address_len);address表示当前客户端的本地地址,是一个 struct sockaddr_un 类型的变量

[92]打开⼀个⽹⻚使⽤到了哪些其他协议(6个协议)

[93]Nagle 算法与延迟确认

Nagle算法就是为了尽可能发送⼤块数据,避免⽹络中充斥着许多⼩数据块。。任意时刻,最多只能有⼀个未被确认的⼩段。所谓“⼩段”,指的是⼩于MSS尺⼨的数据块,所 谓“未被确认”,是指⼀个数据块发送出去后,没有收到对⽅发送的ACK,确认该数据已收到

Nagle算法意味着延迟发,

[94]延迟确认

接收⽅收到数据包后,如果暂时没有数据要发给对端,它可以等⼀段时再确认(Linux上默认 是40ms)。如果这段时间刚好有数据要传给对端,ACK就随着数据传输,⽽不需要单独发送 ⼀次ACK。如果超过时间还没有数据要发送,也发送ACK,避免对端以为丢包

不能延迟的场景: 乱序包、接收到了⼤于⼀个 窗⼝⼤⼩的报⽂,且需要调整窗⼝⼤⼩

⼀般情况下,Nagle算法和延迟确认不能⼀起使⽤,Nagle算法意味着延迟发,延迟确认意味着延迟接收,就会造成更⼤的延迟,会产⽣性能问题

[95]ICMP:

IP协议并不提供可靠传输。如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因, 所以引⼊了ICMP协议。作⽤: 1. 确认IP包是否成功到达⽬标地址2. 通知在发送过程中IP包被丢弃的原因类别: 1. ⼀类是通知出错原因 2. ⼀类是⽤于诊断查询 应⽤: ping命令

[96]ping命令:

功能: 1. 能验证⽹络的连通性 2. 会统计响应时间和TTL(IP包中的Time To Live,⽣存周期)过程: 1. ping命令会先发送⼀个 ICMP Echo Request给对端 Internet控制报文协议2. 对端接收到之后, 会返回⼀个ICMP Echo Reply3. 若没有返回,就是超时了,会认为指定的⽹络地址不存在traceroute功能:打印出 可执⾏程序主机,⼀直到⽬标主机之前经历多少路由器

Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送 ICMP(Internet Control Message Protocol 因特网报文控制协议)Echo 请求报文,测试目的站是否可达及了解其有关状态

TTL的最初设想是确定一个时间范围,超过此时间就把包丢弃。由于每个路由器都至少要把TTL域减一,TTL通常表示包在被丢弃前最多能经过的路由器个数。当记数到0时,路由器决定丢弃该包,并发送一个ICMP报文给最初的发送者

[97]路由转发原理

当一个数据来到路由器,路由器将基于数据包中的目标IP地址,查看本地的路由表。之后,若表中存在记录,则将无条件按照表中的记录进行转发;若表中不存在记录,则路由器将直接丢弃该数据包

[98]应用层协议有哪些·:

DNS域名系统(基于传输层的UDP协议,端口号为53);2、FTP文件传输协议;3、Telnet远程终端协议;4、HTTP超文本传送协议;5、SMTP电子邮件协议;6、POP3邮件读取协议;7、SNMP简单网络管理协议;8、TFTP简单文件传送协议

针对窃听(混合加密)、篡改(摘要算法)、伪造(服务器公钥放到数字证书)

[99]http http1.0 http1.1 https http2 http3

http优点:「简单、灵活和易于扩展、应⽤⼴泛和跨平台」缺点:⽆状态、明⽂传输,不安全

http1.0:每次请求需要新建一个连接

http1.1: 长连接、管道网络传输(同时发送请求)、队头阻塞

http2:(TLS1.2版本,四次握手)基于https,头部压缩HPACK、二进制格式、数据流stream、多路复用(解决对头阻塞)、一旦丢包,阻塞所有请求、服务器主动推送

http3:(TLS1.3版本,三次握手)UDP Qpack stream QUIC保证可靠传输

[100]对称加密与非对称加密的区别是什么

区别:1、对称加密中加密和解密使用的秘钥是同一个;非对称加密中采用两个密钥,一般使用公钥进行加密,私钥进行解密(客户端处用服务器公钥加密;服务端处用服务器私钥解密)。

2、对称加密解密的速度比较快,非对称加密和解密花费的时间长、速度相对较慢。

3、对称加密的安全性相对较低,非对称加密的安全性较高

[101]http1.1优化

缓存 压缩 代理服务器重定向 合并资源再发送 按需访问资源

[102]Tcpdump抓包

[103]Ping

Ping 包中有⼀个字段叫做 TTL ( Time To Live ,⽣存周期),它的值随着每经过⼀次路由器就会减 1,直到减到 0 时该 IP 包会被丢弃。 此时,路由器将会发送⼀个 ICMP 超时消息给发送端主机,并通知该包已被丢弃。

Ping成功并不一定就代表TCP/IP配置正确,有可能还要执行大量的本地主机与远程主机的数据包交换,才能确信TCP/IP配置的正确性。如果执行ping成功而网络仍无法使用,那么问题很可能出在网络系统的软件配置方面,ping成功只保证当前主机与目的主机间存在一条连通的物理路径

[104]网络模型

[105]网络协议栈

应⽤程序需要通过系统调⽤,来跟 Socket 层进⾏数据交互;Socket 层的下⾯就是传输层、⽹络层和⽹络接⼝层;最下⾯的⼀层,则是⽹卡驱动程序和硬件⽹卡设备;

[续]C++岗位求职面试八股文第二十九篇(操作系统)

更多关于算法题解、软件开发面经、机器学习算法面经、各企业面试问题记录,关注Fintech砖,持续更新中。https://www.nowcoder.com/users/873777317

企业面试记录专栏https://www.nowcoder.com/creation/manager/columnDetail/0YBWnm

机器学习面经专栏https://www.nowcoder.com/creation/manager/columnDetail/j8nNy0

软件开发面经专栏https://www.nowcoder.com/creation/manager/columnDetail/0aXKaM

更多校园招聘常见面试问题(开发、算法、编程题目)参见CSDN博客:http://t.csdn.cn/V4qbH

欢迎关注、收藏、点赞后进行问题咨询及秋招建议

#晒一晒我的offer##软件开发薪资爆料##我的实习求职记录##23届找工作求助阵地#
软件开发八股面经 文章被收录于专栏

包含C++、操作系统、数据库、计算机组成、计算机网络、设计模式、操作系统、牛客网服务器项目、综合智力题等

全部评论

相关推荐

5 17 评论
分享
牛客网
牛客企业服务