现在面试都不敢问任何和算法有关的问题了,还容易得罪人。

2015-07-19 16:15:00 +08:00
 jadetang
和我的组长一起面试。第一次面试一个工作两年的人,我问,你能写个函数求第N项斐波拉契数列值吗?最好有代码。我刚说完,我组长说,不用写代码了,就说一下思路吧。
第二次,一个大三的实习生来面,我看他的简历上写了学院ACM协会干事,多次获得校级ACM的奖项。于是我说你能用java写个atoi吗?面试者面露惊讶的表情“现在写代码吗?”我吸取上次的教训,说:“要不你说一下思路也行,就是给一个字符串,转换成整数。”然后那个面试生就在支支吾吾,我就不断的提示,只要求转换成整数,有小数点是非法的,要支持正负号。然后我组长说:“你直接确定一下,你的目标是什么,你要达到什么效果。”
哎。
17657 次点击
所在节点    职场话题
115 条回复
tabris17
2015-07-20 09:46:13 +08:00
@safilar 斐波拉契数列要什么动态规划呀,编译器直接就尾递归优化了,转换成循环也是分分钟的事情啊
mhycy
2015-07-20 09:59:40 +08:00
借楼求问,到底该写精通还是写略懂。。囧
jadetang
2015-07-20 10:03:48 +08:00
@tabris17 首先,java是没有尾递归优化的,其次,斐波拉契数列 f(n) = f(n-1) + f(n-2)是没有尾递归优化之说的吧,求教一下。
jadetang
2015-07-20 10:04:25 +08:00
@mhycy 看你掌握吧,如果你说你精通,但是一个简单的问题,都不知道,那还不如说掌握。
tabris17
2015-07-20 10:08:11 +08:00
@jadetang

斐波拉契数列的尾递归写法

int Fibonacci(int n, int a, int b) {
if (n<=2) {
return b;
}
else {
return Fibonacci(n-1, b, a+b);
}
}

我的意思是,可以尾递归的都能很方便地转换成循环表示。另外Scala支持尾递归的嘛
geew
2015-07-20 10:09:13 +08:00
我觉得看岗位需求而定吧 要是你们招的岗位侧重于需要算法相关的东西那就问咯 如果只是普通的业务之类的东西 其实问问工作上的问题比较好 不过我觉得算法的东西每个程序员基本都要懂一些吧 起码有自己的思路才好
sakeven
2015-07-20 10:16:53 +08:00
@jadetang 斐波拉契数列可以用矩阵快速幂来求啊。。。lg n的算法。。。
wind3110991
2015-07-20 10:20:11 +08:00
这两个都不会写还做程序员- -,我觉得你没错啊
DT27
2015-07-20 10:20:33 +08:00
什么事斐波拉契数列....ACM、stoi又是什么鬼。。。 31l 口中的“末流程序员”路过。。。
jetyang
2015-07-20 10:26:23 +08:00
支持楼主,建议你们leader改成单人面试,这样就不会尴尬了
ChenYounG
2015-07-20 10:43:48 +08:00
感觉我在转向程序员的道路上。。一篇灰暗。。。
meteor
2015-07-20 10:57:17 +08:00
又是面试Java
serverlet 应该叫 servlet
ant_sz
2015-07-20 10:59:56 +08:00
@cxshun 我觉得 atoi 这种东西还是值得考察的。并不是说考 atoi 是因为以后用得着,而是因为写这个可以考察面试者思考问题的思路。atoi 是一个典型的并不需要很多算法知识,但是需要思维特别缜密的函数。我觉得这个在工作中是很有用的,你写一个函数,不能说就常见的输入类型可以处理,遇到比较edge的case就挂了。思维不够缜密的话会经常写出这种有bug的代码,所以 atoi 我觉得是一个好题。
cxshun
2015-07-20 11:10:43 +08:00
@ant_sz 确实,这是一个比较好的考查一些边界情况的题目,可以看面试人员在考虑一些问题的时候是否全面。
5thcat
2015-07-20 11:20:21 +08:00
pi1ot
2015-07-20 12:31:39 +08:00
你这个组长有问题。
winking
2015-07-20 12:42:17 +08:00
支持楼主。atoi只能算再基本不过的编程题,哪有什么复杂的算法。

另外,我一直认为,无论再怎么优化面试流程,如果不写代码,面试结果的准确性偏差是很大的。

可以这么说,面试代码写不好,可能误筛掉一些人才(如google的那个例子),但是更容易识别出大量的水货。
面试代码写得好,基本上招进来的人不会太离谱。
这也是为什么google/ms/amazon等公司坚持面试写代码的原因。
angetchao
2015-07-20 12:48:57 +08:00
网上算法一大堆,还问这种没什么技术含量的东西,开发软件重要的是开发什么功能,而不是一堆数组索引算法。楼主专业点问开发什么软件需要什么功能,那些功能尚未被别人开发。
linxy
2015-07-20 13:27:06 +08:00
我也支持LZ,像这样简单的一些东西,如果是一个科班出身的程序员,在课程上都会讲到的。都是一些必知必会的常识性的问题。
更何况像是LZ面的人,简历上写的如此厉害。
canautumn
2015-07-20 13:39:09 +08:00
感觉面试者不是想简单了就是智商堪忧。斐波那契数列不是用循环就很简单吗,这不应该是一些编程教材学到循环的时候的例子么。当然,要说从这里出发考递归也可以,recursion再加上Memoization都可以考,用斐波那契都是最简单的例子,然后用循环解法从1开始算其实就是动态规划,只不过这个太简单了以至于不像动态规划了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/206743

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX