我尽量地把整个过程完整地重现出来吧,虽然很多地方已经记得不太清楚了
阿里巴巴B2B,这个是什么公司?其实我没多大感觉
我只知道昨天早上被班上的女生拉去陪她笔试,在华工五山校区34号楼102
晚上的时候,永跃拉我去中大的大学城校区笔试阿里巴巴的研究院
然后当晚就收到了阿里巴巴B2B的面试通知,让我第二天带简历,成绩单,笔过去面试
时间是12:00,对,就是中午12点,怪吧,地点在华工五山校区逸夫人文馆的1楼中厅
同时收到网易邮箱的面试通知,在网易大厦,时间是早上9:00,好在没有冲突
早上一大早就起床,然后刷牙刷到一半的时候,又接到一个电话,是阿里巴巴研究院的
汗,居然14:00在中山大学面试,一直没面试,一来就来三个,XX的
赶到网易,好多人穿着西装在等,汗,貌似就我一个不是穿西装的了...
没多久就开始面试了,可是等到10点多都没人叫我,于是我去前台问了一下
发现,面试时间居然是29日上午9点...我早了一天过来...汗
接着搭2线赶往华工五山校区,去到阿里巴巴B2B的面试地点
工作人员马上让我们填一份表,然后说让我先去吃饭
我跟他们说2点还有研究院的面试,能不能让我先面,我晚点吃也无所谓的
一个工作人员就说把我的顺序调到下一个,再过了5分钟左右,就被叫去面试了,果然神速
走到面试官的台前,他主动地和我握了手,然后就开始看我填的那份表
突然就说:“哇,你是搞ACM的啊?拿了不少奖哦,我们公司内部也搞ACM比赛的。”
我说:“呵呵,ACM的确很好,比较能够锻炼团队精神。”
“是吗?我们公司打比赛都是靠个人的,哪个人牛,一个人就可以搞定全部。”
心里有点汗...继续说“可能比赛的对象不同吧,我们都是大一才开始接触编程的,可是我们的对手中,很大一部分人都已经搞了6-7年的算法了,不配合的话,一个人再强,也是强不过一个团队的!”
这时,他翻开我昨天笔试的题目,看了下我最后两个问答题的答案,这里放题目出来给大家看看:
1.如果你有一个网站,连接着几台服务器,怎么去写一个自动测试的程序去检测每一台服务器或者相关网络设备是否出现问题,且必须是无论你在任何地方,任何时间,你都可以第一时间知道?
我的答案:使用一台主机连接外网,每隔一个很小的时间片就去主动地连接每一台服务器,如果在一段时间内,某个服务器一直都无法连接,则证明它出现了故障,这时就主动地提醒管理员
2.假如有三台服务器,其中一台突然出现了崩溃,这时你要怎么办?
我的答案:先检查连接数,看是否存在黑客攻击,然后检查是否有内存泄露,(剩下的就不写出来了)
然后突然说:“第一题那个,你的想法是好的,可是我们一般不是用这种方法,你想想,如果你有几百台服务器,你一个个地去ping,是不太可能的,我们一般是这样,你需要监视哪些服务器,就让他们主动地来ping你,这样就OK了。”
我说:“哦,原来是这样,XXX(省略N字)”,突然发现我好像不是来面试,而是来听课的...
接着我说:“第二题那个,后来我想了一下,觉得应该先调用一台服务器来备份数据,然后再做链接检查吧。”
他说:“不需要的,根本不需要备份,因为我们都假设服务器是对等的,对等的,你知道吧?(我点头),所以根本不需要备份任何数据,没了就没了。”
我惊讶地说:“那一些用户的重要数据呢?这些也不需要管吗?”
他回答说:“哦,这些数据都是和服务器分离的,那些怎么可能放在服务器上呢,要是那样的话,会很惨的。”
我突然醒悟地点了点头
然后他就开始写对我的评价了,同时一边笑着说:“呃,你先做个自我介绍吧。”
这时我也笑了,居然说了这么久才开始自我介绍,呵呵,然后就balala地说了一通...
接着面试官就笑着问:“能不能说说你ACM主要搞了些什么?”
我接着说:“各种都有吧,零零散散的,其实我觉得很多时候不需要拘泥于算法的本身,很多人和我说他学了什么算法什么算法,我觉得其实这些都不重要,最重要的应该是算法的那种思想,就拿dijk来说,有人说它是图论,也有的说是搜索,或者是动态规划,但我觉得,从另一个角度来说,你也可以说它是一种贪心啊,甚至说,大部分的动态规划,其实都是贪心的一种。很多东西,没有明显的界限的。”
他好像很有感慨地点点头,然后继续问:“你觉得你会搞技术搞多少年?”
我毫不犹豫地说:“十年吧,因为我不确定将来会不会转管理,刚才介绍也和你说了,我比较注重自己综合能力的发展,做过许多学生干部的工作,等我做了十年,达到高级工程师的时候,我真的不确定我会选择哪个方向,是做技术,还是管理。”
他接着说:“其实做技术做到后面都肯定要转管理的。”
我问:“啊?不是管理和技术都分开,有不同的发展方向,我记得你们说都有一个等级的啊?”
他说:“是的,但是你还是得去带领一个团队的,做管理的话,其实很多人与人之间的交流,那些需要看个人的能力,不过有时候,那些东西还是很烦人的。”
我深有感触地说:“的确,所以我也不确定以后会怎么样,但至少还是先搞好技术吧。”
(呃...面到这里,我突然感觉面试官有点眼熟...细看一下,发现原来就是我打开阿里巴巴校园招聘主页的一幅图片,下面一行文字写的是啥?与资深工程师一起成长...汗原来他就是阿里巴巴最资深的架构师之一的那个牛人...无限Orz)
他突然诡异地笑了一下,然后好像很有兴致地看着我,说:“好啦!现在我开始问你问题了”
我也马上回应了他一个笑容,心理面想:Orz,面试终于真正开始了...
“你可以说说为什么析构函数是要定义为虚函数吗?”
“因为这样才可以防止内存泄露,如果基类动态地开辟了内存的话,而析构函数不是虚的,那么派生类就无法自动执行基类的析构函数了,这样就会造成内存泄露,很可能会被黑客利用,不然也会直接导致系统崩溃。”
他满意地点点头,而且明显感觉他对我答的速度有点惊讶...他继续问:“那你能不能和我说说什么是断言?使用断言又有什么好处呢?”
“在Debug版本中,断言一般用来检查传入的函数参数是否存在问题,例如传入指针,就可以用断言去检查指针是否为空,如果为空的话就中断程序,而且生成Release版本后,断言会被自动屏蔽的,非常地方便。”我再次脱口而出...呃...看来在金山的确学了不少有用滴东西
他微笑地点点头,然后再次问到:“能不能和我说说智能指针是什么,它和指针有什么区别呢?”
我想了一下,说:“智能指针我以前用过,但记不太清了,但我知道其实智能指针和普通的指针没有太大区别的,不过智能指针限定了它指向的范围,好像是这样吧,真的不太记得了。”
他笑了笑,继续问:“那你给我说说,为什么不能在创建一个线程的时候,把指向类成员函数的指针传给它呢?”
汗...开始多线程了,越来越复杂,几乎全部都不会了,我很不好意思地说:“呃...这个我不太清楚,我也没有使用过C++写多线程,只用过Python,调用里面的Threading库,而且也没用多线程写过项目,只做过比较简单的练习...”
这时他看了看我的简历,然后突然恍然大悟地说:“哦!原来你是本科的啊!”
狂汗,原来之前他把我当成研究生了?!天啊!!我说:“嗯...是的,我只是本科生而已。”
然后他问:“那么,你觉得你哪方面比较强呢?”
我想了想,说:“算法和数据结构吧,毕竟大学主要都是搞这几个。”
他说:“好吧,那我就问你算法的题目吧。”(囧阿囧,千万表问难题呀,我很菜的呀...)
他顿了顿,说:“问个图论的吧,两个点之前的最短路径很容易求,是吧?(我点点头)那么如果我要求第二短路径呢?而且是不能和最短路径有任何重复的地方的。着是”
我陷入思考...
他继续说:“没事,说说你的想法吧,你用什么方法求最短路径呢?”
我说:“dijk吧,这个问题我只想到一个比较简单的办法,但效率可能不是太高的。”
他说:“没事,尽管说,没问题的。”
我说:“先求最短路径,然后把这个路径的边全部删掉,然后再求一次最短路径就可以了。”
他突然说:“也只有这样啦!你还可以想到其他的方法吗?这样的就是最好嘛。”
汗...我还以为要怎样...我说:“啊?!这样吗...没有更好的吗?我确定不了啊!”我耸了耸肩
突然他问:“如果要你转语言,你怎么看?”
我说:“无所谓啊,我刚刚不是说了吗,我不会拘泥于具体的语言的,最重要的是思想。”
他说:“有人会介意的。”
然后他继续说:“好,下一个问题,有一篇文章,我这里有n个关键字,要你在最短的时间内把所有关键字的位置全部找出来,你给我想一个算法吧。”
汗...这不就是腾讯笔试最后一题,说有很多种脏话,当别人打脏话出来的时候,就要把脏话去掉吗那题的变形么...刚刚等面试的时候一个中大的还和我讨论这题,我说用Trie树,还被他鄙视了,然后他说他也不知道怎么做...5555,这次囧大了
我陷入沉思,他好像看我挺苦恼地样子,然后说:“不用怕,就说你的想法就可以了,这个在世界上都是比较难解决的题目来的,你可以随便说,都没有关系。”
呃...既然这样,我就随便说吧:“呃...我想到的是用Trie树(他笑着点了点头,Orz,运气居然这么好?!),然后把所有的关键字输入进去,完成Trie树,然后每个节点代表一个字,且同时设一个bool来标志到此节点是否形成一个单词,若匹配,则返回该位置,若不匹配,则用类似KMP的方法,看不匹配的地方在哪里,然后在原文那里进行一次跳跃,而不是直接在下一个字那里重新开始匹配,从而提高效率,我只想到这样的了。”
他满意的点了点头,然后说:“嗯,这样的方法不错(Orz,我就说嘛,肯定可以用Trie树的),可是你这是对于C++来说的,C++里面可以动态地创建内存,就是Trie树上的节点你可以一个一个地动态创建,而不会浪费内存,但如果是Java的话就不同了,它是一开始就分配好内存的,这样的话如果你使用Trie树,内存根本不够用,这样你要怎么办?”
Orz,又是Java...我再次陷入苦恼之中...确实,一开始就分配好内存,这样再多空间都不够用的,神啊,快来打救我啊...为了争取多些时间,我说:“呃...我其实不会Java的...”,然后他说:“没关系,我都已经把Java的弊端告诉你了,你直接告诉我这种情况下你要怎么做就可以了。”Orz...看来不能蒙混过关了...苦思冥想了一段时间,我马上缴械投降:“呃,这个我真的想不出了...”,让我以外的是,他马上把草稿纸拿了过来,然后一边画图一边和我说:“你看,这样使用一个双数组的形式,也是和Trie树差不多,一个一个地指下来(我靠!这不是AC自动机吗?!),这样就可以了,这种方法也会浪费一点内存,但是就很少”,顿了顿,他继续说:“你可以上网去搜一下dats,d,a,t,s,dats,关于这个问题有很多种解法。”我迅速地点了点头,面试官大人真的很有当老师的天分呀 Orz
“好吧,那我们进入下一个问题吧,假如有一百万个文件,每个文件内部的内容是有序的,现在我要你把他们合并成一个文件,内容也必须是有序的。要求是时间复杂度在O(n)以内。”
汗...O(n),反复和他了解过题意之后,我再次陷入苦思,然后他又多次让我说说想法,不需要想太具体,最后我说我实在想不到O(n)的了,然后他又直接告诉了我答案:“你知道竞赛树吗?一开始,把所有文件中最小的那个数拿出来,然后用竞赛数的方式就可以确定最小的那个数是多少,然后就把他写入大的那个文件,然后这个数是哪个文件读进来的,就再次在那个文件中再读一次数,然后不断地“竞赛”就可以了,你能明白吗?”我想了想,然后说:“嗯,明白,可是你给的方法好像不是O(n)哦...每个数读出来已经用了 n 的时间了,然后“竞赛”一次就要 logn 的时间...”然后他彻底无语...
接着算法的问题就到此结束了,后来他又问了我关于软件工程、设计模式等方面的问题,然后差不多就说让我去等等了,1面就到这里结束,顺利晋级
这时我赶紧去搞个泡面吃,饿到胃都抽搐了...好不容易买个泡面,然后发现华工热水机坏了,只好厚着脸皮跑进一家咖啡厅,让一个MM帮我打热水,还好里面的MM都很热心,Orz回来的时候,一个HRMM问我刚刚去哪里了,找了我好久都没找到,然后看我拿着杯面,说:“啊?!你还没有吃饭啊?”我说:“呃...是啊,刚刚不是和你说我还得去你们的研究院那里面吗...我以为这里会很快面完,所以就...”,她用手贴着胸口,十分抱歉地对我说:“哦!对哦,我差点忘了,真的不好意思,你再等等吧,刚刚那个面试官在面另外一个人了,等会他们面完,我马上通知你,你赶紧先把面吃完,别饿坏了。”
XXXX(省略N字)
开始2面后,对方是一个胖胖的工程师,给我感觉听和蔼的,刚坐下就让我做自我介绍,呵呵,这次没有1面那么囧了,面到一半才自我介绍...
自我介绍完后,他说:“好!我们先写个程序,你知道字符串比较函数吗?”
我说:“是strcmp函数吗?”
他说:“是的,就是这个,你可以写出来给我看吗?”
然后我就开始写了,写到一半,我说可以假设输入时字符串都非空吗?
他马上说:“要考虑任何输入情况。”
我点点头,接着写程序,strcmp?so easy 啦
写完给他看,他说:“嗯,你的程序基本上正确,不过输入参数这里写错了。”
我一看,巨汗,const char *a 居然被我写成 const *a ,连类型都没指定 Orz
我很不好意思地说:“哦,不好意思,一时比较紧张,连类型都忘了写了。”
接着他开始问我在金山实习的一些情况,我和他说了第二个月在插件组实习
然后他问我写的插件是否有发布,我说有,随着WPS校园版一起发布的
然后他满意地点点头,接着问关于金山给我offer的事情
我说,首先,我必须得对我的家人负责,金山的offer我不得不签
因为我没把握可以找到一个更好的单位,而且那个不是三方
让我意外的是,他没说觉得我是没诚信,反而有点认同我的观点
要知道,诚信问题可是让我苦恼了很久的
接着他就开始问我怎么看待阿里巴巴,然后又问我怎么去看待一家公司
我就说,阿里巴巴改进了人们进行商业活动的方式,极大地推动了电子商务的发展
可以说,国内其实没有多少家公司可以在取得良好业绩的同时
内部的员工都可以明显地感觉自己是在为这个社会作贡献的,阿里巴巴这点很让人羡慕
至于公司,我比较看重的是发展前景,至于薪水我是无所谓的,毕竟刚毕业
(省略N个字)
记得我说道:“就好比网易,就算他给我1W一个月都好,其实这些我都没有太大感觉的。”
然后他的眼睛明显大了一圈,哈哈,虽然没太大感觉
但是如果有滴话,我真的不介意滴!嘎嘎...
不过没打算去阿里巴巴,怎么说也就无所谓了
最后他问我有没有什么问题需要问他的
我就问了他几个关于如何更快地提高自己技术的问题
然后2面就到此结束,顺利进阶3面,哇塞,比1面轻松多了
算一算时间,10分钟多一点而已 Orz
因为3面是HR面,很快就有另外一个HRMM(和之前说的HRMM不同的一个MM)来叫我去3面了,一坐下,她就说:“听说你等了很久是吧?”
我说:“呃,不是,我只以为会比较快,然后可以去研究院那边面试一下而已,我没什么所谓的。”
她接着慢悠悠地说:“你不觉得?其实如果去不了的话,也许会是一件好事吗?”
Orz...我顿时无语...
看到我吃瘪的样子,她继续慢慢地说:“可以和我说说你大学的生活吗?”
然后我就balala地说了学生工作,还有ACM,刚说ACM,她就开始问ACM队的事情了
然后问我说,我认为在ACM收获最大的是什么,我说ACM给我最大的收获时,我认识了一群志同道合的朋友,我知道什么才叫做团队精神,而且在ACM队,我学会了坚持
接着和她又聊起了我们学校ACM的历史,从我大一时的惨淡,到现在,我们师弟们已经杀进World Final了,让我不解的是,她对此好像深有体会的感觉,而且说到这些历史,她居然好像也知道,她还说跟我们ACM的教练韩老师聊过很多东西...Orz
接着她问我最喜欢的是什么公司,我直接说是网易,然后XXX(省略)
最后她问我:“你有什么问题需要问我的吗?”
我说:“你不觉得我签了金山的offer,然后再来这里面试,我的诚信会有问题吗?”
我觉得这个问题必须得问她,可是出乎意料,她的回答是:
“我认为,一个有能力的强者,就应该拥有更多的选择权,这是一件理所当然的事情。”
然后我再问:“那么,假如你给了我offer,我最后又去了网易怎么办?我刚刚和你说过我一直很喜欢网易的。”
她说:“无所谓,你如果找得到的话,我们很乐意看到这样的事情,这更加说明,我们的眼光是没错的,如果你愿意,我们可以给足够多的时间给你,例如一直到招聘会全部结束,让你去不断挑战你认为适合你的公司,等什么时候你决定来阿里巴巴了,你再跟我说,我们就给你offer。”
巨汗,Orz,无语!我惊呆啦啦啦啦!!!好牛叉滴态度呀...
“你还有问题吗?”
我摇摇头:“呃...没有了...”我还有问题吗?!彻底没意见了...
接着她就说要给我offer了...然后说5点才有,结合一下时间
至少要到6点才能到大学城,去中大的阿里巴巴研究院面试了
那边也打了电话过来问我什么时候可以去到
我说这里拿到offer了,5点才能签,可能要6点才回到去
然后听到电话那边的另一个人说:“让他过来吧,没问题”
Orz,通知的可是2点面试,居然能等我4个小时,看来拿了offer的确牛叉
最后5点签offer,然后还做了性格测试,等到5:30的时候我就打电话给研究院那边说我真的赶不过去了,实在不好意思,那边说无所谓
签完offer之后,3面的那个HRMM跟我们说了一下具体的福利,5险1金+商业保险之类的
然后就开始一个一个人地谈待遇了,轮到我的时候,刚过去坐下
她就说:“吴嘉澍是吧?我们商量后决定给你税前nk的工资,你觉得有问题吗?”
我问:“是税前nk吗?”(鉴于不能透露公司的具体工作,n就不说是多少了,大家可以自由想象)
她说:“是的,年底还有3个月的业绩评定,也就是一年给15个月工资。”
我说:“没问题。”
呃...还能有问题么...偶滴神啊...
看来我好像真的得去阿里巴巴了 Orz
我TM的终于遇到赏识偶的公司了...10月28日,It's a nice day!
阿里巴巴B2B,这个是什么公司?其实我没多大感觉
我只知道昨天早上被班上的女生拉去陪她笔试,在华工五山校区34号楼102
晚上的时候,永跃拉我去中大的大学城校区笔试阿里巴巴的研究院
然后当晚就收到了阿里巴巴B2B的面试通知,让我第二天带简历,成绩单,笔过去面试
时间是12:00,对,就是中午12点,怪吧,地点在华工五山校区逸夫人文馆的1楼中厅
同时收到网易邮箱的面试通知,在网易大厦,时间是早上9:00,好在没有冲突
早上一大早就起床,然后刷牙刷到一半的时候,又接到一个电话,是阿里巴巴研究院的
汗,居然14:00在中山大学面试,一直没面试,一来就来三个,XX的
赶到网易,好多人穿着西装在等,汗,貌似就我一个不是穿西装的了...
没多久就开始面试了,可是等到10点多都没人叫我,于是我去前台问了一下
发现,面试时间居然是29日上午9点...我早了一天过来...汗
接着搭2线赶往华工五山校区,去到阿里巴巴B2B的面试地点
工作人员马上让我们填一份表,然后说让我先去吃饭
我跟他们说2点还有研究院的面试,能不能让我先面,我晚点吃也无所谓的
一个工作人员就说把我的顺序调到下一个,再过了5分钟左右,就被叫去面试了,果然神速
走到面试官的台前,他主动地和我握了手,然后就开始看我填的那份表
突然就说:“哇,你是搞ACM的啊?拿了不少奖哦,我们公司内部也搞ACM比赛的。”
我说:“呵呵,ACM的确很好,比较能够锻炼团队精神。”
“是吗?我们公司打比赛都是靠个人的,哪个人牛,一个人就可以搞定全部。”
心里有点汗...继续说“可能比赛的对象不同吧,我们都是大一才开始接触编程的,可是我们的对手中,很大一部分人都已经搞了6-7年的算法了,不配合的话,一个人再强,也是强不过一个团队的!”
这时,他翻开我昨天笔试的题目,看了下我最后两个问答题的答案,这里放题目出来给大家看看:
1.如果你有一个网站,连接着几台服务器,怎么去写一个自动测试的程序去检测每一台服务器或者相关网络设备是否出现问题,且必须是无论你在任何地方,任何时间,你都可以第一时间知道?
我的答案:使用一台主机连接外网,每隔一个很小的时间片就去主动地连接每一台服务器,如果在一段时间内,某个服务器一直都无法连接,则证明它出现了故障,这时就主动地提醒管理员
2.假如有三台服务器,其中一台突然出现了崩溃,这时你要怎么办?
我的答案:先检查连接数,看是否存在黑客攻击,然后检查是否有内存泄露,(剩下的就不写出来了)
然后突然说:“第一题那个,你的想法是好的,可是我们一般不是用这种方法,你想想,如果你有几百台服务器,你一个个地去ping,是不太可能的,我们一般是这样,你需要监视哪些服务器,就让他们主动地来ping你,这样就OK了。”
我说:“哦,原来是这样,XXX(省略N字)”,突然发现我好像不是来面试,而是来听课的...
接着我说:“第二题那个,后来我想了一下,觉得应该先调用一台服务器来备份数据,然后再做链接检查吧。”
他说:“不需要的,根本不需要备份,因为我们都假设服务器是对等的,对等的,你知道吧?(我点头),所以根本不需要备份任何数据,没了就没了。”
我惊讶地说:“那一些用户的重要数据呢?这些也不需要管吗?”
他回答说:“哦,这些数据都是和服务器分离的,那些怎么可能放在服务器上呢,要是那样的话,会很惨的。”
我突然醒悟地点了点头
然后他就开始写对我的评价了,同时一边笑着说:“呃,你先做个自我介绍吧。”
这时我也笑了,居然说了这么久才开始自我介绍,呵呵,然后就balala地说了一通...
接着面试官就笑着问:“能不能说说你ACM主要搞了些什么?”
我接着说:“各种都有吧,零零散散的,其实我觉得很多时候不需要拘泥于算法的本身,很多人和我说他学了什么算法什么算法,我觉得其实这些都不重要,最重要的应该是算法的那种思想,就拿dijk来说,有人说它是图论,也有的说是搜索,或者是动态规划,但我觉得,从另一个角度来说,你也可以说它是一种贪心啊,甚至说,大部分的动态规划,其实都是贪心的一种。很多东西,没有明显的界限的。”
他好像很有感慨地点点头,然后继续问:“你觉得你会搞技术搞多少年?”
我毫不犹豫地说:“十年吧,因为我不确定将来会不会转管理,刚才介绍也和你说了,我比较注重自己综合能力的发展,做过许多学生干部的工作,等我做了十年,达到高级工程师的时候,我真的不确定我会选择哪个方向,是做技术,还是管理。”
他接着说:“其实做技术做到后面都肯定要转管理的。”
我问:“啊?不是管理和技术都分开,有不同的发展方向,我记得你们说都有一个等级的啊?”
他说:“是的,但是你还是得去带领一个团队的,做管理的话,其实很多人与人之间的交流,那些需要看个人的能力,不过有时候,那些东西还是很烦人的。”
我深有感触地说:“的确,所以我也不确定以后会怎么样,但至少还是先搞好技术吧。”
(呃...面到这里,我突然感觉面试官有点眼熟...细看一下,发现原来就是我打开阿里巴巴校园招聘主页的一幅图片,下面一行文字写的是啥?与资深工程师一起成长...汗原来他就是阿里巴巴最资深的架构师之一的那个牛人...无限Orz)
他突然诡异地笑了一下,然后好像很有兴致地看着我,说:“好啦!现在我开始问你问题了”
我也马上回应了他一个笑容,心理面想:Orz,面试终于真正开始了...
“你可以说说为什么析构函数是要定义为虚函数吗?”
“因为这样才可以防止内存泄露,如果基类动态地开辟了内存的话,而析构函数不是虚的,那么派生类就无法自动执行基类的析构函数了,这样就会造成内存泄露,很可能会被黑客利用,不然也会直接导致系统崩溃。”
他满意地点点头,而且明显感觉他对我答的速度有点惊讶...他继续问:“那你能不能和我说说什么是断言?使用断言又有什么好处呢?”
“在Debug版本中,断言一般用来检查传入的函数参数是否存在问题,例如传入指针,就可以用断言去检查指针是否为空,如果为空的话就中断程序,而且生成Release版本后,断言会被自动屏蔽的,非常地方便。”我再次脱口而出...呃...看来在金山的确学了不少有用滴东西
他微笑地点点头,然后再次问到:“能不能和我说说智能指针是什么,它和指针有什么区别呢?”
我想了一下,说:“智能指针我以前用过,但记不太清了,但我知道其实智能指针和普通的指针没有太大区别的,不过智能指针限定了它指向的范围,好像是这样吧,真的不太记得了。”
他笑了笑,继续问:“那你给我说说,为什么不能在创建一个线程的时候,把指向类成员函数的指针传给它呢?”
汗...开始多线程了,越来越复杂,几乎全部都不会了,我很不好意思地说:“呃...这个我不太清楚,我也没有使用过C++写多线程,只用过Python,调用里面的Threading库,而且也没用多线程写过项目,只做过比较简单的练习...”
这时他看了看我的简历,然后突然恍然大悟地说:“哦!原来你是本科的啊!”
狂汗,原来之前他把我当成研究生了?!天啊!!我说:“嗯...是的,我只是本科生而已。”
然后他问:“那么,你觉得你哪方面比较强呢?”
我想了想,说:“算法和数据结构吧,毕竟大学主要都是搞这几个。”
他说:“好吧,那我就问你算法的题目吧。”(囧阿囧,千万表问难题呀,我很菜的呀...)
他顿了顿,说:“问个图论的吧,两个点之前的最短路径很容易求,是吧?(我点点头)那么如果我要求第二短路径呢?而且是不能和最短路径有任何重复的地方的。着是”
我陷入思考...
他继续说:“没事,说说你的想法吧,你用什么方法求最短路径呢?”
我说:“dijk吧,这个问题我只想到一个比较简单的办法,但效率可能不是太高的。”
他说:“没事,尽管说,没问题的。”
我说:“先求最短路径,然后把这个路径的边全部删掉,然后再求一次最短路径就可以了。”
他突然说:“也只有这样啦!你还可以想到其他的方法吗?这样的就是最好嘛。”
汗...我还以为要怎样...我说:“啊?!这样吗...没有更好的吗?我确定不了啊!”我耸了耸肩
突然他问:“如果要你转语言,你怎么看?”
我说:“无所谓啊,我刚刚不是说了吗,我不会拘泥于具体的语言的,最重要的是思想。”
他说:“有人会介意的。”
然后他继续说:“好,下一个问题,有一篇文章,我这里有n个关键字,要你在最短的时间内把所有关键字的位置全部找出来,你给我想一个算法吧。”
汗...这不就是腾讯笔试最后一题,说有很多种脏话,当别人打脏话出来的时候,就要把脏话去掉吗那题的变形么...刚刚等面试的时候一个中大的还和我讨论这题,我说用Trie树,还被他鄙视了,然后他说他也不知道怎么做...5555,这次囧大了
我陷入沉思,他好像看我挺苦恼地样子,然后说:“不用怕,就说你的想法就可以了,这个在世界上都是比较难解决的题目来的,你可以随便说,都没有关系。”
呃...既然这样,我就随便说吧:“呃...我想到的是用Trie树(他笑着点了点头,Orz,运气居然这么好?!),然后把所有的关键字输入进去,完成Trie树,然后每个节点代表一个字,且同时设一个bool来标志到此节点是否形成一个单词,若匹配,则返回该位置,若不匹配,则用类似KMP的方法,看不匹配的地方在哪里,然后在原文那里进行一次跳跃,而不是直接在下一个字那里重新开始匹配,从而提高效率,我只想到这样的了。”
他满意的点了点头,然后说:“嗯,这样的方法不错(Orz,我就说嘛,肯定可以用Trie树的),可是你这是对于C++来说的,C++里面可以动态地创建内存,就是Trie树上的节点你可以一个一个地动态创建,而不会浪费内存,但如果是Java的话就不同了,它是一开始就分配好内存的,这样的话如果你使用Trie树,内存根本不够用,这样你要怎么办?”
Orz,又是Java...我再次陷入苦恼之中...确实,一开始就分配好内存,这样再多空间都不够用的,神啊,快来打救我啊...为了争取多些时间,我说:“呃...我其实不会Java的...”,然后他说:“没关系,我都已经把Java的弊端告诉你了,你直接告诉我这种情况下你要怎么做就可以了。”Orz...看来不能蒙混过关了...苦思冥想了一段时间,我马上缴械投降:“呃,这个我真的想不出了...”,让我以外的是,他马上把草稿纸拿了过来,然后一边画图一边和我说:“你看,这样使用一个双数组的形式,也是和Trie树差不多,一个一个地指下来(我靠!这不是AC自动机吗?!),这样就可以了,这种方法也会浪费一点内存,但是就很少”,顿了顿,他继续说:“你可以上网去搜一下dats,d,a,t,s,dats,关于这个问题有很多种解法。”我迅速地点了点头,面试官大人真的很有当老师的天分呀 Orz
“好吧,那我们进入下一个问题吧,假如有一百万个文件,每个文件内部的内容是有序的,现在我要你把他们合并成一个文件,内容也必须是有序的。要求是时间复杂度在O(n)以内。”
汗...O(n),反复和他了解过题意之后,我再次陷入苦思,然后他又多次让我说说想法,不需要想太具体,最后我说我实在想不到O(n)的了,然后他又直接告诉了我答案:“你知道竞赛树吗?一开始,把所有文件中最小的那个数拿出来,然后用竞赛数的方式就可以确定最小的那个数是多少,然后就把他写入大的那个文件,然后这个数是哪个文件读进来的,就再次在那个文件中再读一次数,然后不断地“竞赛”就可以了,你能明白吗?”我想了想,然后说:“嗯,明白,可是你给的方法好像不是O(n)哦...每个数读出来已经用了 n 的时间了,然后“竞赛”一次就要 logn 的时间...”然后他彻底无语...
接着算法的问题就到此结束了,后来他又问了我关于软件工程、设计模式等方面的问题,然后差不多就说让我去等等了,1面就到这里结束,顺利晋级
这时我赶紧去搞个泡面吃,饿到胃都抽搐了...好不容易买个泡面,然后发现华工热水机坏了,只好厚着脸皮跑进一家咖啡厅,让一个MM帮我打热水,还好里面的MM都很热心,Orz回来的时候,一个HRMM问我刚刚去哪里了,找了我好久都没找到,然后看我拿着杯面,说:“啊?!你还没有吃饭啊?”我说:“呃...是啊,刚刚不是和你说我还得去你们的研究院那里面吗...我以为这里会很快面完,所以就...”,她用手贴着胸口,十分抱歉地对我说:“哦!对哦,我差点忘了,真的不好意思,你再等等吧,刚刚那个面试官在面另外一个人了,等会他们面完,我马上通知你,你赶紧先把面吃完,别饿坏了。”
XXXX(省略N字)
开始2面后,对方是一个胖胖的工程师,给我感觉听和蔼的,刚坐下就让我做自我介绍,呵呵,这次没有1面那么囧了,面到一半才自我介绍...
自我介绍完后,他说:“好!我们先写个程序,你知道字符串比较函数吗?”
我说:“是strcmp函数吗?”
他说:“是的,就是这个,你可以写出来给我看吗?”
然后我就开始写了,写到一半,我说可以假设输入时字符串都非空吗?
他马上说:“要考虑任何输入情况。”
我点点头,接着写程序,strcmp?so easy 啦
写完给他看,他说:“嗯,你的程序基本上正确,不过输入参数这里写错了。”
我一看,巨汗,const char *a 居然被我写成 const *a ,连类型都没指定 Orz
我很不好意思地说:“哦,不好意思,一时比较紧张,连类型都忘了写了。”
接着他开始问我在金山实习的一些情况,我和他说了第二个月在插件组实习
然后他问我写的插件是否有发布,我说有,随着WPS校园版一起发布的
然后他满意地点点头,接着问关于金山给我offer的事情
我说,首先,我必须得对我的家人负责,金山的offer我不得不签
因为我没把握可以找到一个更好的单位,而且那个不是三方
让我意外的是,他没说觉得我是没诚信,反而有点认同我的观点
要知道,诚信问题可是让我苦恼了很久的
接着他就开始问我怎么看待阿里巴巴,然后又问我怎么去看待一家公司
我就说,阿里巴巴改进了人们进行商业活动的方式,极大地推动了电子商务的发展
可以说,国内其实没有多少家公司可以在取得良好业绩的同时
内部的员工都可以明显地感觉自己是在为这个社会作贡献的,阿里巴巴这点很让人羡慕
至于公司,我比较看重的是发展前景,至于薪水我是无所谓的,毕竟刚毕业
(省略N个字)
记得我说道:“就好比网易,就算他给我1W一个月都好,其实这些我都没有太大感觉的。”
然后他的眼睛明显大了一圈,哈哈,虽然没太大感觉
但是如果有滴话,我真的不介意滴!嘎嘎...
不过没打算去阿里巴巴,怎么说也就无所谓了
最后他问我有没有什么问题需要问他的
我就问了他几个关于如何更快地提高自己技术的问题
然后2面就到此结束,顺利进阶3面,哇塞,比1面轻松多了
算一算时间,10分钟多一点而已 Orz
因为3面是HR面,很快就有另外一个HRMM(和之前说的HRMM不同的一个MM)来叫我去3面了,一坐下,她就说:“听说你等了很久是吧?”
我说:“呃,不是,我只以为会比较快,然后可以去研究院那边面试一下而已,我没什么所谓的。”
她接着慢悠悠地说:“你不觉得?其实如果去不了的话,也许会是一件好事吗?”
Orz...我顿时无语...
看到我吃瘪的样子,她继续慢慢地说:“可以和我说说你大学的生活吗?”
然后我就balala地说了学生工作,还有ACM,刚说ACM,她就开始问ACM队的事情了
然后问我说,我认为在ACM收获最大的是什么,我说ACM给我最大的收获时,我认识了一群志同道合的朋友,我知道什么才叫做团队精神,而且在ACM队,我学会了坚持
接着和她又聊起了我们学校ACM的历史,从我大一时的惨淡,到现在,我们师弟们已经杀进World Final了,让我不解的是,她对此好像深有体会的感觉,而且说到这些历史,她居然好像也知道,她还说跟我们ACM的教练韩老师聊过很多东西...Orz
接着她问我最喜欢的是什么公司,我直接说是网易,然后XXX(省略)
最后她问我:“你有什么问题需要问我的吗?”
我说:“你不觉得我签了金山的offer,然后再来这里面试,我的诚信会有问题吗?”
我觉得这个问题必须得问她,可是出乎意料,她的回答是:
“我认为,一个有能力的强者,就应该拥有更多的选择权,这是一件理所当然的事情。”
然后我再问:“那么,假如你给了我offer,我最后又去了网易怎么办?我刚刚和你说过我一直很喜欢网易的。”
她说:“无所谓,你如果找得到的话,我们很乐意看到这样的事情,这更加说明,我们的眼光是没错的,如果你愿意,我们可以给足够多的时间给你,例如一直到招聘会全部结束,让你去不断挑战你认为适合你的公司,等什么时候你决定来阿里巴巴了,你再跟我说,我们就给你offer。”
巨汗,Orz,无语!我惊呆啦啦啦啦!!!好牛叉滴态度呀...
“你还有问题吗?”
我摇摇头:“呃...没有了...”我还有问题吗?!彻底没意见了...
接着她就说要给我offer了...然后说5点才有,结合一下时间
至少要到6点才能到大学城,去中大的阿里巴巴研究院面试了
那边也打了电话过来问我什么时候可以去到
我说这里拿到offer了,5点才能签,可能要6点才回到去
然后听到电话那边的另一个人说:“让他过来吧,没问题”
Orz,通知的可是2点面试,居然能等我4个小时,看来拿了offer的确牛叉
最后5点签offer,然后还做了性格测试,等到5:30的时候我就打电话给研究院那边说我真的赶不过去了,实在不好意思,那边说无所谓
签完offer之后,3面的那个HRMM跟我们说了一下具体的福利,5险1金+商业保险之类的
然后就开始一个一个人地谈待遇了,轮到我的时候,刚过去坐下
她就说:“吴嘉澍是吧?我们商量后决定给你税前nk的工资,你觉得有问题吗?”
我问:“是税前nk吗?”(鉴于不能透露公司的具体工作,n就不说是多少了,大家可以自由想象)
她说:“是的,年底还有3个月的业绩评定,也就是一年给15个月工资。”
我说:“没问题。”
呃...还能有问题么...偶滴神啊...
看来我好像真的得去阿里巴巴了 Orz
我TM的终于遇到赏识偶的公司了...10月28日,It's a nice day!