一次去初创小公司的面试总结与感想
给大家分享一下,最近的一次面试经历。
先说说环境情况,
我在广西-柳州,一个小城市。无业在家大半年了,一般没事有什么面试通知都会去看看。这个不是说要找工作。抱着交流和扩展世面的心态,多去走走看看,也是有益的。
由于简历长年都挂在58同城上,所以,偶尔会有一些面试通知。本地的某个公司在58和智联招聘上看到我的简历后,就给我打电话了。我决定去看看。但对方在电话中,补充说道:“来面试时,也带上你的简历。”听到这句话,当时就有点纳闷:我的简历在58同城上不是写得很清楚了么,简历上有很多关于自己做过的项目的下载地址,发表过的原创技术文章的地址,和自己项目视频演示的优酷、土豆网地址。那么多URL,我打印出来的话,你还要输入到浏览器中去看,你自己不麻烦么?不仅你麻烦,我也麻烦,我还要去找个打印店把简历打印出来。之前接触过的很多公司,都要求在网上传简历(QQ,或者是公司官网的简历上传入口)。虽然想不通对方为什么要我的简历的打印版本,为了表示对对方的尊重,我照办了。
那个公司地址还是蛮难找的。由于是和一个朋友一起去,在2个人的合力作用下,还是给我们找到了!像我这种比较宅的程序员,出去找什么地址的,最不擅长了。
见了BOSS后,他让我坐下。我原先选择了一个更加靠近他的位置,他示意让我坐到他对面。呵呵,我比较放松的,递交纸质的简历后,一屁股坐下翘起二郎腿等他发起“第一轮进攻”。BOSS煞有介事地问我了一些问题,并且一面问一面在纸上用笔来记录。这。。。 。。。让我有点诧异,之前从来没见过摆这架势的。那些问题是:年纪多大,婚姻状况 等。其实,这些信息,不管是我网上的简历还是打印出来的纸质简历都有的,不知道为何对方还要用手抄一遍。这些问题都如实回答,但有一个问题我始料不及,“你的座右铭是什么?”之前从来没人问过我这问题,一时语塞。
聊了一会后,来了一个人,坐到了BOSS旁边,我坐他们对面,有种1 VS 2的感觉。BOSS介绍到,他是技术主管。主管坐下后,一面听我和BOSS的谈话一面翻看我的纸质简历,时不时插入几句对简历的看法的话。
主管坐了很久“冷板凳”后,他决定夺取场面的控制权。在我和BOSS聊得Happy时,他发难了:“来!现在,我来问你一些问题!”我被一下子打断,有点小吃惊,居然有问题来问我,是怀疑我的简历真实度还是要闹哪样啊?同时心想:”来吧,寡人接受你的挑战,你先手,出招吧,少年!“
他的问题,着实让我汗了一把。我觉得奇怪的是,他问我问题时,是用一种我不太听得懂的方言来问。我刚进门时,是用普通话。后来发现BOSS是本地人,我们就用了本地的柳州话来交谈,等主管问问题时,又用主管他自己的方言来问。我勒个去!为了表现哥的专业和职业态度,我决定用普通话来回答。尽管,他问问题一直用与气氛不太和谐的”方言“。当我“语言转换”时,观察到了BOSS的面部表情,他眼睛有点稍微放大,估计是被我的职业态度给震撼了。
问题1:说说c#的反射。我回答:“虽然我有项目是用c#写的,但从来没用过反射。我的主语言是C++,通常我们需要编写具备高可移植的代码,如果某个特性是某个语言特有的,为了以后移植考虑会避免使用。我们一般遇到的难题,都是算法问题,反射估计只是一个概念。由于之前的项目这个技术不是必须的,所以没去关注。”
问题2:说说你对线程的理解。其实,这个问题,我都没太听得清楚他到底是在问什么。我表示我不太听得清楚,要求他再重复说一遍。这个倔强的主管大哥坚持用方言。我不太明白,他到底是要求我回答关于线程的使用经验,还是要我解释什么是线程。看到他坚持用方言后,我也不太好意思要求他重复第三遍。如果,他的意思是问我后者,我只有一个想法:“大哥,您确定你看了我的简历么?那么多项目经验,在CSDN社区发过3篇原创技术精华文章,怎么问我这个问题。”因为我不太确定他到底问什么,所以,我决定对线程进行广义的回答:“线程我主要是使用在分治算法中,像分治算法这种天生气质就符合用线程来进行加速优化。同时也可以使用在任务可以分解成更小的子任务的情况。比如:分块下载上传(也就是多线程下载)。”说完,我观察他反应,他没反应。然后,我继续说:“线程使用有线程同步的问题,减少编写错误的线程代码关键是,识别哪些变量需要同步,同步就用互斥量互斥一下就好了,基本上,搞清楚需要同步的地方,在一般情况下,就没什么问题了。”后来,他好像要我解释线程是什么的概念,我还真的一下子说不出线程是什么,因为线程实在是太常用了。就像别人问我为什么会骑单车一样。学骑单车是很久远的事了,骑单车已经成为了本能,不认真思考还真的说不出是怎样保持平衡的。1+1为什么等于2?不知道。只知道1+1就是等于2!要解释的话,可能要请陈景润来。于是,我随口回答:“线程就是线程啊,就是这样呗。”
问题3:说说委托。我同样没料到他会问我这个问题——实在是太初级了。我怀疑对方是考我的表达能力而不是专业能力了。我回答:“我的主族是:C++!C#的委托类似于C++的函数指针,但更像是C++ Boost库中的模板函数对象。”因为,主管只会c#,所以,我觉得他可能没听懂。继续用通俗的说法补充到:“一个函数赋值给一个委托变量后,调用这个委托等价于调用那个函数。”我表达力确实有限,要解释委托只能说到这份上了。- -
问题4:说说事件。日了,写过GUI程序的有可能不知道事件么。MFC中的消息,QT中的信号/槽,Cocos2D-X中的CCNotificationCenter 等等。我想都没想就说:“事件通常用来实现观察者模式。”然后说了一些观察者模式的理解。后来,我发现主管没反应,可能是我回答走题了,于是乎回到描述事件本身上。其实,事件一句话就可以说清楚,那就是:“事件是一个委托链而已”。我回答:“可以用ArrayList 或者是保存委托变量的泛型List容器来模拟事件,事件是委托的集合,它的本质就是这样。调用一次事件,就相当于一起调用了那些所有加入到容器里面的委托。”
问题5:关于大数据处理。这个,我没做过。我之前都是做精巧的小玩意或者是某个系统的一部分。但我还是尝试做了一下解答,说说自己的思路:“千万级条数记录的系统,也许应该雇佣一个或几个专门的程序员来设计。什么分表啊,把一个大表拆分成多个相对较小的表用多机分布式来查。”当然,我说这些,只能是个人牛逼了。我不是这个领域的人,只能从理论上泛泛而谈。
问题5,6... ...等等 就不说了。多数都是些很基础的问题。我原先预想,如果有问题要问我的话,可能是关于3D算法 或 验证码识别中的各种设计问题(定义特征,消除噪点,分类器等)。
技术问题问完后,和主管又聊了下关于人与项目的关系的问题。他表明,他希望找来的人,上来就能做出一个成熟的产品,在2,3个月内。他的意思大概是这样。我和他的观点不同,我表明,这一般是不可能的,除非是同行业跳槽过来,把在原公司已经开发成熟的产品和团队直接带过来的人。现在,一般是用敏捷开发方法来做,就是认清现实情况,不断探索,重构。在开启一个新项目时,由于对那个项目的业务逻辑本身认知不够,第一版程序有不足是很普遍的。然后随着开发人员对项目本身的熟悉和认知的提高,可以不断升级和在内部代码重构来到达产品成熟的目的。这位主管呢,听到我的说法后,说:“从公司的角度来看,一次性做好可以节约成本。”我去,这位哥们显然不把现实放眼里。
最后,和BOSS聊了一些,给他玩了下我做的一个手机游戏的Demo,觉得差不多了。就走了。这个公司并不是做游戏的,而主要是做一些网络和数据分析的。来这场面试,我是抱着大家交流、聊天和见世面的心态来的,毕竟在家久了也很烦闷。
面试的结果是他们对我还算满意,但我对他们不算很满意,主要是钱的多少 和 兴趣上面)
作为一个合格的程序员,总结力是必不可少的!总结这次面试经历,双方都有问题,先说说他们的。
1.对面试者不了解,总是希望见面后通过交谈来了解。
见面的好处是能够直观地感受对方,但见面交谈的时间是有限的,能了解到的也是表面。我的简历有很多URL,通过这些URL看看我的视频,下载看看我的作品,看看我的文章,再来约我面试比较好,至少能够全面了解一下我。这场面试就让我感觉,网上简历什么的,他们都没有看,直接约见面来谈。简历见面时再看。见面的那短短5分钟看简历,能了解我是一个什么情况么?问的一些不匹配的面试题也是浪费时间。
2.BOSS和主管2个人坐一边上,同时和我谈话。
这2人还真是心有灵犀一点通,当BOSS和我说话时,主管也同时和我说话。2个人的声音同时重叠在一起向我耳朵传来。我是单线程系统,无法同时处理2个同时到达的信息。所以,一些情况下,他俩要么不说,要么2个人一起说,而我根本不知道他们在说啥。所以,显得有点木讷。现在想想,BOSS的情商还是很高的,在主管和我说话时,他一直保持沉默。而BOSS和我说话时,主管随时会插入进来。哎,主管你要把“线程同步”运用在现实中啊!——当BOSS和我说话时,空间是互斥的,你得等他访问完我这个人形变量后,你再进入!
3.使用方言。
我后来问了BOSS。主管是哪里人?答:重庆。魔兽3 WCG世界冠军Ted也是重庆人,怎么人家能把普通话说得那么好?不会说普通话还出来混个毛啊。我听他说的好像也不是重庆话,估计是重庆人学说我们本地的桂柳话。
其实呢,作为职业人来说,说普通话是一种态度,从某种意义上来说也体现了礼貌。以前我在的某个公司,有100多人吧。虽然大部分都是本地人,但同事之间都还是说普通话,主要是为了照顾一些外地来的同事吧。BOSS最好不要带头说地方话,这样显得很小气,很地域化。
下面说说我的不足。
1.某些预料不到的问题会有点慌乱
比如,BOSS问我座右铭的时候。我迟疑了一会。然后,支支吾吾地答:”这个我一下子想不起来,但我看过很多Bill Gates , Steve Jobs 的传记,我比较喜欢 Bill Gates , Steve Jobs 这类人说过的话。“其实,这个回答说了等于没说,这些名人到底说过了哪些话,也没能说出来。
回家后想了下,是应该要有个座右铭来突出我的个性!下次,再有人问我这个问题,我会用英文说:”If u dont try,u’ll never succeed!”(这句话是张亚勤说过的)
2.有某些太过于放松的姿态
比如,面试时一屁股坐下来,身体就后倾,翘二郎腿。我也不知道这样合适不合适。我发现一个心理暗示,当你坐得很直时,你可能会不自觉地变得紧张或者很正式。如果,你姿态放松,那么,你的言谈也会跟着放松。
3.口头表达力不够好
有些很简单的东西,用口头来表达确实有点糟糕。我普通话也不是很好。我发现我有个特点,就是用书写的方式来表达会比我的口头表达精确得多。加上我说话又有点急比较快,这个可能是还有点紧张的原因,或者是缺少和别人沟通造成的。
比如:被问到线程是什么。我当时回答:“线程就是线程,就这样呗。”其实,当时我也是一下子蒙了,要解释好这些基础的东西也不容易。我这个回答,很容易给别人一种菜鸟或者不负责任的感觉,很烂。用我自己的话来解释线程的话,是这样:”线程是一个操作系统的概念,用于多道程序中,在多核CPU的机器上,可以真正实现同时执行的效果,不同于串行,线程是并行的。比如:我先吃完饭,在去做作业,这个是串行执行。如果我一面吃饭一面做作业的话,就是并行执行。并行效率高于串行。通常线程用在耗时较久的操作上,比如:一些GUI界面程序,要访问数据库或者网络什么的,为了不卡住界面造成无响应的用户体验差的情况,可以开个线程来做载入数据什么的事。”
以上关于线程我自己的理解,可能不精确。但至少比“线程就是线程”这样的说法好。临场应变的时候,脱口而出的表达肯定不会如安静仔细思考后的好。所以,如果以后遇到这种情况,我打算这样做:拿出笔和纸,在纸上写出我的答案,然后,我本人再念出来。
一些程序员不善于表达。其实主要是练得少的原因。与别人的谈资话头少,和经历见识知识面有关。其实我就是这样一个人,整天猫在家编程,气质什么的差得很,一看就是一个屌丝样。有时看一些视频访谈时,我会佩服主持人的伶牙俐齿,幽默风趣。
所以,哥要改变现状!以表达得形如流水为目标。尽力给对方一个良好印象!
最近也发现全身心地投入到写代码中,并不是很快乐。打算培养一些其他的实用爱好,比如:烹饪 什么的。
明年打算去深圳发展发展。
既然,面试的过程我都总结了,也附上我的简历吧。配合本文来看!
地址是:
http://jianli.58.com/showresumeinfo/?rid=68732005923073&qq-pf-to=pcqq.c2c
之前没做过游戏开发。现在想转行到游戏开发上,有没有大牛给一些建议?