我最近进行了数次面试,过程中,我和几位面试官在测试的几乎所有领域都展开了交锋,相当于全面开战!

具体涉及的方面如下:

测试用例设计,测试流程,质量等级,超复杂linux命令,复杂sql语句,索引原理,python底层原理,内存地址映射,中间件,性能测试,安全测试,接口原理,网络协议,计算机组成,数据结构,算法题,白盒测试技术,哈希冲突,git命令,web和app测试,ui自动化,接口自动化,mock技术,测试平台搭建,测试平台架构,风险预估,维护成本,推广运营,需求设计,方法论,团队管理,同事关系等方面…

基本每一面都在1.5小时以上,虽然具体的战场都是由面试官选定,但仍然保持了95%以上的问题秒答。
但,仍然存在着让人心生余悸的题,就是算法, 虽然博主刷了800道算法, 但是仍然不敢托大,毕竟算法题不像那些死记硬背的linux命令,它永远是新的也是你没见过的。所以任何时候,对任何人算法题都是最不可控的风险,所以大家还是抓紧报名跟博主培训下,每周都会直播在线刷算法题,一边刷一边讲解思路。

抛开这些,还有一道题是让人耳目一新的,当然这个题也是出自bat的面试中,具体哪个公司就不说了,就说下这个题,为什么让我耳目一新甚至让人觉得后怕吧。

让我震惊的不是题的本身,而是出题的方式。

面试官先是出了一道中等难度的算法题,要求,不准使用任何方便的第三方库和内置函数,比如列表的反转reverse,正则re库等。全部用if for这种基础逻辑运算符完成。

我其实对这种情况早就习以为常,因为面试官要考察的是候选人的智商和逻辑思维能力,而不是知识面的广度。

但是我发现我还是天真了!不让用那些函数的目的马上揭晓!这原因甚至让我深深感觉对面出题人的可怕城府!

当我用了多个for if else break continue 终于在10分钟内解决了这个问题后,面试官说出了让我震撼的一句话:

现在,用白盒测试的五种逻辑覆盖率来写这个算法的测试用例吧… 要求,最终用例数不超过5个。

好家伙,5个用例覆盖5个逻辑的全部?这个难度堪称史诗级。等等!重点不是这个吧,重点是,白盒测试技术,这光听名字,能懂的人已经不多了,现在能背着写出5个逻辑覆盖名字的就更少了,就别说现场实际做了。

我心说:好家伙…在曾经的面试中,面试官不是没问过我白盒测试技术,但基本都是纯理论,这样面试实战,现场手撕白盒测试数据用例的 我确实第一次遇到。

当然幸好我理论底子足够,心说没什么大不了的,而且这个算法还是自己刚刚亲自写的,能写就能测!

等等!自己写的?怎么突然感觉到不妙?于是我赶紧看了下自己刚刚写下的代码,看着当中多层嵌套的循环和 各种 复杂的if and or ,瞬间觉得头都大了,好家伙,被安排的明明白白啊…

我也终于明白面试官不让我用那些方便的小函数的目的了…

不过我还是咬着牙,因为不幸中的万幸是这个算法题的入参是一个列表!而列表中可以存放很多的元素,靠着无限添加的元素数量,我就可以让极少的用例数来覆盖最多的情况了,这个难点算解决了。

然后就是梳理这个复杂度很高的算法了…

接下来的几分钟,我就开始从路径覆盖,语句覆盖,判定覆盖,条件覆盖,条件判定覆盖 五个方法全部写完了要求的用例,而用例却只用了一个…

面试官的表情我当时没有注意到,但是后来面试即将结束的时候,问我还觉得自己哪里可以提升的时候,我回答说刚刚我有个linux的复杂语句回答不好,我需要把linux重新打下基础了。面试官却笑着说:这不是缺点,其实你已经很完美了…

这招我算是学会了,以后我再去做面试官,就也让候选人自己现场测试自己的算法吧,做不上就是“搬起石头砸自己的脚”了… 颤抖吧~

