你好,我是小牛。
前段时间写过一篇关于数据库的面试题,各方面反响还不错,参考如下:
【面试必备篇】数据库不得不知道的那些事
今天继续来聊聊面试,今天聊一聊网络,计算机网络是大学计算机核心专业课之一,也是考研必考专业课,重要性不用多说。
对于软件测试人员来说,为什么需要掌握一定的计算机网络知识呢?主要就在于接口测试,数据传输全部基于网络协议进行传输。
绝大部分的接口都是基于http协议,除此之外还有一些常见的比如webservice接口基于soap协议等等。
除此之外,掌握计算机网络知识可以帮你更好的理解整个计算机体系,互联网底层原理。
其它不多说,直接附上面试必考的计算机网络考点,学会面试网络这块就稳了。
一.http和https有什么区别?
1.https比http更加安全,传输数据进行加密传输。
2.http的端口号为80,https的端口号为443。
3.http无需证书,https需要CA机构颁发的SSL证书。
4.http工作于应用层,https工作于传输层。
二.说下cookies和session和token鉴权机制?
因为http协议是无连接,无状态的。简单来说就是为了节省服务器资源,客户端和服务端无法保持长时间连接,所以服务端无法记住该用户的状态。所以引入了鉴权机制。
用户在第一次登陆时,服务器会生成cookies给客户端,第二次登陆时客户端会带着之前的cookies来访问,这样服务端就可以判断是哪一个用户。
session是保存在服务端的,当用户登录时会生成session id保存在数据库,下次用户登录就可以识别该session进行判断是哪个用户。
token是另一种鉴权机制,跟cookies类似是由服务端生成token给到客户端,下次登录时或者调其它接口带上该token就可以判断出是哪个用户。
三.http协议请求的八种方式以及get和post有什么区别?
基于http协议的接口请求有八种方式分别为GET,POST,PUT,HEAD,DELETE,OPTIONS,TRACE,CONNECT。
最常问的就是get跟post有什么区别?
- get方式主要是将参数拼接到url上进行请求。post是将数据放到body里面进行请求。
- 因为请求方式的不同所以post比get更加安全,然而并不是,post请求只需要抓包一样可以看到参数,真正安全的话是需要进行加密请求。
- get方式提交的数据有1024字节限制,post无限制
- get主要是从服务器上获取数据,post用户提交数据,一般根据业务进行定义。
四.说下常见的响应状态码有哪些?
状态码主要是服务器返回的状态,根据状态码的不同就可以大概猜到是什么错误,主要有以下这些:
1XX:提示信息,表示请求已经接收,继续处理
2XX:成功,表示请求已经被成功接收,理解,接受。
3XX:重定向,要完成请求必须进行更进一步的操作。
4XX:找不到资源,一般是url错误,或者接口未发布等。
5XX:服务器错误,因为代码逻辑或者服务器资源导致的错误。
五.说下OSI七层网络模型,分别有什么作用?
OSI七层模型:是ISO组织研究的一种网络互连模型,目的是为了推荐所有公司使用这个规范来控制网络。七层模型从上到下分别为:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。大概作用如下图所示:
六.浏览器输入百度网址背后发生了什么?
1、首先,在浏览器地址栏中输入url,先解析url,检测url地址是否合法
2、浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容。若没有,则跳到第三步操作。
浏览器缓存:浏览器会记录DNS一段时间,因此,只是第一个地方解析DNS请求;
操作系统缓存:如果在浏览器缓存中不包含这个记录,则会使系统调用操作系统,获取操作系统的记录(保存最近的DNS查询缓存);
路由器缓存:如果上述两个步骤均不能成功获取DNS记录,继续搜索路由器缓存;
ISP缓存:若上述均失败,继续向ISP搜索。
3、在发送http请求前,需要域名解析(DNS解析),解析获取相应的IP地址。
4、浏览器向服务器发起tcp连接,与浏览器建立tcp三次握手。
5、握手成功后,浏览器向服务器发送http请求,请求数据包。
6、服务器处理收到的请求,将数据返回至浏览器
7、浏览器收到HTTP响应
8、浏览器解码响应,如果响应可以缓存,则存入缓存。
9、 浏览器发送请求获取嵌入在HTML中的资源(html,css,javascript,图片,音乐······),对于未知类型,会弹出对话框。
10、 浏览器发送异步请求。
11、页面全部渲染结束。
题目不多,但是每一道都是高频面试题目。掌握这些就完全没问题