阿里-测试开发面经(十三)

共 4315字,需浏览 9分钟

 ·

2021-05-14 17:40

点击蓝字关注我们,获取更多面经








针对电梯,设计测试用例




一台电梯:

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。


时间复杂度
该算法的时间复杂度为O(n)。


代码实现

以下为完整代码:

#include<iostream>#include<vector>

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;}






tcp和udp的区别




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创建,不能事先存在









更多面经





360-测试开发面经(一)


百度-测试开发面经(一)


字节跳动-测试开发面经(一)


    扫描二维码

   获取更多面经

  扶摇就业  


浏览 17
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报