| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 测开面经汇总 -> 正文阅读 |
|
[网络协议]测开面经汇总 |
测试功能、性能、安全、兼容性、易用性 2、黑盒测试与白盒测试的区别及方法? 3、搜索功能测试??????? 4、视频通话功能??????? 前提不同:白盒是已知程序的内部实现结构,黑盒是不考虑内部实现结果 测试方式方法不同: 黑盒:等价类划分法-将程序所有可能的输入数据划分为若干个等价类。然后从每个部分中选取具有代表性的数据当做测试用例 ? ? ? ? 边界值分析法-输入和输入等价类中那些恰好处于边界、或超过边界、或在边界以下的状态。 ? ? ? ? 流程分析法(即场景分析)-每一条流程路径一条测试用例 ? ? ? ? 正交实验法-从因素及因素的取值采用正交来确定所有组合,从何覆盖所有情况。-适用于配置测试及多条件筛选 ? ? ? ? 状态迁移法-通过分析完成状态迁移图,根据状态迁移图完成状态转换树。按照一个分支一条用例编写。 ? ? ? ? 错误猜想法 白盒: 静态测试:不用运行程序的测试,包括代码检查、静态结构分析、代码质量度量、文档测试等等,它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具(Fxcop)自动进行。 动态测试:需要执行代码,通过运行程序找到问题,包括功能确认与接口测试、覆盖率分析、性能分析、内存分析等。 白盒测试中的逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。 App安全测试 ? ? ? ? 计算机网络1、tcp四次挥手中的TIME_WAIT状态存在的理由 (1)允许老的重复分节在网络中消失(等待timewait断开的原因) TCP大致通过一个四元组来标记一条连接,分别是:源IP、目的IP、源端口、目的端口。假设在一次连接中,部分报文因为某种原因滞留在路由网络中,然后这次连接断开了,再然后客户复用了端口,开启了和当前服务器一次新的连接。此时可以看见,因为客户端复用了端口,而且客户端和服务器短期内IP都不会变,而且服务器通常只会又有一个端口监听。因此当前连接的四元组和上次连接一样。此时假如上一次连接中滞留的报文又恢复传播,那就会进入当前连接中,因为这些报文本不属于本次连接,这可能造成数据混乱。因此,客户端发送了最后的ACK后,本次连接不会再有新的报文产生了,我们只需要在TIME-WAIT阶段等待1 MSL时间,就能让网络上所有滞留报文失效。 (2)实现终止TCP全双工连接的可靠性?(为什么是2msl) 若客户端发送完ACK后直接断开closed,此时ACK在发送过程中丢失,此时服务器回重新发送FIN但客户端已关闭不合理。ACK最长传播时间和等待客户端到服务端滞留报文失效时间共为1 MSL。最坏情况下,ACK经历了1 MSL才到达服务端,假如在ACK到达前一瞬间,服务端重传了FIN并发生了滞留,需要等待1 MSL才可让其失效。因此,在最坏情况下,需要2 MSL才可让双向的滞留报文失效。 2、输入一个链接,到页面展示会发生什么? ? ?? 3、DNS的工作原理 ? ? ? ?第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。 4、?DNS劫持 (1)通过恶意软件覆盖计算机的TCP/IP配置以指向受攻击者控制的流氓DNS服务器 (2)通过修改受信任的DNS服务器的行为使其不符合互联网标准的实现 5、HTTP的请求报文的形式 6、GET和POST的区别 区别: (4)GET请求只能进行url编码,而POST支持多种编码方式。 (5)GET请求会被浏览器主动cache,而POST不会,除非手动设置。GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。 7、POST还支持的编码类型
|
OSI层 | 功能 | 设备 | 对应TCP/IP协议 |
---|---|---|---|
应用层 | 用户接口、应用程序(文件传输,电子邮件,文件服务,虚拟终端) | 网关 | TFTP,HTTP(超文本传输协议),HTTPS(超文本传输安全协议),SNMP,FTP(文件传输协议),SMTP(电子邮件传输的协议),DNS(域名解析协议) Telnet:使用远程计算机上所拥有的本地计算机没有的信息资源,是常用的远程控制Web服务器的方法 |
表示层 | 数据的表示、压缩和加密(数据格式化,代码转换,数据加密) | 网关 | XDP(外部数据表示协议),LPP(轻量级表示协议) |
会话层 | 会话的建立和结束(解除或建立与别的接点的联系) | 网关 | SSL(安全套接字层协议)/TLS(传输层安全协议),RPC(远程过程调用协议) |
传输层 | 提供端对端的接口 | 网关 | TCP,UDP |
网络层 | 为数据包选择路由,寻址 | 路由器、三层交换机 | IP(互联网协议),ICMP(互联网控制信息协议),RIP(路由信息协议),OSPF(开放最短路径优先协议),BGP,IGMP(互联网组管理协议) |
数据链路层 | 保证误差错的数据链路,传输有地址的帧以及错误检测功能 | 交换机、网桥、网卡 | SLIP,CSLIP,PPP,ARP(地址解析协议),RARP(逆向地址解析协议),MTU |
物理层 | 传输比特流,以二进制数据形式在物理媒体上传输数据 | 集线器、中继器 | ISO2110,IEEE802,IEEE802.2 |
19、http请求连接的过程
HTTP 是应用层协议,它以 TCP(传输层)作为底层协议,默认端口为 80. 通信过程主要如下:
(1)服务器在 80 端口等待客户的请求。
(2)浏览器发起到服务器的 TCP 连接(创建套接字 Socket)。
(3)服务器接收来自浏览器的 TCP 连接。
(4)浏览器(HTTP 客户端)与 Web 服务器(HTTP 服务器)交换 HTTP 消息。
(5)关闭 TCP 连接。
20、?HTTP 与 HTTPS 的区别
?21、SSL非对称加密技术 及数字证书??????????????
22、?Session和Cookie的区别?
(1)数据存储位置:cookie数据存放在客户的浏览器上,session数据放在服务器上。
(2)安全性:cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
(3)服务器性能:session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
(4)数据大小:单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
(5)信息重要程度:可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中。
?
1、接口和抽象类的区别??
A:成员的区别
抽象类:
构造方法:有构造方法,用于子类实例化使用。
成员变量:可以是变量,也可以是常量。
成员方法:可以是抽象的,也可以是非抽象的。
接口:
构造方法:没有构造方法
成员变量:只能是常量。默认修饰符:public static final
成员方法:jdk1.7只能是抽象的。默认修饰符:public abstract (推荐:默认修饰符请自己永远手动给出)
jdk1.8可以写以default和static开头的具体方法
B:类和接口的关系区别
类与类:
继承关系,只能单继承。可以多层继承。
类与接口:
实现关系,可以单实现,也可以多实现。
类还可以在继承一个类的同时实现多个接口。
接口与接口:
继承关系,可以单继承,也可以多继承。
C:体现的理念不同
抽象类里面定义的都是一个继承体系中的共性内容。
接口是功能的集合,是一个体系额外的功能,是暴露出来的规则。
2、多态的底层原理
多态(通过声明父类的引用变量来使用子类对象)的底层实现是动态绑定,即在运行时才把方法调用与方法实现关联起来。动态绑定的实现主要依赖于方法表,当需要执行时是查找堆上真正创建的对象的类的方法。
3、线程池
线程池的作用:
创建线程池:建议通过?ThreadPoolExecutor创建,明确线程池的运行规则,规避资源耗尽的风险
? ? ? ? (1)方式一:通过构造方法实现,对线程池进行不同的设置
? ? ? ? (2)方式二:通过 Executor 框架的工具类 Executors 来实现
线程池原理:
?
?4、StringBuilder类 和 StringBuffer类的区别
StringBuilder: 可变的字符序列 , 线程不安全的,效率高,底层是?char[]数组?存储
StringBuffer : 可变的字符序列 , 线程安全的,效率低 ,底层是?char[]数组?存储
?内存泄露:指程序中动态分配内存给一些临时对象,但对象不会被GC回收,它始终占用内存,被分配的对象可达但已无用。即无用对象持续占有内存或无用对象的内存得不到及时释放,从而造成的内存空间浪费。
内存泄漏的情况
(1)长生命周期的对象持有短生命周期对象的引用,尽管短生命周期的对象不再使用,但是因为长生命周期对象持有它的引用而导致不能被回收。
静态集合类
public class MemoryLeak {
static List list = new ArrayList();
public void oomTests() {
Object obj = new Object();
list.add(obj);
}
}
?单例模式
因为单例的静态特性,它的生命周期和JVM的生命周期一样长,所以如果单例对象如果持有外部对象的引用,那么这个外部对象也不会被回收,那么就会造成内存泄漏。?
内部类持有外部类
如果一个外部类的实例对象的方法返回了一个内部类的实例对象。这个内部类对象被长期引用了,即使那个外部类实例对象不再被使用,但由于内部类持有外部类的实例对象,这个外部类对象也不会被垃圾回收,从而导致内存泄漏。
(2)各种连接
?在对数据库进行操作的过程中,首先需要建立与数据库的连接,当不再使用的时候,需要调用close方法来释放与数据库的连接。只有连接被关闭后,垃圾回收器才会回收对应的对象。
(3)变量不合理的作用域
变量不合理的作用域。一般而言,一个变量的定义的作用范围大于其使用范围,很有可能会造成内存泄漏。另一方面,如果没有及时地把对象设置为null,很有可能导致内存泄漏的发生。
(4)改变哈希值
对象修改后的哈希值与最初存储进HashSet集合中时的哈希值就不同了,在这种情况下,即使在contains方法使用该对象的当前引用作为的参数去HashSet集合中检索对象,也将返回找不到对象的结果,这也会导致无法从HashSet集合中单独删除当前对象
(5)缓存泄漏
?一旦把对象引用放入到缓存中,就很容易遗忘。对于这个问题可以使用WeakHashMap代表缓存,此种Map的特点是,当除了自身有对key的引用外,此key没有其他引用那么此map会自动丢弃此值。
(6)监听器和回调
如果客户端在你实现的API中注册回调,却没有显示的取消,那么就会积聚。需要确保回调立即被当作垃圾回收的最佳方法就是只保存它的弱引用,例如将他们保存为WeakHashMap中的键。
6、?- [ ] 申请内存的整个申请流程
- [ ] 堆是怎么申请内存的
7、
1、怎么在文件里查找特定单词
2、Linux的硬链接和软链接
linux系统中inode号是一一对应的关系。
硬链接:可以用不同的名称访问同一个文件(故不同名称看到的文件内容是一致的),必须在同一个分区,删掉一个相当于只是删掉了别名,此文件还是在。
软连接:可以不在一个分区,只有一个最本质的源文件。删掉源另一个也就失效了。源文件有100M 链接文件可能只有几十K。链接文件只是访问源文件的一个跳板。
(1)软连接,以路径的形式存在。类似于Windows操作系统中的快捷方式。硬链接,以文件副本的形式存在。但不占用实际空间
(2)软连接可以 跨文件系统 ,硬连接不可以
(3)软连接可以对一个不存在的文件名进行连接
(4)软连接可以对目录进行连接。硬链接普通用户不可以对目录进行链接,超级用户可以
(5)软链接节省空间资源
1、数据库的索引类别
(1)主键索引(Primary Key) 数据表的主键列使用的就是主键索引。一张数据表有只能有一个主键,并且主键不能为 null,不能重复。
(2)二级索引又称为辅助索引。唯一索引,普通索引,前缀索引等索引属于二级索引。
2、聚簇索引与的非聚簇索引
聚簇索引:即索引结构和数据一起存放的索引。主键索引属于聚集索引。
非聚簇索引:即索引结构和数据分开存放的索引。二级索引属于非聚集索引。
3、SQL优化
4、四大事务ACID?
事务:由一组sql语句组成的逻辑处理单元,事务具有以下4个属性,通常简称事务的ACID属性。
原子性(Atomicity):
事务是一个原子操作单元,其对数据的修改,要么全部执行,要么全部不执行。
一致性(Consistent):
在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须正确的
隔离性(Isolation):
数据库系统提供一定的隔离机制,保证事务在不受外部并发操作的影响的“独立”环境执行。这意味着事务处理过程中间状态对外部都是不可见的,反之亦然。
持久性(Durable):
事务完成后,它对于数据的修改时是永久的,即使出现系统的故障也能保持。
5、事务隔离级别
脏读(Drity Read)
某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个RollBack了操作,则后一个事务所读取的数据就会是不正确的。
不可重复读(Non-repeatable read)
在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。(update 和 delete 引起)
幻读(Phantom Read)
在一个事务的两次查询中数据笔数不一致,例如有一个事务查询了几列(Row)数据,而另一个事务却在此时插入了新的几列数据,先前的事务在接下来的查询中,就会发现有几列数据是它先前所没有的。(由 insert 引起)
?
1、python高效于java相比优缺点
2、什么是静态语言和动态语言,Pyhton属于哪种?
3、python的动态内存
4、python的深浅拷贝
5、python的字典是怎么实现的?
6、python的垃圾回收机制
标记清除和引用计数机制比,能解决什么问题?
分代回收的思想,举例
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 23:53:02- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |