网络
简单描述下TCP协议
TCP:传输控制协议,是传输层通信协议。它有面向连接、可靠、字节流传输等特点
TCP建立连接时,需要三次握手协议
TCP三次握手的过程如下:
客户端发送SYN保温给服务端,进入SYN_SEND(SEQ=X)状态
服务端收到SYN保温,回应一个SYN(SEQ=Y) ACK(ACK=X+1)报文,进入SYN_RECV状态
客户端收到服务端的SYN报文,回应一个ACK(ACK=Y+1)报文,开始建立连接
TCP/IP作用是什么?
TCP/IP协议是一套网络通信标准,让全世界的各种不同的设备之间可以进行通信
TCP与UDP的区别?
TCP传输控制协议 。UDP用户数据报协议
TCP对资源要求比较多,UDP对资源要求比较少
TCP可以保证数据的正确性,UDP有可能会丢包
TCP可以保证数据的顺序,UDP不会保证
网络7层模型是那7层?列举一些具体的应用实例
从下到上,物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
物理层:同轴电缆、接收器、发送器等
数据链路层:网卡、交换机、网桥
网络层:路由器、网关
传输层:TCP协议、UDP协议
会话层:SQL、ASP、 PHP等
表示层:ASCII、JPEG、PNG、MP3等
应用层:telnet、ssh、http、smtp等
怎么测试网络是否连通?
使用ping命令
什么方式可以是外网连接到家里主机?
telnet
如何让外网访问家里的终端?它的原理是什么?
电脑上开启远程桌面
使用teamview
他们的原理是:
你和对方机器建立一个Socket连接
在本地虚拟一个对方的系统
对方系统会在这个Socket连接上实时发送它系统状态的数据
收到的数据,是本虚拟系统通过这个数据还原对方系统操作
本地操作这个虚拟操作系统,会发送数据命令到对方机器
对方继器接收指令,通过Hook(底层钩子)传给操作系统
然后循环
访问一个网址会经历哪些流程?
以下几个简单的流程
首先需要通过域名找到IP,如果本地缓存没有需要请求DNS服务器
得到IP后开始与目的主机进行三次握手来建立TCP连接
连接建立后进行HTTP访问,传输病获取网页内容
传输完成后与目的主机四次握手断开TCP连接
2Linux
Linux常用命令有哪些,并简述他们的作用
ls 查看当前目录
df-h 查看磁盘使用情况
kill 杀掉进程
top 查看当前主机状态
mv 移动文件
cp 复制文件
netstat-a 查看端口使用状态
rm 删除
cat 查看文件
vim怎么退出
q 不保存直接退出
wq 保存后退出
q! 强制退出
怎样一页一页地查看一个大文件的内容呢?
cat filename.txt | more 通过管道命令和more实现
如何查看linux端口号被占用?
netstat -a 查看端口状态
如何查看进程状态?
ps -ef | grep 进程名
chown是什么?grep是什么?
chown 改变文件的拥有者和组
gerp 查找文件里符合条件的字符串
如何查看日志?
tail -f 日志文件名
5个客户端通过TCP连接到主机,如何查看这5个连接?
netstat -nat|grep ESTABLISHED
3数据库
哪些方法可以提高数据库查询效率?
建立索引,利用索引
只查询必要的字段
合理的处理NULL字段
慎用like等通配符
在这里我向大家推荐一个自动化学习交流群。交流学习群号:779450660 里面会分享一些资深架构师录制的视频录像
索引设计的时候要注意什么?
索引字段长度不能太长
索引的个数不能太多
数据库更新语句?GROUP BY 如何使用?
UPDATE TABLENAME SET 字段名称 = 新值 WHERE 列名称 = 旧值
GROUP BY 一般常用于对查询结果进行分组
#如果想要对结果进行分组统计,加上SUM函数即可
SELECT SUM(列名1) 列命2 FROM TABLENAME
WHERE 列名1 列名2
GROUP BY 列命1
如果一个数据表有成千上万条记录,访问时很慢,有哪些方法可以优化?
MySQL
mysql的索引,最左匹配原则
索引可以加快对数据的检索。常见的有B+Tree索引,哈希索引。
最左匹配原则:
当索引是联合索引,在查询条件中,mysql是从最左边开始命中的,如果出现了范围查询(>、<、between、like),就不能进一步命中了,后续退化为线性查找,列的排列顺序决定了可命中索引的列数。
mysql的主从复制
mysql为了保持高可用,会采用一主多从的结构,一个master节点,多个slave节点,master节点可以进行写操作,而slave节点只能进行读操作。
binlog线程:将主服务器上的数据更改写入二进制日志中
I/O线程:从主服务器上读取二进制日志,并写入从服务器的重放日志中
SQL线程:读取重放日志并重放其中的SQL语句
mysql的聚集索引、非聚集索引
聚集索引:以主键创建的索引,在叶子结点上存储的是表中的数据
非聚集索引:以非主键创建的索引,叶子结点上存储的是主键和索引列
使用非聚集索引查询出数据时,拿到叶子上的主键再去查到想要查找的数据。(回表)
mysql联合索引,要注意什么?
联合索引即索引由多个列(a,b,c,d)组成,要注意索引的命中,最左匹配原则,从左开始命中,遇到范围查询就不能进一步匹配。
为什么数据库要使用B+树来实现索引?
更少的查找次数(B+树相比红黑树更矮胖)
利用磁盘预读特性(一次IO能完全载入一个节点)
4编程
HTTP协议中GET和POST的区别
1、get请求重点在从服务器上获取资源,而post请求重点在向服务器发送数据。
2、get传输数据是通过URL请求,以字段=value的形式,用?连接置于URL之后,多个请求数据之间用&连接,这个过程用户可见,不安全,参数暴露。post传输数据是将字段与对应值封存在请求实体中发送给服务器,这个过程用户不可见,隐藏式的请求,相比是安全的。
3,get传输的数据量小,受URL长度的限制,但是效率高。post传输数据量不受限制,可以传输大量数据,所以传输文件时只能使用post,但是效率较低。请求较多时可能形成一个请求队列。
4,get方式只支持ASCII字符,因此向服务器传输中文有可能出现乱码。post支持标准字符集,可以正确传递中文字符。
HTTPS怎么建立请求?
HTTPS = HTTP + SSL(Secure Sockets Layer, 安全套接字层)
HTTPS 可以防窃听(非对称密钥加密)、防伪装、防篡改(加密和认证)
客户端发送请求到服务器端
服务器端返回证书和公开密钥,公开密钥作为证书的一部分而存在
客户端验证证书和公开密钥的有效性,如果有效,则生成共享密钥并使用公开密钥加密发送到服务器端
服务器端使用私有密钥解密数据,并使用收到的共享密钥加密数据,发送到客户端
客户端使用共享密钥解密数据
SSL加密建立…
最后: 欢迎大家关注公众号:【 程序员小野 】,领取一份300页pdf文档的Python自动化测试工程师核心知识点总结!
学习软件测试是件需要坚持的事情,学习的过程可能会很枯燥,不过有一些人一起学的话大概就不会了吧,如果有需要自学资料的,可以加入软件测试学习交流群:779450660 ,有人陪伴,不会孤单!
|