1
behappy 2013-07-29 18:54:16 +08:00
我也想知道。 为什么校招算法要考这么难。果然还是我太菜了。
|
2
stackpop 2013-07-29 19:15:08 +08:00 2
校招的时候,楼主所述的公司除了阿里,offer都拿到了。说说个人的一些经验。也面过google us和facebook,虽然最终没有拿到offer。
我觉得如果算法太弱,楼主还是系统地学习和训练一下,去各个OJ分类练习一下各种题目。这个一方面可以帮助你应对各种面试时候碰到这些典型问题和数据结构。另外一方面可以打开思路,让你考虑问题多一些角度。 除此之外,完全新的一些问题(也就是你没有在各种面经以及经典问题中碰到过),你尽量试图去找与他接近的问题的思路,把你一步步解决问题的思路阐述给面试官,我觉得也是不错的,虽然也许你最终没解出问题,个人经验是,很多时候也不会因此否决你。 另外多看面经和经典面试问题,这些是要准备的,很多问题的思路都有用。不是为了碰到同类问题,而是拓宽思路。比如海量数据的题目,没碰到过,要想到确实还是挺难的。 编程之美、以及一些不错的博客、微博上的题目,多看看,开拓思路,积极准备,应对算法和问题求解,基本上也就是这样了。 其实也有算法比较差的进入这些公司的,我觉得主要看你这个人身上有没有足够的亮点让他们觉得你又能力胜任对应的职位。 |
3
linzhi OP @stackpop 恩,感谢你的面试经验。
面试官的问题,我觉得他只是在考察你的思路,除非遇到那种脑残的知道就是知道,不知道就是不知道的题目。对于不知道的问题,主动和面试官交流,一步步分享自己的想法,说不定也能获得面试官的青睐。 最近也在看面经,面试的问题范围还是很广的,即使精简到最少,至少也要准备四部分,比重由强到弱可以看做 语法 > 算法 > 操作系统 > 网络(针对互联网公司),算法在这四个里面,感觉是投资回报率最低的一个(个人看法),有可能花了很多时间看编程之美,各种OJ,面试时候依然表现不好。当然,我不是说把算法放了全心准备别的。假设就考虑国内这些公司,你觉得什么样子的算法水平可以作为一个一般化的标杆呢。 LeetCode可以算一个标杆,实际上我觉得,上述公司的面试官心里的标杆应该比这个低。。。。。 |
4
stackpop 2013-07-29 20:08:18 +08:00
@linzhi 算法和数据结构,就找工作而言,看这个投资回报率绝对最高,相信我。
其它的其实主要还是记忆性质的,所需要付出的努力并没那么大。 互联网公司考算法和数据结构的多点,考纯粹网络尤其是网络工程的不多哈,我觉得可能问你一些socket通信过程之类的和七层协议模型、TCP、UDP协议的基本区别之类的这些常识性的东西 |
5
stackpop 2013-07-29 20:11:11 +08:00
@linzhi 有本书貌似叫code interview,以前扫过一眼,觉得不错。
我觉得百度的面试题属于有参考价值的标杆。 我觉得编程之美上的题目,还是稍微有点不那么实用的,但还是经常碰到,比如我面雅虎时就碰到过。 |
6
linzhi OP |
7
linzhi OP |
8
binux 2013-07-29 20:22:15 +08:00 1
如果你没有正好满足这个职位的技能的话,那么算法是最重要的。
通过算法能看出包括但不限于以下几点技能: 1、程序化思维方式 2、性能判断 3、智商 算法题并不要求你一开始就是对的,能在60秒内判断出大致的方向,并且预估出这个方向时空效率是否可行。在5分钟内抽象出问题本质,给出第一个性能可以接受的算法,**通过和面试官讨论这个算法,理解面试官给出的提示**,调整算法。 而xx语言能力反而并不重要,因为 1、互联网不特别强调一定要用什么语言 2、不一定有机会使用一门语言超过30%的功能 |
9
stackpop 2013-07-29 20:36:32 +08:00 1
@binux 赞同,所以我个人也是非常反感抠出一些非常trick的语言特性来考察人的面试官(当然,假设这个特性并不是这个特定语言和其它语言的重要区别)
|
11
Ricepig 2013-07-29 21:15:31 +08:00
其实这些面试题都是考解决问题的能力
只是在应试教育无比强大的大天朝,演变成现在这样的吧。 当然,切题无数也是提高水平的一种方式。 |
12
zebinary 2013-07-29 22:39:00 +08:00 1
我的算法很烂。
我的优势是代码的阅读理解能力,能够快速阅读现有代码,然后以最小代价新增功能,或定位问题。 我的优势很难在面试时体现出来。 |
16
iveney 2013-07-30 01:41:51 +08:00
最起码要达到10分钟写完红黑树并且一次编译通过!
Just kidding :-D |
17
bsbgong 2013-07-30 08:21:40 +08:00
不上OJ也一样,我就不喜欢OJ。
互联网公司确实是要算法的“熟练度”。 还有TCP/IP原理的“熟练度”。重点是TCP/IP中对一些经典算法和数据结构的应用,为什么在这个协议场景下用这种数据结构和算法来处理,因为这是学算法的目的。比如滑动窗口、UDP/TCP的数据处理为什么有那种区别。 同理还有Unix系统。 基本上互联网公司的算法就是这样:先熟练算法与数据结构,再以算法和数据结构的角度来熟练TCP/IP、Unix。 不过,基本上好的公司,要求还是有点的。一般到3面或这2面的时候会考察到DP的水平,所以这是必须。 说起来的话,还有概率论。 |
18
breeswish 2013-07-30 08:54:05 +08:00
刷OJ对于提升算法很有帮助
一些著名的OJ: poj (EN) BZOJ (CN) (现在应该叫lydsy) vijos (CN) RQNOJ (CN) |
19
cxshun 2013-07-30 09:24:01 +08:00
同样是算法很杯具的人,OJ真心没兴趣刷下去啊,感觉有点枯燥。
话说如果数学没学好,算法有希望搞好吗? |
20
celon 2013-07-30 12:32:53 +08:00
算法看看就行,不用背书一样的死记吧。实际遇到的很多问题不是像学校期末考试那样考你记忆力的。如果某公司面试太注重教科书般的算法而不是你的思考过程,你完全可以忽略它。
|
21
klion26 2013-07-30 12:54:01 +08:00
最近看《Algorithms》,觉得这本书很赞。做题个人觉得topcoder的div II就不错。而且还可以看别人写的代码,每期的都还有官方的解题报告
|
22
sugarit 2013-07-30 13:17:04 +08:00
请问大家一般是在哪里看或者做算法题的?我觉得只有多做题目才会提高吧
|