两道看似简单的面试题,通过率为0

lr5420511 2017-09-19 12:44:07
昨天和同事面试了十几个求职者,大部分人简历上写的是培训班出来的,科班的也有几个。同事现场发挥出了两道题,要求他们现场编程实现一下,我看了下他出的题,第一反应是这小子可真狠,挖了那么大一个大坑给别人跳。废话不多说上题:

以下题目可以采用自己熟悉的任意语言进行描述:

第一道题:已知有一家化工厂,日常生产的商品有5种类型,商品名称分别为硫酸(编号001),硝酸(编号002),盐酸(编号003),氢氟酸(编号004)和硫酸亚铁(编号005)。要求编写一个函数用以描述以下内容,通过输入商品名称返回对应的商品编号;

第二道题:编写一个函数,如果参数输入为“男性”时返回true,如果为“女性”时返回false。(按照中国现行法律考虑,不用考虑其他性别);

就是这样两道看似极其简单的题,第一道题虽然全部都描述正确了,但是也仅仅只是描述正确而已,从代码看起来没有一个人明白这道题的真正用意。第二道题全部通过了。但是只有两道题都通过才算真正的清楚出题人到底是想考察些什么。其实同事想让他们明白什么时候不应该去过度设计。

其实我看了第一道题以后,我就估计这次有90%的人要被Pass掉,因为如果只是使用if+else来写的话,就正好掉坑里了。我也不知道他们为什么设计之前不问问自己,如果这样设计的话,日后工厂商品种类增加了或者某个商品的编号改变了怎么办?打开function直接改?既然都已经意识到了函数内部有这样的变化,为什么不去抽象这个变化。然而很遗憾没有一个人使用KeyValuePairs去分离这个变化,当商品种类增加或改变时,直接注册键值对到散列表里或者修改散列表键对应的值就可以了,而不是去修改function。

再看第二道题,恰恰告诉我们不要去过度设计,因为这里描述的性别除了两种没有其他的可能性(按照中国法律),返回的值改变的可能性也是极低的,用最简单的if+else就可以了。

大家可以一起讨论讨论

...全文
4440 74 打赏 收藏 转发到动态 举报
写回复
用AI写文章
74 条回复
切换为时间正序
请发表友善的回复…
发表回复
游北亮 2019-01-08
  • 打赏
  • 举报
回复
会不会写了个字典后, 被面试官说:就固定5个产品,你还要多分配一块内存来存在?而且还是用Hash?而不是string[][]? 需求真的是要说明清楚的
QFN-齐 2019-01-08
  • 打赏
  • 举报
回复
感觉是面试官在玩小聪明,我遇到这样的面试,依然if else ,至于楼主的解释实在很不符合实际,既然我要考虑工厂实际生产和日后扩大生产所带来的更多原料,哪为什么不在设计之初把数据存入数据库呢?。。。。
早起晚睡 2018-11-25
  • 打赏
  • 举报
回复
我觉得数据库最简单了爱加什么都行!!直接存储过程ok
吹风的兔子 2018-11-24
  • 打赏
  • 举报
回复
我嚼着: 技术面试的话,只看结果,不玩心理 是最好的 你出个题,别人哪怕是用穷举法 在规定的时间内 给完成了 —— 这也是达到了目标。 一个面试,非得搞成个 宫斗剧,谁特么有时间 去分析面试官 是咋想的。 面试官:我第二题就想考 “不要过度设计”。 面试者:面试官肯定不会傻到出这么简单的题。 —— 实际开发中,组长:这个函数不用太麻烦,你 if else 就行。
吹风的兔子 2018-11-24
  • 打赏
  • 举报
回复
引用 10 楼 lr5420511 的回复:
[quote=引用 1 楼 lr5420511 的回复:] 下面我用javascript简单描述一下第一题:

(function(win) {

  win.productPairs = {};

  win.GetProductID = function(productName) {
    if(typeof productName !== "string" || productName === "") {
      throw new Error("window.GetProductID: 参数productName不是一个合法的参数");
    } 
    return win.productPairs.hasOwnProperty(productName) ? win.productPairs[productName] : undefined;
  };

  win.productPairs["硫酸"] = "001";

  win.productPairs["硝酸"] = "002";

  win.productPairs["盐酸"] = "003";

  win.productPairs["氢氟酸"] = "004";

  win.productPairs["硫酸亚铁"] = "005";

})(window)
当商品种类增加时,不用修改原来的代码,只需要新建一个js文档,然后加上一句productPairs["XXXXX"] = "XXXXX";就搞定了[/quote] 来,我来当这个杠精:你增加一个 js文档 —— 你引用这个 js文档的地方 不还得改现有代码。
  • 打赏
  • 举报
回复
想用if else的,都是缺乏项目实战,面对可扩展的需求就直接改到你怀疑人生!
第一题. dictionary< string, object>
第二题. 枚举或者同第一题
ying1234 2018-11-09
  • 打赏
  • 举报
回复
要我做,第1题也用if else 做,你想这么远干嘛,需求变不变以后变了再重构,你想以后封装的可能,看看你领导给不给你足够时间,用最快的速度实现目前的需求是当务之急。大多公司还不是只看你完成的怎么样,哪管你怎么实现的。重构是为了自已少麻烦而重构.
哪怕第一题你用了KeyValuePairs方法实现,我一样能找到喷点。以后商品增加了,你还不是要改KeyValuePairs里的内容。我会喷你没有深刻理解软件设计一个基本原则,开放-封闭原则,既对扩展是开放的,而对修改是封闭.
stevenjin 2018-11-02
  • 打赏
  • 举报
回复
为什么要挖坑呢
eaqpi 2018-08-18
  • 打赏
  • 举报
回复
如果 甲方 要你们写代码,要求么不讲清楚,然后对成品这个不满意,那个不通过,

然后和你说:求程序员能够从普通的描述当中,挖掘那些没有描述到但是有实际存在的东西。

我的问题是:你会不会用你的键盘糊他一脸!
BXS_null 2018-08-08
  • 打赏
  • 举报
回复
引用 62 楼 wanghui0380 的回复:
呵呵,又被翻出来了。还是来看看这个
https://www.cnblogs.com/freeflying/p/9442123.html

这种问题就像上面帖子说的,就是一个“运气”问题。比如我说1加到100,或者我说一个鸡鸭同笼。别人写等差数列公式或者直接写鸡多少,鸭多少。你说我要考你程序,不是考你初中知识。别人要写for循环,你说Y连等差数列公式,二元一次方程都不会写还有脸做程序员?

so,看“运气”,看主考管是2B不
运气的基础上还是要有底子
BXS_null 2018-08-08
  • 打赏
  • 举报
回复
引用 50 楼 darkinger 的回复:
我最近面试了很多人,经常问一个问题,结果好多人都答不出来,其实只要多想想,肯定能答出来的,只是人懒而已,题目如下:

请问茴香豆的“茴”字有几种写法?
emmmmmmmmmmmmmmm,怎么说?
n_e_e_d 2018-08-08
  • 打赏
  • 举报
回复
老板只看最终的功能
Anonymous477 2018-08-08
  • 打赏
  • 举报
回复
引用 62 楼 wanghui0380 的回复:
呵呵,又被翻出来了。还是来看看这个
https://www.cnblogs.com/freeflying/p/9442123.html

这种问题就像上面帖子说的,就是一个“运气”问题。比如我说1加到100,或者我说一个鸡鸭同笼。别人写等差数列公式或者直接写鸡多少,鸭多少。你说我要考你程序,不是考你初中知识。别人要写for循环,你说Y连等差数列公式,二元一次方程都不会写还有脸做程序员?

so,看“运气”,看主考管是2B不


哈哈哈,我喜欢。我也觉得就是看运气。
wanghui0380 2018-08-08
  • 打赏
  • 举报
回复
呵呵,又被翻出来了。还是来看看这个
https://www.cnblogs.com/freeflying/p/9442123.html

这种问题就像上面帖子说的,就是一个“运气”问题。比如我说1加到100,或者我说一个鸡鸭同笼。别人写等差数列公式或者直接写鸡多少,鸭多少。你说我要考你程序,不是考你初中知识。别人要写for循环,你说Y连等差数列公式,二元一次方程都不会写还有脸做程序员?

so,看“运气”,看主考管是2B不
极限战略 2018-08-08
  • 打赏
  • 举报
回复
脑筋急转弯啊、。这类需求。 通常全部 都 丢到字典 缓存 起来的。 。。不知道在考察什么。。。
zbdzjx 2018-07-20
  • 打赏
  • 举报
回复
第一题,当然要用if...else...了。如果客户说是有新的类型,OK,交钱,改程序。如果系统写的太完美了,怎样去收维护费啊!
  • 打赏
  • 举报
回复
我挖个坑,看有多少人跳过去,欸他们怎么都搭桥,跳过去才是最好的解决方案啊!


您说的都对都对都对。
BUCTCLUB 2018-07-19
  • 打赏
  • 举报
回复
引用 50 楼 darkinger 的回复:
我最近面试了很多人,经常问一个问题,结果好多人都答不出来,其实只要多想想,肯定能答出来的,只是人懒而已,题目如下:

请问茴香豆的“茴”字有几种写法?
FainSheeg 2018-01-30
  • 打赏
  • 举报
回复
这真是,你的面试你做主哇。题二你想要扩展也容易,我要是应试的人我就想了,这情况应该是在判断一个客户的性别,那我还得考虑信息采集的时候可能没采集到性别,那我得加一个if sex==""。客户嘛想给你找点事做简直不要太容易。想要扩展你出什么题都能搞出扩展来。
FainSheeg 2018-01-30
  • 打赏
  • 举报
回复
无聊。。。。。。。。
加载更多回复(53)

13,190

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