测试面试题集锦(三)| 计算机网络和数据库篇(附答案)

网友投稿 542 2022-05-29

1.测试常见问题与流程篇

2.测试工具篇

3.计算机网络知识与数据库篇

4.Linux 篇

5.Python 编程篇

6.自动化测试篇:包含 Selenium、Appium 和接口测试

7.性能测试篇

8.软素质篇:10 大灵魂拷问

9.反问面试官篇

10.擅长哪些开发语言?

学习过 Java,C 等

半精通 Python

11.输入 URL 到网页显示出来的全过程

12.输入网址

13.DNS解析

14.建立tcp连接

15.客户端发送HTTP请求

16.服务器处理请求

17.服务器响应请求

18.浏览器展示HTML

19.浏览器发送请求获取其他在HTML中的资源。

20.HTTP 和 HTTPS 的区别

HTTPS 里面是要有证书的,HTTP 并没有证书。证书的作用是证明你是这个网站的拥有者。谁去证明?最顶级的 CA 去帮你证明,这些顶级的 CA 都是浏览器、操作系统本身就自动帮你集成,而且自动添加到设置信任里面去;

HTTPS 要兼顾安全+性能的方面,由于对称式加密虽然速度很快,但是安全性特别的低,因为双方要规定对称式加密的秘钥,别人都无法知道,但你怎么能确保别人不知道你的秘钥呢,因此需要有非对称式加密去保证安全,但非对称式加密速度又很慢,如果客户端和服务器端都用非对称式加密,网络得卡死了。所以当双方建立好了非对称加密后,再约定一个随机数,等大家都非对称解密了之后呢,就拿到只有对方知道的唯一随机数(秘钥),就可以用秘钥来进行对称式加密和解密了;

21.HTTP 的报文结构

HTTP请求报文:一个HTTP请求报文由请求行、请求头部、空行和请求数据4个部分组成

HTTP响应报文:HTTP响应也由三个部分组成,分别是:状态行、消息报头、响应正文

22.HTTP 常见的响应状态码

200 请求已成功,请求所希望的响应头或数据体将随此响应返回。

201 请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其 URI 已经随 Location 头信息返回

202 服务器已接受请求,但尚未处理

301 (永久移动) 请求的网页已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。

302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。

304 (未修改) 自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。

305 (使用代理) 请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。

307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

401 当前请求需要用户验证。如果当前请求已经包含了 Authorization 证书,那么 401 响应代表着服务器验证已经拒绝了那些证书

403 服务器已经理解请求,但是拒绝执行它。与 401 响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交

404 请求失败,请求所希望得到的资源未被在服务器上发现

500 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。

501 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。

502 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。

503 由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。

23.cookie 和 session 机制的区别

cookies 数据保存在客户端,session 数据保存在服务器端;

cookies 可以减轻服务器压力,但是不安全,容易进行 cookies 欺骗;

session 较安全,但占用服务器资源

24.TCP 和 UDP 的区别

TCP:面向连接,可靠的,速度慢,效率低

UDP:无连接、不可靠、速度快、效率高

25.TCP 为什么是三次握手和四次挥手

三次握手能保证数据可靠传输又能提高传输效率。若握手是两次:如果只是两次握手, 至多只有连接发起方的起始序列号能被确认,另一方选择的序列号则得不到确认;

要保证双方都关闭了连接。因为 TCP 是全双工的,就是要等到两边都发送 fin 包确认双方都没有数据传输后才关闭;

26.TCP为什么最后挥手后会有time_wait

为了保证可靠的断开TCP的双向连接,确保足够的时间让对方收到 ACK 包。若客户端回复的 ACK 丢失,server 会在超时时间到来时,重传最后一个 fin 包,处于 TIME_WAIT 状态的 client 可以继续回复 Fin 包,发送 ACK。

测试面试题集锦(三)| 计算机网络和数据库篇(附答案)

保证让迟来的 TCP 报文段有足够的时间被识别和丢弃,避免新旧连接混淆。有些路由器会缓存没有收到的数据包,如果新的连接开启,这些数据包可能就会和新的连接中的数据包混在一起。连接结束了,网络中的延迟报文也应该被丢弃掉,以免影响立刻建立的新连接。

27.简要说明 HTTP 请求中的 Post 和 Get 有哪些区别的地方

请求头多了 content-length 和 content-type 字段

Post 可以附加 body,可以支持 form、json、xml、binary 等各种数据格式

行业通用规范

无状态变化的建议使用 Get

数据的写入与状态的修改建议使用 Post

基于 HTTP 协议:都是请求返回数据,Get 将请求体放在头上,只发一次请求,Post 将请求体放在内部,需要发送两次请求

GET 在浏览器回退时是无害的,而 POST 会再次提交请求。

GET 请求会被浏览器主动 cache,而 POST 不会,除非手动设置。

GET 请求只能进行 URL 编码,而 POST 支持多种编码方式。

GET 请求在 URL 中传送的参数是有长度限制的,而 POST 么有。

对参数的数据类型,GET 只接受 ASCII 字符,而 POST 没有限制。

GET 比 POST 更不安全,因为参数直接暴露在 URL 上,所以不能用来传递敏感信息。

28.如果一个请求,返回的状态码是 200,但是没有内容,可能发生了什么?

请求头缺失或错误

参数 length 不符

以上为个人理解,有误请指正。

29.工作中常使用的 SQL 语法有哪些?

create table、create view、 select from where、insert into、update set values、delete、alter、order by、having

30.数据库存储过程

一组数据库操作命令,当作是自己写的一个方法,一系列步骤自己去封装(个人理解)

31.SQL 常见查询语句编写(此处仅举例常见的查询语句,如有更多坑,希望补充)

32.查询所有学生的数学成绩,显示学生姓名 name, 分数, 由高到低。

33.统计每个学生的总成绩(由于学生可能有重复名字),显示字段:学生 id,姓名,总成绩。

34.列出各门课程成绩最好的学生, 要求显示字段: 学号,姓名,科目,成绩

35.慢查询是什么意思?

开启慢查询日志,可以让 MySQL 记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。

36.导致数据库性能差的可能原因有哪些?

硬件环境问题,如磁盘IO

查询语句问题,如join、子查询、没建索引

索引失效,建了索引,查询的时候没用上

查询关联了太多的join

服务器关联缓存,线程数等

表中存在冗余字段,在生成笛卡尔积时耗费多余的时间

37.Redis 缓存应用场景

需要将数据缓存在内存中,提升查询效率

这里希望大家补充

38.怎么定位 Redis 缓存失效问题(缓存坏了)

Redis 的知识,了解的不是很多

抛砖引玉,请大家指正和补充。

更多技术文章:  https://qrcode.ceba.ceshiren.com/link?name=article&project_id=qrcode&from=hwyun×tamp=1650420125

数据库 网络

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【智简联接,万物互联】华为云·云享专家董昕:Serverless和微服务下, IoT的变革蓄势待发
下一篇:python服务器环境搭建(3)——参数配置
相关文章