2021年是十四五规划重要的一年,国家对于规划中人工智能、5G物联网、全栈编程等领域都有侧重提到,政策利好,也使得相关岗位需求逐步增大。老师发现,北京最近全栈工程师的待遇又有提升,这也使得许多从业人员选择换岗加薪,以寻求更大的发展,对此北京全栈工程师培训的老师整理2021年全栈工程师面试题2(附答案),希望对大家有所帮助。




  1.HTTP 状态码 400401403 的含义?

  (1)400状态码:请求无效

  产生原因:

  前端提交数据的字段名称和字段类型与后台的实体没有保持一致

  前端提交到后台的数据应该是json字符串类型,但是前端没有将对象JSON.stringify转化成字符串。

  解决方法:

  对照字段的名称,保持一致性

  将obj对象通过JSON.stringify实现序列化

  (2)401状态码:当前请求需要用户验证

  (3)403状态码:伺服器已经得到请求,但是拒绝执行


  2.什么是 CSRF 攻击,如何避免?

  CSRFCross-Site Request Forgery(中文:跨站请求伪造),可以理解为攻击者盗用了你的身份,以你的名义发送恶意请求,比如:以你名义发送邮件、发消息、购买商品,虚拟货币转账等。 防御手段:

  验证请求来源地址; 关键操作添加验证码; 在请求地址添加 token 并验证。


  3.请你解释一下TCP为什么可靠一些

  三次握手,超时重传,滑动窗口,拥塞控制。


  4.forward redirect 的区别?

  forward 是转发 和 redirect 是重定向:

  地址栏 url 显示:foward url 不会发生改变,redirect url 会发生改变;

  数据共享:forward 可以共享 request 里的数据,redirect 不能共享;

  效率:forward redirect 效率高。


  5.WebSocket的实现和应用

  (1)什么是WebSocket?

  WebSocketHTML5中的协议,支持持久连续,http协议不支持持久性连接。Http1.0HTTP1.1都不支持持久性的链接,HTTP1.1中的keep-alive,将多个http请求合并为1

  (2)WebSocket是什么样的协议,具体有什么优点?

  HTTP的生命周期通过Request来界定,也就是Request一个Response,那么在Http1.0协议中,这次Http请求就结束了。在Http1.1中进行了改进,是的有一个connectionKeep-alive,也就是说,在一个Http连接中,可以发送多个Request,接收多个Response。但是必须记住,在Http中一个Request只能对应有一个Response,而且这个Response是被动的,不能主动发起。

  WebSocket是基于Http协议的,或者说借用了Http协议来完成一部分握手,在握手阶段与Http是相同的。我们来看一个websocket握手协议的实现,基本是2个属性,upgradeconnection


  6.请你说一下http协议会话结束标志怎么截出来?

  看tcp连接是否有断开的四部挥手阶段。


  7.HTTP具体有哪些请求头是跟缓存相关的?

  缓存分为两种:强缓存和协商缓存,根据响应的header内容来决定。

  强缓存相关字段有expirescache-control。如果cache-controlexpires同时存在的话,cache-control的优先级高于expires

  协商缓存相关字段有Last-Modified/If-Modified-SinceEtag/If-None-Match


  8.请你讲讲http1.11.0的区别

  主要区别主要体现在:

  缓存处理,在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tagIf-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。

  带宽优化及网络连接的使用,HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而伺服器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。

  错误通知的管理,在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示伺服器上的某个资源被永久性的删除。

  Host头处理,在HTTP1.0中认为每台伺服器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理伺服器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)

  长连接,HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connectionkeep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。


  9.请简单解释一下,arp协议和arp攻击。

  地址解析协议。ARP攻击的第一步就是ARP欺骗。由上述“ARP协议的工作过程我们知道,ARP协议基本没有对网络的安全性做任何思考,当时人们考虑的重点是如何保证网络通信能够正确和快速的完成——ARP协议工作的前提是默认了其所在的网络是一个善良的网络,每台主机在向网络中发送应答信号时都是使用的真实身份。不过后来,人们发现ARP应答中的IP地址和MAC地址中的信息是可以伪造的,并不一定是自己的真实IP地址和MAC地址,由此,ARP欺骗就产生了。


  10.HTTP HEAD请求的含义?

  head:类似于get请求,只不过返回的响应中没有具体的内容,用户获取报头

  options:允许客户端查看伺服器的性能,比如说伺服器支持的请求方式等等。


  11.请回答一下HTTPHTTPS的区别,以及HTTPS有什么缺点?

  HTTP协议和HTTPS协议区别如下:

  (1)HTTP协议是以明文的方式在网络中传输数据,而HTTPS协议传输的数据则是经过TLS加密后的,HTTPS具有更高的安全性

  (2)HTTPSTCP三次握手阶段之后,还需要进行SSL handshake,协商加密使用的对称加密密钥

  (3)HTTPS协议需要服务端申请证书,浏览器端安装对应的根证书

  (4)HTTP协议端口是80HTTPS协议端口是443

  HTTPS优点:

  HTTPS传输数据过程中使用密钥进行加密,所以安全性更高

  HTTPS协议可以认证用户和伺服器,确保数据发送到正确的用户和伺服器

  HTTPS缺点:

  HTTPS握手阶段延时较高:由于在进行HTTP会话之前还需要进行SSL握手,因此HTTPS协议握手阶段延时增加

  HTTPS部署成本高:一方面HTTPS协议需要使用证书来验证自身的安全性,所以需要购买CA证书;另一方面由于采用HTTPS协议需要进行加解密的计算,占用CPU资源较多,需要的伺服器配置或数目高


  12.请问你有没有基于做过socket的开发?具体网络层的操作该怎么做?(其实也是问网络编程的基本步骤)

  服务端:socket-bind-listen-accept

  客户端:socket-connect


  13.ip报文经过一个路由器改变哪些字段?

  源和目的的IP地址,源和目的的MAC地址以及TTL值。


  14.HTTP2.0 有哪些特性?

  (1)内容安全,应为http2.0是基于https的,天然具有安全特性,通过http2.0的特性可以避免单纯使用https的性能下降

  (2)二进制格式,http1.X的解析是基于文本的,http2.0将所有的传输信息分割为更小的消息和帧,并对他们采用二进制格式编码,基于二进制可以让协议有更多的扩展性,比如引入了帧来传输数据和指令

  (3)多路复用,这个功能相当于是长连接的增强,每个request请求可以随机的混杂在一起,接收方可以根据requestidrequest再归属到各自不同的服务端请求里面,另外多路复用中也支持了流的优先级,允许客户端告诉伺服器那些内容是更优先级的资源,可以优先传输


  15.HTTP状态码 304 的含义?什么时候用304?

  304:如果客户端发送了一个带条件的GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则伺服器应当返回这个304状态码。


  16.请说明一下httphttps的区别

  https协议要申请证书到ca,需要一定经济成本;2) http是明文传输,https是加密的安全传输;3) 连接的端口不一样,http80https443;4)http连接很简单,没有状态;httpsssl加密的传输,身份认证的网络协议,相对http传输比较安全。


  17.你知道TCP协议、IP协议、HTTP协议分别在哪一层吗?

  考察点:网络七层模型

  运输层,网络层,应用层。

  七层结构:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

  tcp属于传输层;http属于应用层。


  18.HTTP常见的请求方法?

