试题
Linux
Linux的目录结构有哪些?分别有什么作用?
答:根据FHS标准,Linux包含11个主要目录:
/boot:系统启动目录,也是内核的存放地
/etc:存放配置文件
/tmp:存放临时文件
/home:用户目录
/lib:存放库文件和程序执行过程中会用到的额外函数库
/bin:存放可执行文件和linux命令
/sbin:存放系统管理员的命令和工具
/usr:应用程序和文件的安装地
/mnt:挂载其它文件系统
/root:root账户的目录
/dev:存放linux系统下的设备文件
常用命令有哪些?
基础操作:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 pwd:打印当前位置
cd:打开/退出目录
ls:显示目录下的内容
man:查看和解释某个命令的用法和注意事项
whatis:查询某个命令的含义
locate:定位文件和目录
which:定位命令所在位置并显示完整目录
clear:清除
exit:退出
reboot:重启
halt:关机
ps:静态查看进程
top:动态查看进程
kill:杀死进程操作文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 vi:生成、编辑、查看文件
cat:显示文本内容
touch:创建文本(不能插入内容)
grep:在一堆文件中查找某个特定的字符串
cp:复制/拷贝文件
mv:移动文件
rm:删除文件
bzip2:压缩成.bz2格式文件
bunzip2:减压.bz2格式文件(压缩文件会被删除)
gzip:压缩成.gz格式文件
gunzip:减压.gz格式文件
tar 将文件或目录减压/压缩
head:查看文件开头部分内容
tail查看文件尾部内容
more:分页查询文件内容
操作目录
1
2
3 mkdir:创建目录
rkdir:删除目录
du:显示文件目录所占空间的打小权限操作&用户操作
1
2
3
4
5
6
7 chmod:改变权限
charp:变更文件/目录所属群组
chown:改变文件的拥有者
useradd:添加用户
userdel:删除用户
su:更换用户
passwd:修改密码网络操作
1
2
3 ping:检查网络
ipconfig:显示网络设备状态
netstat:显示网络连接、路由表和网络接口信息时间日期
1
2
3 date:修改日期
cal:日历
uptime:查看系统运行时间
如何查看日志?
答:查看日志有多种方法,通常使用tail命令:
1
2
3
4
5 tail -f app.log (默认最后10行,相当于增加参数 -n 10)**
tail -200f app.log (最后200行,某一时刻往前推)**
Ctrl+c 是退出tail命令
tail -n 20 app.log (显示app.log最后20行)
tail -n +5 app.log (从第5行开始显示文件)可以使用cat命令:
1
2
3
4
5 cat -n filename |grep "关键字"
cat app.log | grep -C 5 '关键字' (显示日志里匹配字串那行以及前后5行)
cat app.log | grep -B 5 '关键字' (显示匹配字串及前5行)
cat app.log | grep -A 5 '关键字' (显示匹配字串及后5行)
cat xxx.log |sed -n '/2020-10-24 22:16:21/,/2020-10-24 22:16:59/p' abc.log (根据时间查看)另外还可以使用vi/vim和more命令进入编辑器查找
如何压缩&减压文件和目录
答:压缩&减压文件通常使用tar命令,如:
1
2
3
4 压缩文件:tar -zvf 文件名
减压文件:tar -xvf 文件名
压缩目录:tar -cjvf/czvf 目录名(格式为xx.tbz/xx.tgz)
减压目录:tar -xjvf/xzvf 目录名
如何杀进程
答:首先使用ps命令查找到该进程的id,然后根据进程id使用kill命令杀死进程,格式:
kill -9 进程号PID
如何修改权限
答:
- 使用ls -l查询当前文件具备哪些权限
- 使用用chmod命令来修改权限
如何查找文件
答:linux中查找文件有多种方法,如:
- 使用find命令在指定目录下查找,可以使用*模糊匹配:find path -name file
- 使用which命令从环境变量文件(/etc/profile)中的path目录中查找,且which找的都是可执行文件,不能使用*模糊匹配: which filename
- 使用locate以一个数据库文件为基础查找,linux系统每天至少自动扫描一次文件,将结果保存到数据库,locate查的是数据库记录。locate查询比find要快,但最新文件如果在数据库中没有记录,会查询不到,次是需要手动更新(updatedb):locate filename
- 使用whereis查询可执行文件,比which查询更多,会查找出相关的man文件:whereis filename
网络
什么是路由寻址?
答:指从一个接口收到数据包,根据数据包的目的地址定向并转发到另一个接口的过程
OSI七层模型是哪七层,分别有哪些作用?
答:七层模型分别为:应用层、表示层、会话层、传输层、网络层、数据链路层和物理层;作用:
物理层:向数据链路层传输二进制比特流;
数据链路层:负责将二进制比特流封装成帧;
网络层:负责路由寻址和广播;
传输层:负责建立一个可靠的端到端的连接;
会话层:负责维护、拆除会话;
表示层:表示数据形式,完成对传输数据的转化;
应用层:确定进程之间通信的性质。
TCP/IP有哪四层?都有哪些作用?
答:四层为:应用层、传输层、网络互联层、网络接口层;作用:
网络接口层:在物理连接上实现逻辑链路的连接;
网络互联层:在不同网络之间进行路由寻址和传递数据报;
传输层:建立应用的端到端的连接;
应用层:负责用户和程序之间的通信。
Http与Https的异同点?
异同点:
- Http是超文本传输协议为明文传输,而Https为超文本传输完全协议,利用SLL/TLS加密数据包,提供了对网站服务器的身份验证,保护了减缓资料的隐私性和完整性。可视为http的升级版,更安全;
- 端口不同:http默认端口为80,而https是443;
- 连接方式不同:http是无连接、无状态的,而https是如SSL+HTTP构建的可进行加密传输、身份认证的网络协议,因而http相对更简单快速,https对技术门槛要求较高,会加重服务端负担;
- 证书申请方式不同:http:免费申请;https需要到ca申请证书,需缴费。
Http的结构及其请求方法有哪些?
http请求/响应结构分别为:请求/响应行、请求/响应头、空行、请求/响应体;有八种请求方法:
- GET
- HEAD
- POST
- PUT
- DELETE
- CONNECT
- OPTIONS
- TRACE
get&post方法的区别?
答:
- get在浏览器回退时是无效的,而post会再次提交请求;
- get产生的url可以被BookMark,post不可以;
- get请求会被浏览器主动cache,pot不会,除非手动设置;
- get请求只能进行url编码,post支持多种编码方式;
- get请求参数会完整保留在浏览器历史记录里,post不会被保留;
- get请求在url中传送的参数有大小限制,post没有;
- get对参数的数据类型有限制,只接受ASCII字符,post没有;
- get比post更不安全,参数直接暴露在url上,不能用来传递敏感信息;
- get参数通过url传递,post放在Request body中;
说出Http的响应状态码及其作用
答:http响应状态码:
1xx:信息,服务器收到请求,需要请求者继续执行操作;
2xx:成功,操作被成功接收并处理;
3xx:重定向,需要进一步操作以完成请求;
4xx:客户端错误,请求包含语法错误或无法完成请求;
5xx:服务器错误,服务器在处理请求的过程中发生了错误。
常见状态码:
- 100:cotinue 继续,客户端继续请求;
- 200:ok 成功,一般用于get和post请求
- 404:not found 未找到资源
- 500:internal server error 服务器内部错误
Session、Cookie和Token的区别
答:
- 三者都是由服务器产生的;
- cookie保存在客户端通常指浏览器、session保存在服务器端、token相当于一个令牌
- cookie数据存放在客户端浏览器上,session数据存放在服务器上、token在客户端一般存放在localStorage,cookie或sessionStorage中,在服务器端一般存放在数据库中;
- session通过set-cookie字段将sessionId返回给客户端,下次请求时只要带上sessionId就能保持连接;
- cookie没有session安全,可以通过分析本地存放的cookie并进行cookie欺骗;
- 大小不一致:单个cookie保存的数据不能超过4K,很多浏览器限制一个站点最多保存20哥cookie。而且编码也有限制;session则没有这些限制;
- 由于session保存在服务器上,当访问增多时,会比较占用服务器性能;
- token完全由应用程序进行管理,所以它能避开同源策略,可以避免CSRF(跨站请求访问)攻击;可以是无状态的,可以在多个服务器之间共享;可以减轻服务器压力,减少频繁的查询数据库。
Http常用请求和返回数据类型都有哪些?
答:
- text/html : HTML格式
- text/plain :纯文本格式
- text/xml : XML格式
- image/gif :gif图片格式
- image/png:png图片格式
- image/jpeg :jpg图片格式
- application/octet-stream : 二进制流数据(如常见的文件下载)
- application/msword : Word文档格式
- application/pdf:pdf格式
- application/atom+xml :Atom XML聚合格式
- application/json: JSON数据格式
- application/xml: XML数据格式
- application/xhtml+xml :XHTML格式
- application/x-www-form-urlencoded :
- multipart/form-data : 媒体格式,需要在表单中进行文件上传时,就需要使用该格式
TCP三次握手四次挥手的全过程
答:
三次握手:
- 客户端浏览器想服务器发送SYN位码,请求服务器建立连接;
- 服务器接收到SYN位码后,向客户端发送一个SYN+ACK位码,让客户端表示连接并确认;
- 客户端收到SYN+ACK位码后,在给服务器端发送一个ACK位码,确认建立连接。
四次挥手:
- 客户端浏览器向服务器发送FIN+ACK位码,告诉服务器数据传输完毕,请求断开连接,并等待服务器确认;
- 服务器接收到位码后,发送一个ACK位码给客户端表示已受到确认;
- 服务器继续发送FIN位码给客户端,表示我的数据也传输完了,你可以断开连接了;
- 客户端浏览器收到服务器发送的FIN位码后,向服务器发送一个ACK位码,确认断开连接。
输入一串网址,接下来会发生什么事情?
答:一般可分为四种情况
一、Http请求
域名解析:浏览器拿到url后 对url解析,将域名与实际的文件路径分离开,通过DNS解析得到该域名的ip地址 ,这个过程中并不是每次都会发起DNS请求的,首先会从几个缓存里面进行找,找不到了才会发起DNS请求,三级缓存如下:询浏览器缓存(浏览器会缓存之前拿到的DNS 2-30分钟时间),如果没有找到,检查系统缓存,检查hosts文件,这个文件保存了一些以前访问过的网站的域名和IP的数据。它就像是一个本地的数据库。如果找到就可以直接获取目标主机的IP地址了。没有找到的,就需要发起DNS请求,检查路由器缓存,路由器有自己的DNS缓存,可能就包括了这在查询的内容;
DNS请求步骤:
- 向本地DNS服务器发送请求,询问该域名的ip是啥?本地域名服务器收到客户端的请求后,如果缓存里的表格能找到,找到则直接返回该域名ip,反之则会去询问根域名服务器;
- 根 DNS 收到来自本地 DNS 的请求后,发现后置是 .com,说这个域名归 .com区域管理”,我给你 .com 顶级域名服务器地址给你,你去问问它吧。”
- 本地 DNS 收到顶级域名服务器的地址后,向.com 顶级域名服务器发起请求询问ip地址,顶级域名服务器返回该域名区域的权威DNS服务器地址;
- 本地 DNS 于是转向问权威 DNS 服务器,权威 DNS 服务器查询后将对应的 IP 地址 告诉本地 DNS;
- 本地 DNS 再将 IP 地址返回客户端,客户端和目标建立连接。
tcp三次握手:dns解析后拿到ip,浏览器会与IP对应的服务器进行tcp三次握手建立连接,构建出一个http请求:
- 第一次握手:客户端想服务器发送一个请求(SKY=1),等待服务器确认;
- 第二次握手:服务器收到清求并确认,回复一个指令(SKY=1,ACK=1);
- 第三次握手:客户端收到服务器的回复指令并返回确认(ACK=1)。
发送http请求:以 GET 为例,当需要发送 HTTP 请求的时候,同样也不是直接就发送了,需要先查询浏览器缓存。浏览器中的缓存分为强缓存和协商缓存,浏览器发起 HTTP 请求时首先会根据 http 头信息来判断是存有强缓存,以及其是否过期,如果有强缓存且未过期则命中,不会发送请求到服务器了。如果强缓存没命中,则会向服务器发起请求,这个请求的 Header 头中会带有浏览器最后一次请求该资源的时间和一个资源校验码(使用资源修改时间、资源大小等信息生成),服务器收到这个请求后会判断协商缓存是否过期,如果过期则返回新的资源信息,如果没过期则返回 304 状态码,表示资源未更新,可以使用缓存中的资源。
TCP-网络层连接:HTTP 请求发出后会将数据包交给下层协议栈处理,在传输层和网络层该数据包会被分别加上 TCP 头和 IP 头,并且被发送出去,沿路的网关会收到这个数据包并进行识别和转发,直到该数据包被服务器收到,通过相同的流程返回回复数据包。
页面渲染:客户端拿到服务器端传输来的文件,找到HTML和MIME文件,通过MIME文件,浏览器知道要用页面渲染引擎来处理HTML文件。
二、Https请求
在发起请求是需要进行身份验证
三、无域名,直接写ip地址
不需要解析域名,可直接发起Http/https请求
四、有无请求参数
常用的协议有哪些,端口号是?
答:
- TCP协议:
- FTP——文件传输协议——21号端口
- Telnet——远程登陆协议——23号端口
- SMTP——简单邮件传送协议——25号端口
- POP3——接收邮件——110号端口
- UDP协议:
- HTTP——超文本传输协议——80号端口
- HTTPS——服务器,默认端口号为443
- DNS——域名解析服务——53号端口
- SNMP——简单网络管理协议——161号端口
- TFTP——简单文件传输的协议——69号端口
- SSH(安全登录)、SCP(文件传输)、端口重定向,默认的端口号为22
- tomcat,默认的端口号为8080
- Oracle 数据库,默认的端口号为1521
- mysql 数据库,默认的端口号为3306
测试基础
你工作中常用的测试方法有哪些?
答:
测功能:
- 等价类划分
- 边界值分析
- 错误推测
- 因果图
- 综合策略
- 正交实验设计法
- 逻辑覆盖法
- 测性能(负载测试和压力测试):通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试
- 界面测试:通过眼睛、客户端工具等,如浏览器F12插件等
说一说你的测试流程
答:
- 分析测试需求:明确测试对象及测试工作的范围和测试重点;
- 制定测试计划:①确定测试范围;②制定测试策略;③安排测试资源;④安排测试进度;
- 设计测试用例
- 执行测试
- 编写测试报告
你发现bug,但开发认为不是bug你该怎么办?
答:
- 将问题提交到缺陷管理库里面进行备案;
- 反复确认bug,保证发现的确实是一个bug;
- 是否是自己对bug描述不正确;
- 如果前面都没问题,那么既然开发人员认为不是bug,又确实存在问题,我会找出需求文档,并且对着文档和开发当面进行沟通,说出我认为是BUG的原因;如果开发接受我的说法,那就需要开发进行BUG修改;如果开发仍然觉得不是一个BUG,这个时候需要产品经理介入。针对此问题,进行讨论。如果产品觉得是BUG,一般情况是需要修复的。如果产品经理觉得问题不大,那这个BUG就可以不解决。
测试用例包括哪些东西?
答:
- 项目名称
- 项目版本
- 用例编号
- 功能模块
- 用例标题
- 前置条件
- 操作步骤
- 预期结果
- 实际结果
- 优先级
- 创建人
- 执行人
- 执行时间
现场编写测试用例
给你一个需求怎么展开测试工作
答:
- 进行需求分析讨论
- 编写测试用例
- 进行用例评审
- 执行测试
- 回归测试
- 进行生产环境测试
测试用例的八大要素是?
答:
- 测试用例编号
- 测试项目
- 测试用例标题
- 重要级别
- 预置条件
- 测试输入
- 操作步骤
- 预期结果