整理了下这三天【面试】遇到的让人心惊胆颤的难题。相关推荐

  1. [面试笔试整理1]:深度学习机器学习面试问题准备(必会)

    此系列三篇文章的原文链接 面试笔试整理1:深度学习机器学习面试问题准备(必会) 1.神经网络基础问题 (1)Backpropagation(要能推倒) 后向传播是在求解损失函数L对参数w求导时候用到的 ...

  2. 啃下这三块最难啃的硬骨头,你将在嵌入式C语言中大放异彩

    啃下这三块最难啃的硬骨头,你将在嵌入式C语言中大放异彩 C语言在嵌入式学习中是必备的知识,审核大部分操作都要围绕C语言进行,而其中有三块"难啃的硬骨头"几乎是公认级别的. ///插 ...

  3. 软件测试工程师三次面试失败的血泪教训!!!

    把时间用在进步上,而不是抱怨上;其实很多时候,你并不需要做什么,真诚即可. 最近三次面试的经验总结: 1.开始介绍一下你自己 您好,我叫xxx,xx年xxxx学院xxxx专业毕业,毕业至今在xx的软件 ...

  4. 好久没玩laravel了,5.6玩下(三)

    好久没玩laravel了,5.6玩下(三) 好了,基础的测试通了,咱们开始增删改了 思路整理 先创建项目功能控制器 然后设置路由访问规则 然后开发项目的增删改功能 1 先创建项目的控制器 php ar ...

  5. 三分钟计算机自我介绍面试,三分钟面试自我介绍【三篇】

    [导语]自我介绍是向别人展示你自己的一个重要手段,自我介绍好不好,甚至直接关系到你给别人的第一印象的好坏及以后交往的顺利与否.同时,也是认识自我的手段.以下是无忧考网整理的三分钟面试自我介绍,欢迎阅读 ...

  6. 程序员面试快手后感慨:你们经历过绝望吗?三个面试官都是清华的

    一名程序员在面试完快手后如此感叹:快手的要求确实高,比阿里难进100倍,三个面试官都是清华的,全是问的acm和算法题. 所谓同行相轻,马上又网友评论:题刷得好不代表解决问题能力强,面试一般考一两个考察 ...

  7. 阿里三次面试经验和总结,希望对你有帮助!

    点击上方"程序IT圈",选择"置顶公众号" 工作日早晨8点50分,准点开车打卡 大纲: 一.投递简历 二.准备面试 三.技术一面 四.健身房里的技术二面 五.产 ...

  8. 北京第三家面试录音总结

    [4:5] 敲门声 我:您好 面试官:加加林? 我:对,我是面试的 面试官:我刚才开会呢 我:哦,没事 面试官:老家是山东济南的,对吗? 我:对对 面试官:你这还行,离这儿还不算远,济南到这里.是吗? ...

  9. linux文件名 -%3e,linux下的三种解压文件的命令?

    那要看你的压缩文件使用哪种压缩方式: gzip,压缩文件名:zip或gz,解压命令:unzip bzip2,压缩文件名:bz,解压命令:bzip2 -d 上面两个是最常用的压缩方式,一般在linux下 ...

最新文章

  1. 【No.1_sizeof与strlen】
  2. 使用photoview+viewpager实现图片缩放切换(类似微信朋友圈图片查看)
  3. Python OpenCV——函数 cv2.findContours 运行错误【in function ‘cv::pointSetBoundingRect‘】解决方案
  4. android 实现显示电量,Android开发:显示电池电量
  5. Eclipse对类固醇的重构
  6. python获取某文件路径_Python获取当前文件路径
  7. linux下gcc的编译过程详解
  8. [转]从网页Web上调用本地应用程序(.jar、.exe)的主流处理方法
  9. struts2 空文件上传解决
  10. 通过UIDocumentInteractionController预览和分享史蒂夫•乔布斯传
  11. 写Java要用什么编译器最好?
  12. 常用编码说明-GB2312
  13. 北京二手房价分析及预测
  14. ETF基金的优点和缺点
  15. 详解浅拷贝,深拷贝及实现方法
  16. 迪士尼无限3.0连接服务器,迪士尼无限3period;0BUG问题解决 | 手游网游页游攻略大全...
  17. SAP 将标准日期格式转换为内部数字格式
  18. 【iOS15更新必学】 如何完整备份iPhone资料?
  19. 成功案例丨荣联助力中科院上海有机所冷冻电镜大数据计算系统建设
  20. 一篇说尽Excel常见函数用法

热门文章

  1. 滚珠开关怎样使用更稳定?
  2. 三个分数、大球吃小球、五子棋
  3. truffle-contract调用合约
  4. 微信小程序根据wx.getSystemInfo获取屏幕尺寸,并动态改变元素宽高尺寸,示例
  5. C语言 指针数组和指向指针的指针
  6. java练习题-显示人的年龄和姓名
  7. html塔防游戏,HTML5 版塔防游戏
  8. 少壮不努力,老大写程序(kobewry) 经典话语啊
  9. [TsinsenA1490] osu!(乔明达)
  10. 记一次买到假芯片的经历