笔试题目及难题解决方案笔试经验

时间:2022-07-17 18:48:25 笔试题目 我要投稿
  • 相关推荐

笔试题目及难题解决方案笔试经验

  1. 毫无疑问,面试得从笔试开始,先在笔试的时候读代码写结果,还是很简单的一道题,不过就是考C#继承,构造函数,及new对基类的隐藏等基础知识,换做谁应该都能做出来。

笔试题目及难题解决方案笔试经验

  2. 接下来的笔试问答题也还算简单,也不过就是诸如装箱拆箱,类和结构的区别,GAC,CLR等等基础得让人崩溃的基础,说崩溃,是因为它们都是刚毕业那年为了找工作曾试着死记硬背的概念,其实接触得多了,就算撇开概念也能较为清晰地描述它们,只是可能名词称呼不够专业。

  3. 紧接着就是编码题,常见的编码题就是排序,这次也毫无意外,写了一个比堆排序容易超级多的快速排序,写完心里还蛮忐忑的,虽然脑袋里尝试运行的时候结果好像是对的,然而总觉得哪里有问题,问题不是出在实现上,而是那一瞬间,突然不知道自己写出来的是不是快排了,只能肯定不是冒泡,冒泡可没那么长的代码。这里需要注意一点:如果能写泛型代码尽量写泛型,一个原因是泛型的作用还是很明显的,还有,写成泛型,稍稍好像有提升自己的档次吧。当然,如果写成 int[] array,回头面试官八成还得问你,那我要是传入的是一个string[] array(这个可能性会相对小)或者byte[] array,long[] array怎么办?

  面试的时候,他肯定了我写的是正确的快排,还提醒我,所有排序里面只有快排是用到了递归,所以只要你写出了递归,就可以肯定是快排。虽然自己没有一一去验证,不过就我所知道的为数不多的排序算法里,仔细想想,好像确实只有快排用到了递归。面试官还专门写了几个数字,问快排第一趟排序结束后的排序是什么样的,大概是怕我死记硬背这段代码,而不知道具体的逻辑吧。我稍微用笔画了一会,然后回答出来了,或许是为了验证我确实懂排序,又拿着同样的数列,让我用冒泡方式写出第一次排序结束后的情况。还算ok,排序和查找的算法,以前还是理解得比较深刻的,当然,只限于简单的部分,要是问我诸如堆排序什么的,我就只能举双手投降了。堆排序以前也仔细研究过,不过好像跟树有关,结果是将这些算法逻辑都还给书本和老师了。

  4. 依然还是编码题,丫丫的,有你这么考我的么?我是应聘测试开发类岗位的自动化测试工作,测试开发,什么叫测试开发,开发是为了更好的测试,我又不是真的应聘开发,尼玛以为我对C#是有多熟悉,多了解吖??居然让我实现String.Replace()方法,还不能调用API,说真的,给我一个用例让我调用 Replace方法做字符串的替换,我都可能不知道Replace有几种重载方法,以及每一个重载方法的参数有哪些,可是题目放在那里,总不能不会实现也没有任何思路吧。总不能打开手机上网百度吧,手机流量也不多了,舍不得用。为了留下良好印象,也总不能直接写上“我不会”三个字吧。

  栽了栽了,就栽在这题上了,心里没有任何慌张,只是很冷静地面对这样的事实,也许是过分的冷静吧,脑子里突然有点意识到了什么,如果记忆没有骗我的话,这个题,早在三四年前,某人曾经跟我一起讨论过,只是那时候我编码一塌糊涂,也无心学习,对于这种算法,编程什么的对话,我顶多当他自言自语,理解不了,或者说懒得去理解。

  闭上眼睛,努力搜寻那一幕幕微小的记忆片段,究竟那时候他自言自语说的是什么,印象中是他曾在某公司面试C#开发岗位的时候碰到过的, 也是现场没有回答出来而回到家里继续研究来着,当时他究竟研究出了什么结果。不记得眼睛闭了多久,也不记得脑子里飘过了多少东西,却很清晰地,抓住了,就是它,没错,三四年前,他说过,用CopyTo的方法,只要匹配到输入的string中需要被替换的字符串及知晓原字串长度,就可以知道 需要被复制的长度 = 索引-需要被替换的字符串的长度(这仅限当时的想法,和具体实现的代码逻辑对有出入),而一旦找到了这个关系,用CopyTo的方法将原来的字符串替换成需要被替换的字符串,即使用xx.CopyTo (int sourceIndex, char[] destination, int destinationIndex, int count)(不要问我为什么Replace的重载方法及参数记不住,CopyTo却记得那么清楚,前几天刚帮某个群的某个朋友看一段代码的时候,刚好里面有CopyTo方法,出于对它的好奇,还特地搜索过,因为时间不长,所以记忆深刻,没办法,我记忆力比较好~),可是,然后呢?char[]的数组是什么?又问了自己几个问题,脑子里思路似乎是渐渐清晰起来了,不过似乎挺凌乱,所以真让我从头到尾实现这个方法,与其说给我多少时间能解决,更可能的情况是,我根本写不出来,不得不说,似乎蛮复杂的。算了,还是放弃吧。(代码实现其实也不难,只是本人不得不承认,编码能力有限,没能现场搞定,代码在文章结尾已附上)

  5. 紧接着的题也让我有想放弃的想法,因为这题是根据写出的String.Replace()方法进行测试用例的设计,按我正常的逻辑(仅限于本人的思维,不表示正常人的正常逻辑思维)思考,上一题都没写出来的话,这题应该是做不到的吧。可是这个念头很快就打消了,开国际玩笑吖,测试是我本行,开发我甚至可以一窍不通,用控制台实现Hello World我可以完全不会,可是测试怎么能放弃,好不容易看到一道题考测试耶~立刻稀里哗啦写了一通我小小的脑袋瓜能想得到的一切可能用于测试的用例。

  6. 考题算是告一段落,ok~正式进入面试阶段,诸如自我介绍,根据之前工作的项目经验提问的一系列问题,我满脑子飘过的只有春晚大张伟唱的十几个字:天空飘来五个字,那都不是事儿~为啥,自己做过的项目,再怎么地,就算自己描述不清楚还不能把对方说迷糊么?好吧,我只是随口说说,还是会尽力将工作的一些情况如实禀报的。

  当问到自动化测试框架的时候,毫无意外地,搬出了我们工作所用的框架和Selenium类似这个看起来没有说服力的理由,只是一个不小心说到了框架在功能测试上帮助比较大,但后台数据貌似支持度不高,于是被面试官逮住问到,为什么框架不支持后台数据?为什么?为什么?突然满脑子的问号浮在了我脸上,不记得我嘴有没有嘟鼓起来(我郁闷的时候很容易嘟嘴),我有病啊,没事说什么对后台数据支不支持,别人写的框架,别人搞出来的问题,我怎么知道是对方不乐意写出对后台数据的支持还是没开发完成这个框架啊?可是我总不能这么回答吧,于是,稍作思考,这个时候就特别嫉妒自己的小聪明,怎么会如此聪明的脑袋呢?哈哈,也许有一秒钟时间我在微笑,然后回答到:因为我们这个框架是针对UI层设计的,主要是对页面进行操作并验证相应的功能,因此没有提供对后台的支持(不知道正确答案是什么,反正我就这么回答了,是正确的最好,不正确至少从我的角度忽悠了他,至于他是不是被忽悠到了,对我来说并不那么重要)。