阿里-测试开发面经(十三)
点击蓝字关注我们,获取更多面经
一台电梯:
1、功能测试:
(1)按钮功能,开门(运行中按开门键不开门),关门,电梯内按钮功能(电梯按键在按下时是否点亮,按错楼层是否可以取消);
(2)上升,下降(每一层申请是否有效,是否可以正常停靠),超载时是否会忽略其它楼层的上行和下行申请,电梯的两边按钮是否都可以使用;
(3) 电梯内电话、灯光等
2、性能测试:反应时间、关门时间、速度(是否造成人体不适)
3、压力测试:超载,碰撞电梯壁
4、安全测试:
(1)进入电梯喊话,外面是否听到,拨打手机是否有信号;
(2)停电(不会坠落。电梯门可以通过外力打开,紧急电话可用),报警装置(超载),通风状况;
(3) 停靠位置,有人扒门(不会强制关门),若有异物阻碍,会停在当前楼层;
(4) 监控装置
5、UI测试:标识的承重和人数,仅提供可到达楼层的按钮,美观程度,光滑程度、形状
6、可用性:按键高度、操作是否方便
7、稳定性:长时间运行情况,
两台电梯联动:
除上述功能外,与另外一部电梯是否协作良好(一部电梯故障不影响另一部):
(1)2部均空闲时,采取就近原则
(2)有一部运行时,以同行方向且顺路电梯优先运行,否则安排空闲电梯
(3) 2部均运行时,以方向同行且顺路的优先运行
(4) 电梯在上行或下行时若满载,遇到有人等待电梯,是否停靠
例如,(2)电梯本来在一楼,若有人按18楼,上到5楼时,有人按10楼,是否会在10层停下
栈、队列是一种特殊(操作受限)的线性表
区别:
仅在于运算规则不同,链表和数组是常用的两种数据存储结构,都能用来保存特定类型的数据。两者存在着一些差异:
占用的内存空间
链表存放的内存空间可以是连续的,也可以是不连续的,数组则是连续的一段内存空间。一般情况下存放相同多的数据数组占用较小的内存,而链表还需要存放其前驱和后继的空间。
长度的可变性
链表的长度是按实际需要可以伸缩的,而数组的长度是在定义时要给定的,如果存放的数据个数超过了数组的初始大小,则会出现溢出现象。
对数据的访问
链表方便数据的移动而访问数据比较麻烦;数组访问数据很快捷而移动数据比较麻烦
链表和数组的差异决定了它们的不同使用场景,如果需要很多对数据的访问,则适合使用数组;如果需要对数据进行很多移位操作,则设和使用链表。
链表
逻辑结构:一对一
存储结构:顺序表、链表
运算规则:随机、顺序存取
栈
逻辑结构:一对一
存储结构:顺序栈、链栈
运算规则:后进先出
队列
逻辑结构:一对一
存储结构:顺序队、链队
运算规则:先进先出
问题描述
假设你有一个数组,其中第i 个元素是第i天给定股票的价格。设计算法以找到最大利润。你可以根据需要完成尽可能多的交易(即,多次买入并卖出一股股票)。
注意:您不能同时进行多笔交易(即,您必须在再次购买之前卖出股票)
贪心算法
什么是贪心算法?
顾名思义,贪心算法总是做出在当前看来是最好的选择。也就是说,贪心算法并不从整体最优上加以考虑,所做的选择只是在某种意义上的局部最优解。当然,我们希望贪心算法得到的最终结果也是整体最优的。
贪心算法的性质
所求问题的整体最优解可以通过一系列局部最优解的选择,即贪心选择来达到。
问题分析
假如给定以下一组股票价格:2,8,1,6,3,9。
判断第一天是否买入,可以看第二天股票价格是否高于第一天的买入价格,若高,则买入并第二天卖出,否则不买。
可知获得的最大利润为17。
代码实现
以下为完整代码:
using namespace std;
int MaxProfit(vector<int>&profit,int n)
{
int max=0;
for (int i=0;i<n-1;i++)
if (profit[i]<profit[i + 1]) //每两天相比较判断是否买入卖出
max+=profit[i+1]-profit[i];
return max;
}
int main()
{
int n;
scanf("%d",&n);
vector<int> nums; //定义向量用来存储股票价格
int x;
for(int i=0;i<n;i++)
{
scanf("%d",&x);
nums.push_back(x);
}
int a=MaxProfit(nums,n);
cout<<"获得的最大利润为:";
cout<<a<<endl;
return 0;
}
1、连接方面区别
TCP面向连接(如打电话要先拨号建立连接)。
UDP是无连接的,即发送数据之前不需要建立连接。
2、安全方面的区别
TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达。
UDP尽最大努力交付,即不保证可靠交付。
3、传输效率的区别
TCP传输效率相对较低。
UDP传输效率高,适用于对高速传输和实时性有较高的通信或广播通信。
4、连接对象数量的区别
TCP连接只能是点到点、一对一的。
UDP支持一对一,一对多,多对一和多对多的交互通信。
软链接: 类似于windows的快捷方式,—>文本文件,但是包含了真实文件的地址
源文件删除,则软连接也删除
软链接可以放在任何文件系统
目录可以创建软连接 --> 和源文件不同的文件,因为软连接目录可以放在任何地方
命令:[root@localhost omc]# ln -s ftl/ ftl.soft (第一个参数表示源文件,inittab.soft表示快捷方式)
查看:[root@localhost omc]# readlink ftl.soft (目标文件不能事先存在,需要ln命令创建)
删除软连接::[root@localhost omc]# rm -f oldboy_soft_link<br><br>
硬链接:硬链接(Inode一致)与真实文件的大小和创建日期完全相同(相同inode号),类似于copy,同步更新。
通过inode索引链接,硬链接多个文件名指向同一个索引,相当于文件的入口,硬链接一个文件有多个入口,相当于文件备份
原理:通过命令ls –i ,发现硬链接文件和源文件的i结点数字相同,而内核是根据文件的i结点来标识文件的,这两个文件的i结点相同,所有被认为是一个文件,所有同时写入和修改数据。
硬链接不能跨文件系统,即不能跨分区,类似于windows内不能将C盘的硬链接放在D盘。
与拷贝区别:拷贝与真实文件的创建日期不同
硬链接属于复制,源文件删除不影响硬链接
当所有的硬链接和源文件被删除之后,再放入新的数据占用此空间、磁盘检测,删除的数据会被回收
可以通过设置硬链接,防止文件被误删除
注意目录不做硬链接
命令:ln /etc/inittab /test/inittab.hard
查看:ls -l /etc/inittab /test/inittab.hard
查看所有文件的inode:find / -type f | xargs ls -lhi | more
文件链接
文件链接的小结:
-1.ln 默认不带参数到的情况下,创建硬链接, -s 表示创建软连接
0.软连接可以通过readlink 查看其指向
1.删除软连接对原文件和硬链接文件无影响
2.删除硬链接对源文件和软连接文件无影响
3.删除原文件,对硬链接没影响,但是会导致软连接失效
4.同时删除源文件,硬链接,会导致整个文件被删除(没有后台进程调用的话)
5.硬件设备的拍照功能就是应用了硬链接的原理
6.硬链接和源文件有相同的inode,可以认为是同一个文件或者是同一个文件的多个入口
7.同时删除硬链接以及源文件,整个文件才会被删除
8.软连接和源文件有不同的inode,是因为创建了2个不同的文件,相当于快捷方式,还有源文件的位置指向
9.软连接是一个新文件,里面记录了原文件的路径,软连接的名称必须由ln创建,不能事先存在
更多面经
扫描二维码
获取更多面经
扶摇就业