getpost,这两个用的是最多的,还有很多比如patchdeleteputoptions等等


  19.请你说一下阻塞,非阻塞,同步,异步

  阻塞和非阻塞:调用者在事件没有发生的时候,一直在等待事件发生,不能去处理别的任务这是阻塞。调用者在事件没有发生的时候,可以去处理别的任务这是非阻塞。

  同步和异步:调用者必须循环自去查看事件有没有发生,这种情况是同步。调用者不用自己去查看事件有没有发生,而是等待着注册在事件上的回调函数通知自己,这种情况是异步


  20.搜索baidu,会用到计算机网络中的什么层?每层是干什么的

  浏览器中输入URL

  浏览器要将URL解析为IP地址,解析域名就要用到DNS协议,首先主机会查询DNS的缓存,如果没有就给本地DNS发送查询请求。DNS查询分为两种方式,一种是递归查询,一种是迭代查询。如果是迭代查询,本地的DNS伺服器,向根域名伺服器发送查询请求,根域名伺服器告知该域名的一级域名伺服器,然后本地伺服器给该一级域名伺服器发送查询请求,然后依次类推直到查询到该域名的IP地址。DNS伺服器是基于UDP的,因此会用到UDP协议。

  得到IP地址后,浏览器就要与伺服器建立一个http连接。因此要用到http协议,http协议报文格式上面已经提到。http生成一个get请求报文,将该报文传给TCP层处理,所以还会用到TCP协议。如果采用https还会使用https协议先对http数据进行加密。TCP层如果有需要先将HTTP数据包分片,分片依据路径MTUMSSTCP的数据包然后会发送给IP层,用到IP协议。IP层通过路由选路,一跳一跳发送到目的地址。当然在一个网段内的寻址是通过以太网协议实现(也可以是其他物理层协议,比如PPPSLIP),以太网协议需要直到目的IP地址的物理地址,有需要ARP协议。

  其中:

  (1)DNS协议,http协议,https协议属于应用层

  应用层是体系结构中的最高层。应用层确定进程之间通信的性质以满足用户的需要。这里的进程就是指正在运行的程序。应用层不仅要提供应用进程所需要的信息交换和远地操作,而且还要作为互相作用的应用进程的用户代理,来完成一些为进行语义上有意义的信息交换所必须的功能。应用层直接为用户的应用进程提供服务。

  (2)TCP/UDP属于传输层

  传输层的任务就是负责主机中两个进程之间的通信。因特网的传输层可使用两种不同协议:即面向连接的传输控制协议TCP,和无连接的用户数据报协议UDP。面向连接的服务能够提供可靠的交付,但无连接服务则不保证提供可靠的交付,它只是尽最大努力交付。这两种服务方式都很有用,备有其优缺点。在分组交换网内的各个交换结点机都没有传输层。

  (3)IP协议,ARP协议属于网络层

  网络层负责为分组交换网上的不同主机提供通信。在发送数据时,网络层将运输层产生的报文段或用户数据报封装成分组或包进行传送。在TCP/IP体系中,分组也叫作IP数据报,或简称为数据报。网络层的另一个任务就是要选择合适的路由,使源主机运输层所传下来的分组能够交付到目的主机。

  (4)数据链路层

  当发送数据时,数据链路层的任务是将在网络层交下来的IP数据报组装成帧,在两个相邻结点间的链路上传送以帧为单位的数据。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制、以及流量控制信息等)。控制信息使接收端能够知道个帧从哪个比特开始和到哪个比特结束。控制信息还使接收端能够检测到所收到的帧中有无差错。

  (5)物理层

  物理层的任务就是透明地传送比特流。在物理层上所传数据的单位是比特。传递信息所利用的一些物理媒体,如双绞线、同轴电缆、光缆等,并不在物理层之内而是在物理层的下面。因此也有人把物理媒体当做第0层。


  有关2021年全栈工程师面试题2(答案)的内容就是这些了,全栈工程师培训的老师将不定期整理更新全栈工程师面试题,整理汇总。希望能够尽最大努力帮助到正在求职就业的同学,最后,想了解更多北京全栈工程师培训事宜,请关注本站相应版块。