有人提问: 看了很多的面试题之类的,感觉虽然自己数据结构与算法基础知识很扎实,但还是做不出来,所以请高人指点。

 

这个问题看似迷惑, 其实提问的人搞混了两件事 -  “数据结构与算法基础知识很扎实":  知识; “在实际面试中解决问题": 能力。 知识和能力是两码事。 

 

知识和能力的例子1:

知道圆周率pi 小数点后面20位甚至100位: 知识

看到一个不规则的圆柱体, 能估算出它的体积: 能力.  这个时候, 我们用 pi 约等于3 都可以解决问题。

 

知识和能力的例子2:

一些在校学生都有鲲鹏之志,  都觉得自己自己怀才不遇,  流落至此, 一旦逃出樊笼, 定可大显身手。  有些时候, 大家都知道你有某些知识, 都成了众所周知的事实 – common knowledge.

 

p_w_picpath

 

但是你有没有越狱的能力, 和在监狱外独立谋生, 实现梦想的能力呢?

p_w_picpath

 

知识和能力的例子3:

三个代表到底是哪三个: 知识

三个代表如何抓贪官, 平房价, 立法制: 能力。  在其位者为什么做不了呢?  非不能也, 是不为也。

 

扯远了, 扯远了…

 

咱们说什么来着? 

基础知识很扎实 - 但是面试就是做不出来, 怎么办?

BBS上就有一个靠谱的回答:

你好,我以前也觉得自己算法不错,有认真学过数据结构,看过算法的书,但是后来再准备找工作面试的时候一开始遇到问题也发现无从下手,主要遇到两个问题,不知道是否跟你的情况一样。
      一个问题是有些知识在自己感觉里理解了,但是遇到实际的题目要深入细节了,却使用不上这些知识。比如n个元素的数组,取前m大的元素,这个题有一个思路是利用快排的思想,每次partition把数组分成两类:大于partition元素的,小于partition元素的,然后递归地根据两类中元素的数量与m的关系再某一类中再做partition(当然这只是一种思路),我们会快排的算法了,但是如果没有真正理解到它的思想,往往给不出这个思路。所以说在学习算法的时候建议是不要流于表面,要认清算法的本质思想。这里当然推荐看英文版的算法导论,比如我看了里面动态规划的四个题目以后,可以根据里面的讲解举一反三,得到一些规律性的东西,收获颇丰。还有就是邹欣老师主编的《编程之美》,里面的题目解法思路很详细,给人很多启发。
     另一个问题是有些题目会做,但是一提笔写code就遇到障碍,就是不习惯在纸上写code,严重依赖IDE,这个问题只能通过多写多练来克服了。这里我推荐topcoder,这个site上有和北大online judge一样的在线做题系统,你可以在上面脱离IDE而用类似记事本的方式写code,同时里面的题目也有不同层次的,开始可以做一些SRM里面DIV1的简单题目,慢慢的练习使得code一次写完编译通过,然后再开始做难一点的题目。当然也要在白纸黑字上写,我写了五六公分厚的16开纸的code,最后终于在笔试面试时可以写得非常顺畅了。。。
以上是我准备笔试面试过程中的一点经验,最后也拿到了理想中的offer,希望对你能有帮助,欢迎拍砖~

 

下面是摘自 《编程之美》 一书中有关面试的内容

背景

每年从金秋九月起,校园里的广告栏中、BBS上的招聘信息就逐渐多了起来。小飞是一名普通高校的应届计算机专业毕业生,他勤奋好学,成绩中上,爱好广泛。看到身边的同学都在准备精美的简历,参加各种各样的招聘会,笔试、面试,他也坐不住了。他在BBS上看了各式各样的“面经”,也挤过招聘会上的人潮,长叹:“行路难,行路难,好工作,今安在?”

小飞从网上了解到了有关招聘的各种术语,他整理了一个列表:

名词

解释

面经

面试的经历。

默拒

投了简历,进行了面试,但是公司从此再也没有消息,询问也不回答。

Offer

公司给学生发的入职邀请。

群殴

通常指一群人一起参加面试,一般以多对多的形式同时进行,最后总是会有人被不幸淘汰,这一过程就叫做“群殴”。

听霸

凡校内招聘演讲会都出席旁听的。

投霸

凡公司招人都投简历的。

笔霸

凡投出简历都能得到笔试机会的。

面霸

凡参加笔试都有面试通知的。

巨无霸

在招聘过程屡屡被拒、机会全无的,江湖人称“巨无霸”!

霸王面

“霸王面”指没有获得面试资格,却主动找用人单位,要求面试的人,源自吃饭不给钱的“霸王餐”,即“没机会面,创造机会也要面”。

小飞获得了一个在微软亚洲研究院实习的机会,在工作中认识了一位有丰富招聘经验的研发经理。他对经理进行了非正式的采访,希望能得到第一手的“内幕”消息。下面就是小飞整理出来的问答。小飞的问题用Q来标注,经理的回答用A标注。

典型面试

备注:在本文中,应聘者(英文为:candidate, interviewee)指应聘公司职位的学生或其他社会人士;面试者(英文为:interviewer)指公司里进行招聘和面试的人员。

Q: 经理,您好。我就开门见山,能否分享一下当年您第一次去面试的故事?

A: 好,大学毕业后,我进入了学校“产业办”开的公司。有一天,一家美国公司(我们姑且叫它H公司)来招人,这是我的第一次面试。那个公司的代表和我寒暄之后,递给我一道题目,题目大意是“写一个函数,返回一个数组中所有元素被第一个元素除的结果”。我当时还问了一些问题,以确保理解无误,所谓clarification是也。那位面试者简单地解释了一下,然后就在电脑上敲敲打打,也不理我了。我想这也不难,如何能显示我的功力呢?于是我就把循环倒着写 for (i=n; i>=0; i--),因为我当时看到一本Unix书上是这么写的。