搜狗-2020测试校招笔试(二)
以下代码实现求1到10的和,请指出其中的错误(给出错误的行号并说明原因):```
1
#include 2 using namespace std; 3 4 int func1(int a=0;int b) 5 { 6 return a+b; 7 } 8 int sum() 9 { 10 int sum; 11 int* const point1; 12 int const* point2; 13 point1=&sum 14 point2=func1(3,4); 15 int i=1,j=2; 16 for(i,j;i<10,j<10;i++,j++) 17 { 18 sum+=func1(i,j); 19 } 20 return *point1; 21 } 22 int main(int argc, char *argv[]) 23 { 24 int ret= sum(); 25 cout << ret; 26 return 0; 27 }
满分10分 1) 第4行int func1(int a=0;int b);有误;(1分) 默认参数应该从右到左定义,如果a给定默认值,b也必须给定默认值。(1分) 2) 第11行int* const point1;有误;(1分) 指针常量声明时必须初始化(1分) 3) 第13行point1=&sum有误;(1分) 由于point1为指针常量不能被修改(1分) 4) 第14行point2=func1(3,4);有误;(1分) func1返回类型为整型,不能赋值给指针。(1分) 5) 第16行for(i,j;i i,j边界值判断有误,自增有误(2分) 应为for(i,j;i for(i,j;i (若给出正确的写法可加1分) 正确代码:
1 #include 2 using namespace std; 3 4 int func1(int a,int b) 5 { 6 return a+b; 7 } 8 int sum() 9 { 10 int sum; 11 int* const point1=∑ 12 int const* point2; 13 int i=1,j=2; 14 for(i,j;i<8,j<11;i=i+2,j=j+2) 15 { 16 sum+=func1(i,j); 17 } 18 return *point1; 19 } 20 int main(int argc, char *argv[]) 21 { 22 int ret= sum(); 23 cout << ret; 24 return 0; 25 }
2. 有一售卖电影票的移动APP,现有个活动,前1000张的电影票用户能以原价20%的价格买入,
但每人限购1张。如果你作为该活动的测试负责人,请问如何设计本次测试。
答案
得分参考:满10分
1、功能点(6分):关键词:移动app、活动、电影票、20%的价格、1000张、限购逻辑
2、压测(1分)
3、兼容 (1分)
4、其他加分项(2分):作为负责人需要考虑,项目上线时间及各阶段排期是否合理、测试资源如何分配、是否有风险预案等
测试用例参考:
一、功能测试
1、移动app:因是个活动,需要考虑弱网络情况,考虑图片是否使用缩略图;用户体验...
2、活动:H5的可能比较大,需考虑活动如何上线、能否正确进入活动界面...
3、电影票:电影票是某部电影还是全部在售的电影、选座是否正常、已售座位的信息更新是否及时、电影的相关信息是否正确等...
4、20%的价格:购买方式(网银、支付宝、微信)、买入/退款时的折扣计算、可能存在的安全隐患(如异常数据提交购买/退款)...
5、1000张:1000等价类划分、并行处理之N个人同时付款一张票、二次支付;二次购买...
6、限购:限购方式(手机号、新老用户、App账号、iOS/Android不同端…)、购买时库存不足、重复购买、如果有允许等待30min内付款,那么第一张不付款,购买第二张会怎么样…
二、压测:加载H5页面的时间,峰值并发的设计
三、兼容性:在不同设备,不同系统及版本该“活动”的兼容性检查
1、功能点(6分):关键词:移动app、活动、电影票、20%的价格、1000张、限购逻辑
2、压测(1分)
3、兼容 (1分)
4、其他加分项(2分):作为负责人需要考虑,项目上线时间及各阶段排期是否合理、测试资源如何分配、是否有风险预案等
测试用例参考:
一、功能测试
1、移动app:因是个活动,需要考虑弱网络情况,考虑图片是否使用缩略图;用户体验...
2、活动:H5的可能比较大,需考虑活动如何上线、能否正确进入活动界面...
3、电影票:电影票是某部电影还是全部在售的电影、选座是否正常、已售座位的信息更新是否及时、电影的相关信息是否正确等...
4、20%的价格:购买方式(网银、支付宝、微信)、买入/退款时的折扣计算、可能存在的安全隐患(如异常数据提交购买/退款)...
5、1000张:1000等价类划分、并行处理之N个人同时付款一张票、二次支付;二次购买...
6、限购:限购方式(手机号、新老用户、App账号、iOS/Android不同端…)、购买时库存不足、重复购买、如果有允许等待30min内付款,那么第一张不付款,购买第二张会怎么样…
二、压测:加载H5页面的时间,峰值并发的设计
三、兼容性:在不同设备,不同系统及版本该“活动”的兼容性检查
3. 小汪作为一个有数学天分的程序猿,设计了一套密码生成器来搞定自己的密码问题。
密码生成器由N个槽位组成,槽位的下标为0~N-1,每个槽位存储一个数。起初每个槽位都是0。
密码生成器会进行M轮计算,每轮计算,小汪会输入两个数L,R(L<=R),密码生成器会将这两个数作为下标,将两个下标之间(包含)的所有槽位赋值为i(i为当前的轮次,i∈[1,M])。
M轮计算完成后,密码生成器会根据槽位的最终值生成一条密码,密码的生成规则为:
(0*a[0] + 1*a[1] + 2*a[2] + ... + (N-1)*a[N-1]) mod 100000009
其中a[i]表示第i个槽位的最终值。
请帮助小汪把他的密码生成器实现为代码。
密码生成器由N个槽位组成,槽位的下标为0~N-1,每个槽位存储一个数。起初每个槽位都是0。
密码生成器会进行M轮计算,每轮计算,小汪会输入两个数L,R(L<=R),密码生成器会将这两个数作为下标,将两个下标之间(包含)的所有槽位赋值为i(i为当前的轮次,i∈[1,M])。
M轮计算完成后,密码生成器会根据槽位的最终值生成一条密码,密码的生成规则为:
(0*a[0] + 1*a[1] + 2*a[2] + ... + (N-1)*a[N-1]) mod 100000009
其中a[i]表示第i个槽位的最终值。
请帮助小汪把他的密码生成器实现为代码。
public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int sum = 0; int password; int N = scanner.nextInt(); int M = scanner.nextInt(); int[] arr = new int[N]; for (int i=0;i<M;i++){ int L = scanner.nextInt(); int R = scanner.nextInt(); for(int j=L;j<R;j++){ arr[j] = i+1; } arr[R] = i+1; } for (int i=0;i<arr.length;i++){ sum+= i*arr[i]; } password = sum % 100000009; System.out.println(password); } }