记:应聘招银网络科技 测试开发工程师

  • Post author:
  • Post category:其他




笔试




\qquad











今天这个招银的,又是测试岗。今天的考题还是相对来说比较简单的。考察的东西相对比较常见。除开一些计算机的一些基础知识(考了数据库的基础知识,这应该是测试岗必备的知识!大家如有备考测试岗的,记得复习,还考了Java基础知识,可惜啊,忘光了。)。这里记录一些我觉得比较有价值的题目(偏考察思维)。还有,招银网络科技的笔试题中就包含了一些推理判断这样的题目。

1.就是有那么一类题目,问的是,两个人,绕着操场(200米)走,一个人每次走2米,另一个人每次走5米,问走多少次,可以相遇。

就是牛客这道题(类似):
在这里插入图片描述

这道题选择E选项。

这两个答案解释的都挺好:

在这里插入图片描述

在这里插入图片描述

2.还有一类是:一个操场400米,一个人从8:20在起点开始跑,先逆时针跑1分钟,然后再顺时针跑2分钟,再逆时针跑3分钟,以此类推,4.5.6.……分钟往返跑,每分钟跑120米,问正好跑到起点停下时是几点。

解答是:




\qquad











每次逆时针跑到返回时比上次前进了1分钟的路程120米,要刚好在起点时停下,则要求120与400的最小公倍数,是1200,1200/120=10,即要往返跑10次即可。(1+2)+(3+4)+(5+6)+(7+8)+(9+10)+(11+12)+(13+14)+(15+16)+(17+18)+19=190分钟=三小时十分。这里只要计算第一次逆时针达到要求即可。 8:20+三小时十分=11点半。

3.逆波兰式(Reverse Polish notation,RPN,或逆波兰记法),也叫后缀表达式(将运算符写在操作数之后)

4.设计模式(继软考之后,再没见过。。):我自己的理解就是在软件领域,一些可以重复使用的已经成惯例的“套路”。


设计模式,讲的超好!


5.数据库的基础知识。

6.编程题,题目不难。应该考察的是从一个测试的角度来处理这道题。题目就是先找出一段数字的规律,然后编程实现前n项和。数字是:0,1,2,5,12,29,70. 规律是后一个数是前一个数的二倍加前前一个数。我在编程的时候处理了n为0和1时的情况。处理了为负数时的特殊情况。以及正常输入的情况。后来想想,还有非整数的情况没有考虑。。



第一轮面试

流程是这样的:

自我介绍,为什么选择我们,C++基础知识:智能指针、struct和class的区别,一个编程题现场做,对ATM取款机的取款的流程做分析,指出需要考虑的测试细节。你还有什么需要问面试官的?

编程题是:找出两个字符串的相同字符,去重,并按字符在字符串里面出现的顺序输出。(现场其实没有这么多的要求,就是要求输出contend和context的相同字符,我个人觉得如果对于任意两个输入去处理,那么应该需要去重。)

代码:

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string s1;
string s2;
string out;
int i;
int j;
int main() {
	cin >> s1;
	cin >> s2;
	for (i = 0; i < s1.length(); i++) {
		for (j = 0; j < s2.length(); j++) {  //如果j从i开始,那么“前面”的就没法对比。
			//如果j从0开始的话,一个相同的字符可能会被多次加入结果中。后面需要去重。
			if (s1[i] == s2[j]) {
				out = out + s1[i];
				j++;
				break;
			}
		}
	}
	//sort(out.begin(), out.end());  //先排序,排序之后导致结果就不是按照字符串原来的顺序了,而是排序之后的顺序。
	//auto it=unique(out.begin(),out.end());
	//out.erase(it, out.end());//删除操作
	//之后直接输出就可以了。
	//如果需要达到不改变顺序的输出。那么打算按照下面的方法来计算。
	int pois[26] = { 0 };
	int len1 = out.length(); 
	int k = 0;//记录删除了几个元素。
	for (int i = 0; i < len1; i++) {
		if (pois[(int)out[i-k] - 97] == 0) { pois[(int)out[i-k] - 97] = 1; }
		else { out.erase(out.begin() + i - k); k++; }
	}
	cout << out;
}

关于ATM取款流程的分析,这个问题,我是不会的。我在最后一问,问了面试官。她说需要考虑业务逻辑和用户体验。对于业务逻辑,需要考虑每一个完整的业务流程,对于每一个业务流程中间出现的每一个选项以及它到达的一个结果都需要完整的考虑到。需要考虑到每个正常的结果,也需要考虑到每个非正常操作出现的错误结果。具体的,我下次去银行体验一把。



后续

我感觉一面挺好的啊!但是两周了没后续。。。

凉了。。后面的公司继续加油吧。



版权声明:本文为weixin_40007143原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。