面试的一点感想

最近忙于各种各样的事情,准备英语,看论文,准备GSoC,还有就是暑假实习的面试了,面了好几家公司了,不想记流水账一样写写面经吧,想写写在一个应届学生眼中怎样的面试算是好的面试。

大概总结一下可能面了阿里,腾讯,七牛,计蒜客,网易游戏这几家公司吧,后面还有几家通知了面试还在等。

今天去鹅厂HR面的时候感觉HR姐姐说的就挺有道理的,找工作就像谈恋爱一样的,得看双方是否合适的,有的公司给我的印象很好,即使把我拒了我也不会有什么怨言,大不了校招的时候再试试看,有的公司就给我印象很差,即使给我offer我也要考虑一下(何况人家都没有给你科科)。

本来嘛,技术面试无非就是算法、数据结构、网络、操作系统、数据库,然后加上你做的项目经历。作为一个应届生的话,事实上简历上的那些项目在面试官眼中跟玩具一样,没有什么多大的用处,一个好的面试官要做的是发掘你在这个项目中到底学到了什么,用到了怎样的方法,是否有自己的思考,我觉得这样的面试官才是一个抱着储备人才的目的来面试的。

OK那总结一下遇到的问题。

首先有一个非常重要的问题就是面试时间的问题,这是我觉得很能反映出这家公司在招聘过程中,是否将你放在与公司平级的位置上,是否有一家大公司的风范。好在我遇到的公司基本都会有人先跟你电话或者邮件约一个大家都方便的时间,然后再进行正式面试,当然某家公司除外:)。

首先是基础,作为应届生不管你简历上吹得如何天花乱坠毕竟有些基础还是必须考察的。可能遇到的面试题有

这些东西基本到了,如果你之前没有好好学的话,在网上多找点面经背下来就能应付大部分了,毕竟都是些记忆的东西,这些按下不表。

国内的公司不怎么注重你算法能力,我觉得这相比FLAG之类的公司来说是极好的,因为与其招一帮只会刷题代码都没好好写过的转CS的,还不如招些写过像样的代码的。

那么在项目,或者说所谓“系统设计”题目上,怎样的题目对我这样一个应聘者来说是好的题目的?

首先肯定不是我答不出来的题目(大雾)。大概要满足这么几个方面吧。

大概就是这样。简单的来说,就是给我一个吹牛逼的空间(大雾)。提几个印象比较深的吧。

有一个问题是,linux程序中内存是怎样分布的,为什么要这样分布?首先就考察了linux内存中堆和栈的概念,如果懂的多一点的话,能说出text, bss 字段之类的话就更好啦。当然原因的话我自己也不知道,我就跟面试官说我不知道,但是我可以猜测一下。然后我就从编译链接的角度讲了一下,感觉好像答得还行?反正我这是真的没想过,面试的时候现场就根据自己熟的东西讲讲。

另外有一个问题就是,聊聊编译型和解释型语言的不同吧。首先这个本来就是很开放的问题,那我就选择我比较熟悉的Python GC,这个就有很多可以聊的,也不会冷场。

因为我写过一个简单的OS内核,有个面试官就跟我聊了聊进程切换,因为这些都是我自己动手做过的,那就有印象,即使是细节的地方不清楚,那我就讲不清楚也没什么不好的。只要把大体思路讲清楚,有的聊那就好。

我也有一个跟数据库内部有关的项目,那就被问了,设计数据库这么一个大型项目是怎么进行构思和把控的。那我从ACID四个方面,为了保证一致性,我在哪里用了怎样的算法和数据结构,哪里有怎样的取舍。这样我就有很多可以说的,可以把我的思路和做法都能说出来。有经验的面试官也可以判断你是不是这样做了,有没有这样的经历。

不好的面试题的话,某厂的题目可能就让人很无语吧。

“你会Java吗?”

“只能说会用吧,会用语法,其他就一点都不熟了。”(OS: 我明明投的C/C++)

“我看到你写过Java,那就是很熟咯,我们聊聊Java吧。Java util里面具体用了哪些设计模式?”

….

作为一个好的负责人的面试官,应该做的是根据需要的岗位的要求,挖掘应聘者是否能够符合这个岗位,具体到应届实习,那就是是否有足够好的基础和潜力。

而对于应聘者而言,我觉得最重要的面试技巧就在于,想办法把一场由面试官向应聘者发起的你问我答的对话,转变成和面试官双向的交流(谈笑风生)。根据面试官的思路,主动抛出自己擅长的话题,才是最重要的。

2016年4月21日02点20分于香港科技大学李兆基图书馆

Ivan Yang 21 April 2016
blog comments powered by Disqus