测试面试 1 道代码题,居然要 1 个小时!

雁卿雁卿呀 雁卿雁卿呀

 人生闪光,绝非偶然!

(雁卿第11篇分享,全文共计2413字)


(雁卿的面试题,到现在都还没有分享完,断更严重,夏天让雁卿从西瓜追剧中抽身写点文字,也是不容易呀! 朋友们帮忙点点赞吧!)


某公司给了雁卿一个面试机会,一面通过后,二面的安排是 1 个下午面试 5 轮!


雁卿也是第一次见到这样的安排啊,其中就有 1 个小时的coding,面试安排如图:


前面的3轮无缝衔接~心累-_-,而且面试题目的不确定性,就让雁卿很慌。


我们正式进入做题的环节吧,代码题目如下:



解释一下题目的意思就是:



雁卿问了下面试官,这个题目有时间限制吗?

哈哈,听到面试官回复说不需要在意时间的时候,好开心呀~


前面的3轮面试,进行下来已经很疲惫了,脑子思路转不过来,就先开始了一通胡写,然后边写边改,雁卿花了估计有30分钟左右写了个初版:


写完后呢,面试官开始提问了,首先让雁卿讲解这个解题思路,

雁卿就是按照上面代码给出的注释来进行的讲解。

然后面试官又问,如果paragragh这个字符串中的内容是ball,the连在一起的呢?
比如:"Bob hit a ball, the hit BALL flew far after it was hit."

雁卿想到的就是把上面的 11~13 行修改为,将标点替换为空格,后续的 16 行继续按照空格来分割字符串。
        #把原始字符串里面的,和.替换为空格        for character in ',.':            strA = strA.replace(character, ' ')
运行了一下代码,感觉可行。

面试官又继续问:我们要找的出现次数最多的单词,是需要排除banned的,当前的实现,对于banned的操作,还有优化的做法吗?

于是想到,雁卿是先把所有单词存入到字典,然后再判断等于banned后,从字典中移除banned。

那么可以修改为存入字典前进行判断,修改 23 行到 31 行的逻辑如下:

        


到这里呢,修改后的代码如下:


输入数据及运行结果见图:



那么我们再试想一下,如果返回的结果里面,有多个单词都达到了最大出现次数,怎么办?

比如修改paragraph, 让里面"ball" 和 "a" 都出现 2 次。那么需要怎么实现呢?


这里呢,我们优秀的Jessica同学给出了一个升级版本,大家可以参考一下。



输入数据及运行结果如下:



雁卿比较菜,用的是最笨的遍历方法,一些内置函数也没有想起来。


大家还有什么好的方案吗?欢迎分享你的思路,一起交流探讨呀!


欢迎点赞在看,分享和收藏。


如果你有任何问题,欢迎 评论 或者 留言


测试工程师面试题合集系列

软件测试面试题-计算机网络篇

软件测试面试题集 - Python篇

软件测试面试题集 - 接口UI自动化篇

软件测试面试题集 - 逻辑题篇

软件测试面试题集 - Linux篇

软件测试面试题集 - 项目业务篇

软件测试面试题集 - HR面试篇


雁卿个人介绍

来认识下雁卿雁卿呀




每天进步一点点,多输出,多分享,希望能对你有所帮助,我是雁卿雁卿呀,期待您的关注!


文章推荐