7.28面试问题3
到C/S结构,她就问Server端测试性能时需要注重哪些方面。
到C/S结构,她就问Server端测试性能时需要注重哪些方面。
1.
2n个数,一半奇数,一半偶数,设计一个程序让奇数位上的数是奇数,偶数位上的是偶数,并计算程序的空间复杂度和时间复杂度
可以这么设计:使用另外一个数组,一个一个遍历原数组遇到奇数就放到新数组的奇数位上,可以设立两个数组下标一个指向新数组的奇数位,另一个指向新数组的偶数位,当奇数位或偶数位任意一个到头时,就将另外的数据顺序填入即可。
2.开放性问题:怎么样统计世界上一共有多少个理发师
可以去工商局,可以去统计理发用的工具销量,
3.现在有一台打印机或者多台打印机,你要怎么样进行测试,要测哪些点。
一.测试一部电梯
需求测试:
查看电梯使用说明书、安全说明书等
界面测试:
查看电梯外观
功能测试:
1.测试电梯能否实现正常的上升和下降功能。
2.电梯的按钮是否都可以使用。
3.电梯门的打开,关闭是否正常。
4.报警装置是否可用。
5.与其他电梯之间是否协作良好。
6.通风状况如何。
7.突然停电时的情况。
8.上升途中的响应。
1)电梯本来在1楼,如果有人按18楼,那么电梯在上升到5楼的时候,有人按了10楼,这时候是否会在10楼先停下来;
2)电梯下降到10层时显示满员,此时若8层有人等待电梯,是否在8层停。
可靠性:
1.门关上的一刹那出现障碍物。
2.同时按关门和开门按钮。
3.点击当前楼层号码。
4.多次点击同一楼层的号码等等。
5.同时按上键和下键会怎样。
易用性:
1.电梯的按钮的设计符合一般人使用的习惯吗.
负载/压力测试:
1.看电梯的最大限度的承受重量.在负载过重时是否有提醒。
2.在一时间内不断的让电梯上升,下降。
稳定性测试:
1.最大负载下平稳运行的最长时间。
文档测试:
1.使用手册是否对电梯的用法、限制、使用条件等有详细描述
二.测试带广告图案的花纸杯
需求测试:查看杯子使用说明书
界面测试:查看杯子外观
功能度:用水杯装水看漏不漏;水能不能被喝到
安全性:杯子有没有毒或细菌
可*性:杯子从不同高度落下的损坏程度
可移植性:杯子再不同的地方、温度等环境下是否都可以正常使用
兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等
易用性:杯子是否烫手、是否有防滑措施、是否方便饮用
用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述
疲劳测试:将杯子盛上水(案例一)放24小时检查泄漏时间和情况;盛上汽油(案例二)放24小时检查泄漏时间和情况等
压力测试:用根针并在针上面不断加重量,看压强多大时会穿透
跌落测试:
杯子加包装(有填充物),在多高的情况摔下不破损
震动测试: 杯子加包装(有填充物),六面震动,检查产品是否能应对恶劣的铁路\"公路\"航空运输
测试数据:
测试数据具体编写此处略(最讨厌写测试数据了)。其中应用到:场景法、等价类划分法、因果图法、错误推测法、边界值法等方法
期望输出:
该期望输出需查阅国标、行标以及使用用户的需求
说明书测试: 检查说明书书写准确性
4.比如说到C/S结构,她就问Server端测试性能时需要注重哪些方面。
5. c中malloc realloc
calloc 的区别和联系
ANSI
C说明了三个用于存储空间动态分配的函数
(1) malloc
分配指定字节数的存储区。此存储区中的初始值不确定
(2) calloc
为指定长度的对象,分配能容纳其指定个数的存储空间。该空间中的每一位(bit)都初始化为0
(3) realloc
更改以前分配区的长度(增加或减少)。当增加长度时,可能需将以前分配区的`内容移到另一个足够大的区域,而新增区域内的初始值则不确定
.分配函数时再分配 realloc()
使我们可以增、减以前分配区的长度(最常见的用法是增加该区)。
如果先分配一个可容纳长度为512的数组的空间,并在运行时填充它,但又发现空间不够,则可调用realloc扩充该存储空间。
如果在该存储区后有足够的空间可供扩充,则可在原存储区位置上向高地址方向扩充,并返回传送给它的同样的指针值。
如果在原存储区后没有足够的空间,则realloc分配另一个足够大的存储区,将现存的5 1
2个元素数组的内容复制到新分配的存储区。
因为这种存储区可能会移动位置,所以不应当使用任何指针指在该区中。
注意,realloc的最后一个参数是存储区的newsize(新长度),不是新、旧长度之差。作为一个特例,若ptr是一个空指针,则realloc的功能与malloc相同,用于分配一个指定长度newsize的存储区。
这些分配例程通常通过sbrk(2)系统调用实现。该系统调用扩充(或缩小)进程的堆。虽然sbrk可以扩充或缩小一个进程的存储空间,但是大多数
malloc和free的实现都不减小进程的存储空间。释放的空间可供以后再分配,但将它们保持在malloc池中而不返回给内核。
应当注意的是,大多数实现所分配的存储空间比所要求的要稍大一些,额外的空间用来记录管理信息——分配块的长度,指向下一个分配块的指针等等。这就意味着如果写过一个已分配区的尾端,则会改写后一块的管理信息。这种类型的错误是灾难性的,但是因为这种错误不会很快就暴露出来,所以也就很难发现。
将指向分配块的指针向后移动也可能会改写本块的管理信息。其他可能产生的致命性的错误是:释放一个已经释放了的块;调用free时所用的指针不是三个
alloc函数的返回值等。因为存储器分配出错很难跟踪,所以某些系统提供了这些函数的另一种实现方法。每次调用这三个分配函数中的任意一个或free时都进行附加的出错检验。在调用连接编辑程序时指定一个专用库,则在程序中就可使用这种版本的函数。此外还有公共可用的资源(例如由4.3+BSD所提供的),在对其进行编译时使用一个特殊标志就会使附加的运行时间检查生效。
因为存储空间分配程序的操作对某些应用程序的运行时间性能非常重要,所以某些系统提供了附加能力。例如,SVR4提供了名为mallopt的函数,它使进程可以设置一些变量,并用它们来控制存储空间分配程序的操作。还可使用另一个名为mallinfo的函数,以对存储空间分配程序的操作进行统计。请查看所使用系统的malloc(3)手册页,弄清楚这些功能是否可用。
.alloca函数
还有一个函数也值得一提,这就是alloca。其调用序列与malloc相同,但是它是在当前函数的栈帧上分配存储空间,而不是在堆中。其优点是:当函数返回时,自动释放它所使用的栈帧,所以不必再为释放空间而费心。其缺点是:某些系统在函数已被调用后不能增加栈帧长度,于是也就不能支持alloca
函数。尽管如此,很多软件包还是使用alloca函数,也有很多系统支持它。