[7.10实习笔记] 入职手续与培训

决定在博客里记录下每天的实习生活。可能是日常流水,也会有学习笔记。

7月10日流水

7月10日上午起早转公交到海创园。早早来到二层大厅等待领自己的材料。大概9点多领到了一个文件夹和一个文具袋。文件夹里是一大叠卖身契,文具袋里是工牌套、各种笔和本子。然后就进会场坐着等待开始了。

webwxgetmsgimg (1)

一上午的主要任务就是讲解一堆卖身契的签法,以及上交了一张一寸照用于办理工牌。(坑爹的是,按照后来发下来的工牌情况看,乖乖交照片的都是扫描制作的,照片普遍都偏色严重;而因为没带照片交电子版的反而幸免于难…- -#)

中午在海创园挤到爆的食堂吃了饭。只有1小时用餐时间,很赶。

下午是行政,财务,IT,薪酬福利培训。比较冗长。就不多说了。主要槽点在于男性25岁以上就算晚婚了可以享受15天带薪婚假哦~ 唉,首先,我得在25岁前找到妹纸……

结束培训突降暴雨。我们在海创园等到暴雨过去后,终于来到园区了。园区倒是非常漂亮的~ 天猫事业部在4号楼。终于见到了亲爱的师兄师姐们。

webwxgetmsgimg

惊喜的发现隔壁工位刚入职的师姐,也是福建人~口音太亲切了哈哈。因为工牌还没发下来,所以蹭了师姐一顿晚饭。感觉团队还是很融洽的~

对即将开始的实习生活充满了期待啊。

webwxgetmsgimg (2)

实习应聘记(二)——阿里,总结

上一篇博文写了简历撰写,去哪儿笔试和360电面。这篇主要写写阿里的三轮电面(主要是技术面,HR面是第四轮还没接到…),以及自己这段时间的一些总结吧。

阿里一面

一个学姐给的内推机会,我选的岗位是研发工程师。被分到的部门是天猫事业部。

3月6日在线投递简历,没想到3月7日周五下午就接到了一面电话。当时是下午2点多,我正迷迷糊糊准备上床小睡一会儿,突然来了个0571的固话号码,我也没多想就接了起来。对方说是天猫的,看到了我的简历,打电话来“简单聊一聊”。我突然意识到,我去,电话面试。

面试官可能为了打开话题,先问我最近在忙啥。我脑子正糊,说最近在忙着投简历呢,不是各大公司都开始校招了嘛……面试官笑了下,呵呵。突然脑子清醒过来,靠对方想问的应该是学术上在干啥好继续深入问技术问题吧。赶忙说除此之外也在做一个什么什么项目,跟着老师研究什么什么课题云云。我说到了我的可视化项目,对方表现出了一些兴趣,我赶忙趁热打铁说这个项目有在线演示的地址,您是否有兴趣看看?面试官说好,我就把URL报给了他。开始边介绍操作边解释项目(可见,有可能的话,最好能在面试前把能够展示的项目都搭到网上,特别是这种电话面试,隔空交流本就不如当面顺畅,如果能让对方直观的看到项目效果,沟通效果会好很多)。 

面试官问,这个项目遇到了什么难点?我说,是数据库的瓶颈。我们使用的是MySQL,目前三四百个点的规模查询效率还好,但上千个点的情况,查询时间可能达到十几秒。面试官问什么样的查询,我描述了下先是根据输入的关键字找到ID,再根据ID找出直接相关的ID,这样构成一个ID集合,最后查找集合内两两ID是否存在连接,过程类似点→树→图,每个请求要经过这三步查询。  

于是面试官问数据库查询做了哪些优化。我就说了下我是怎么设计的数据库,分了几个表,用类似邻接表的结构来存整个复杂网络,如何建的索引,然后提到了,有一个字段是一个枚举量,只有{“PersonProfile”,”OrgProfile”,”LocationProfile”}三种取值,因此我把类似这种的量直接数值化存储然后建索引,提高了查询效率。

面试官抓住这个,问我为什么字符串数值化后能够提高查询效率?从数据库存储引擎的角度解释……我就懵了,因为我对数据库内部存储的原理并不了解,只停留在使用的层面上。只能猜测:数值和字符串相比,比较与排序的时间都短得多?

显然这不是面试官想要的答案,他提示我,数据库存储引擎用B树或B+数作为存储结构。又是一箭穿膝盖……我对B树和B+树也不了解啊!只好老实说并不是非常清楚B树和B+树……

面试官还不放弃!(或许这就是阿里的面试风格吧… )他继续提示我,就简单把B树或B+数想象成一颗自平衡二叉排序树,结点存索引,叶子要么指向磁盘中存数据的地址,要么直接指向一块存数据的空间(当然这并不是B树或B+树的正确定义,面试官只是想短时间引导我继续思考,大家有兴趣可以去网上查阅B树,B+树,B*树等相关知识的文章 )。我只好猜,数值化后数据小,可以存在直接指向的空间,而不需要频繁磁盘IO?

最后面试官告诉我,和磁盘每次取一个512K的block有关。数据小,一次能拿出的数据就多。字符串有可能一个block只存的下一两个。

而后就是一些常规问题,何时毕业,何时实习,有什么问题想要问他。我问了他天猫对于海量真实用户数据做了哪些挖掘?他大概给我讲了下天猫的挖掘过程:先将用户分类,而后分析同类用户购买商品,而后把这些商品反过来推荐给该用户,这样一个推荐过程。然后就告诉我如果有消息他的同事会和我进一步联系。结束了面试。整个过程大约二十分钟。   

阿里二面

一面结束后,不久就有消息说通过后一周之内会接到二面,而且二面传闻还是视频面试……于是3月10日到16日一整周时间我都过得提心吊胆……真是“又期待又怕受伤害”……可是这周过得风平浪静波澜不惊。就在我都不知道还会不会有二面的时候,3月17日周一上午计算机硬件实验上机,突然来了个0571…于是…二面来了。

本以为电话是约视频面试的时间,没想到又是直接说“聊聊”,看来又是一轮电话面试。跟面试官说给2分钟换一个安静的地方,然后就跑回教室拿上简历又跑到空无一人的楼梯间(电面高发期随身携带简历还是很必要的)。两分钟后面试官的电话就又来了。

这一轮的面试,纯技术问题并不多。面试官上来第一个问题,居然是“说说在大学阶段做过的印象最深的事”。当时又傻了一下(我发现我在电面过程中老是会被面试官问傻…唉…),之前都在准备技术问题,从来没想过会来这一出…我就问是技术相关还是非技术相关的?对方说都行。我想了想就说是校学生会的经历吧,我相信,重要的并不是你加入了哪些牛逼的组织,而是你的加入对它产生了什么改变。在我加入科技部之前,科技部在学生会的地位并不高,属于实打实的辅助型部门。任部长期间我和另外两位部长努力将它由幕后转向台前,在校会历史上第一次成功联合各大院级学生会合办了视频大赛。面试官问,在这个过程中遇到了什么难点,如何解决。我说难点主要在于和院会沟通吧。因为并不是所有院会都乐于与校会合作。解决方法就是清楚的分析利弊,说明他们有我们所没有的资源——能够拉外联,能更好的煽动本院学生参与;而我们有更成熟完善的活动举办经验,更高的活动规格(校级)。合作是一种双赢。解释清楚后大部分学院还是愿意合作的。

又聊到“目前受到的比较大的挫折”,我犹豫了下,回答可能高考算一个吧。当时因为一些个人失误发挥的并不好,对我和我家人都是比较大的打击。面试官问如何恢复。我说当时最紧要要面临的抉择就是是否复读。我父亲是极力反对我复读的。因为他也是一名高中教师,他说复读能够有大幅提分的情况非常少。最后我没有复读,来了西邮。当然我现在回头来看,我不后悔当时的选择。因为首先我读的是我喜欢的计算机专业,其次我有幸进入了西邮Linux兴趣小组,结识了一帮志同道合的朋友,在这个积极上进的圈子里共同努力共同奋斗。现在想来,大学的好坏,甚至师资的好坏,都不是决定性的因素。真正重要的是个人的努力。面试官评价说在我的年龄能有这个想法的不多(心里窃喜一下,觉得应该问题不大了~)。

后来说到项目,面试官问我用C++做了什么项目,我说完全用C++实现的就是简历上第三个项目,用的C++ MFC。面试官问是团队项目还是个人项目?我说是4人团队,我是负责人。于是面试官问我如何分工。我就大概阐述了下因为开发周期只有20天比较紧,所以没有同时分工开发客户端和服务端,而是先集中力量一起攻破客户端,再一起攻破服务端。每个阶段再根据客户端和服务端的模块划分任务。这样遇到技术问题也好沟通。 

后面面试官又问了个很“奇怪”的问题:有没用自己的技术赚过外快。我说因为我对计算机各个方面都挺感兴趣,所以也会一些网页前后端,视频音频处理之类的。之前在导师介绍下帮陕西省互联网大会制作了开场视频;也曾经帮一家物流公司制作了网站前端。当时对方要求网站符合RWD(响应式网页设计)而我不会,所以我咨询了一些学长,选用了bootstrap框架完成,这个框架原生支持RWD。(我说这段其实是想有意展现快速学习能力,不知道面试官有没理解…)面试官问,那些核心技能呢?C++,C之类的。我说没有用它们赚过外快,基本都是用它们在校内做一些项目,并没有用来盈利……

再后来面试官问我,看我的简历应该很有可能是能拿到保研的(简历写得有点…美化自己…大家懂…),对未来是什么规划。我说因为本校并不是很好的学校,保研也只能保本校而我不大愿意在本校读研。如果能有幸拿到贵公司的实习机会并参与工作,可能会选择就业;如果没能够进入贵公司,我最近也在准备托福,可能会选择出去读研,香港等地…… 

而后问我实习希望做哪方面工作。我回答我对数据挖掘挺有兴趣,虽然了解不多。而我知道天猫掌握着海量的用户真实数据,恰好我一面也有向面试官询问天猫的数据挖掘,其实我还挺希望能够在实习阶段接触到相关的业务,不知道有没有机会。面试官说他不能确定但会帮我在评价中注明。紧接着面试官就反问我,如果由我来做天猫推荐算法,我会如何给用户进行分类。这个问题恰好我以前有想过,但并没有验证过正确性,于是我就阐述了下我的思路:首先作为一个电商网站,用户间最大的差异应该在于消费能力。因此先根据消费能力(近期月均消费额等数据)进行分类。然后是性别,再然后是年龄,最后是地域。因为众所周知的“南北差异”等原因我认为地域也会对消费习惯造成影响。这就是我对于分类方法和优先级的想法。

面试过程就差不多结束了,随后就是例行的“何时来实习”,“有什么问题想问我”。这次我问了阿里系各个垂直产品是独立进行开发,还是共用同一个底层架构在上层拉分支?面试官回答是后者。支付宝、天猫、淘宝、阿里巴巴等,底层其实是使用同一套技术。然后就告诉我有进一步消息会有人和我联系。结束了二面。全过程约半小时。

总体感觉,二面并不是技术型面试,更多的是对综合能力和思维模式的考察。尽量在每一个问题上展现自己的闪光点和独特之处就好。

阿里三面

二面结束后,下午我随手打开阿里校招网站,看到我的状态已经从“应聘中”变成了“应聘成功”,顿时非常兴奋!但又不敢确定,难道两轮面试就有结果了?后来内推的学姐在Q上恭喜我终面通过,我一下放松下来,觉得世界都是美好的~

可是……事实证明,我还是Too young too simple。兴奋期还没过,周二晚上在实验室和同学写一个项目的需求分析,突然来了一个010的电话。我想,是不是去哪儿的笔试结果出来了呢?出门接电话,是一个自称北京阿里的工程师打来的。和我预约面试时间。当时我就懵了(对,又一次),因为之前都是杭州的号码(天猫在杭州),于是我问,我已经参加过阿里的面试,请问您是哪个部门?对方反问我参加的是哪个部门的面试,我说是天猫,对方说他也是。他不知道具体流程,HR安排的。我只好和他商量了下,约在3月20日周四晚8点,进行第三轮面试。

因为他自称是工程师,所以我明白,这次一定是一场实打实的技术面没跑了。本来彻底放松的神经又开始紧张,甚至更甚于前,紧张到全身发抖。为何后台显示通过却又加面一轮?是和往年一样借此刷人?还是其他原因?会问什么技术问题? ……这些都没有答案,我能做的也就只有尽力准备了。

周三满课。周四直到晚7点前,我把我的简历过了一遍又一遍,想象他会在哪几个点下挖;准备了自我介绍的稿子;把树和图的常用算法以及时空复杂度快速过了一遍;看了小组群共享里张瑞上传的《十道海量数据处理面试题与十个方法大总结》。这里向大家强烈推荐这篇文章!不长的篇幅能让大家快速掌握海量数据处理面试题的大概套路和可选路线。(膜拜JULY大神!)而事实证明,我在三面中碰到两道里面的类似题目!实战亲身验证效果!

晚上8点15,电话来了……这次的面试官比较常规。首先让我做自我介绍。我大概说了一下事先准备的稿子。因为在自我介绍中提到项目里使用了很多开源软件,因而对开源精神有一种推崇和向往。他就问我,具体用过哪些开源的东西。我说,底层来说,Linux,Apache,MySQL之类的一套;上层的话,做可视化用到了D3.js这个开源库,前端用Bootstrap开源框架,还有一些XML,JSON协议解析也用到了开源的库。他就问,在配置过程中有遇到什么问题吗?我说基本遇到的问题也都通过官方文档或论坛社区解决了,没有遇到什么特别难的问题。

然后他说,看我的简历,技能主要的点在于1、CC++JAVA 2、数据结构和算法 3、数据库 是吗?我说我对JAVA不能算熟练,只是项目有用到,知道语法而已。更多的是用C和C++。于是他问我,C++的STL有用过吗。我非常惭愧的说只用过map之类简单的…他继续问,知不知道智能指针。我就不出所料的被问倒了。只好说不是很了解。面试官就知趣的往下问了。

然后是数据结构与算法4连杀!

第一个问题:给千万级规模整数数组做去重。我一听问题就乐了,和360那个问题简直如出一辙嘛~bitmap搞定。

第二个问题:如何从M个数中找出前N大的数。这个问题在我上面说的那篇十道海量数据处理面试题的博文里有详细解答。主要就是构建一个N个结点的小顶堆,而后将后面的每一个数和堆顶比较,比堆顶大则替换,然后维护堆。这样遍历一次以后就得到了前N大的数。时间复杂度O(M log N)。

第三个问题:给定一个整数数组,找出一段连续区间使得区间内元素和最大。这道题把我卡住了,虽然记得明明是见过的一道水题但就是想不起来方程。我只好先说,最朴素的做法是枚举区间起始点和终点,复杂度O(N^2)。优化方法是动态规划,不好意思有点紧张,让我想一下方程……过了一会儿实在紧张的没思路,只好问能否给些提示。于是面试官说,每个区间都有终点,我反应过来,状态是用区间尾表示。最终在面试官提示下写出了动归方程f(n)=max{f(n-1)+a(n), a(n)}。其中f(n)表示以n位置为区间尾的区间最大和。它有两种情况,要么是f(n-1)连上当前元素,要么是从当前元素重新开始。面试官问时间复杂度和空间复杂度。我说都是O(n)。

第四个问题:第三个问题的加强版。如果第三题是循环数组,怎么处理。这个问题比较简单,我说直接把原数组复制一份接在原数组后面,再用相同的方法做就可以了。时空复杂度不变。

到这里技术面试的部分就差不多了。又问了我是否有参加过ACM竞赛,我说我们学校没有组织组队和集训,所以我只能和同学组队报名参加一些邀请赛。

后面就进入闲聊模式。面试官和我聊学校,聊未来打算,聊出国就业,劝我不要去香港读研要去就去美国云云…总之聊得挺投机。最后例行公事“有没什么要问我的问题”,我之前准备的问题都是关于天猫的,无奈面试官表示他是支付宝的,也在阿里云呆了几年。对天猫并不了解。 面试也就差不多结束了。技术部分大约15~20分钟,非技术闲聊了十来分钟。全程大约半小时出头。

面试结束后感觉不错。第二天也果然接到了经理的电话,告知我3面技术面试都通过了。还有一轮HR不过以他对我的认识他认为问题不大(我才知道好像二面那轮就是这位经理面的),如果也通过就是去杭州天猫他的部门。后面的校园宣讲就不用参加了。听到这里我才终于如释重负……这段经历也算接近尾声。

总结

这段经历让我非常充分的感觉到,平日的积累真的很重要。人品也真的很重要(问到的问题差不多刚好在我的能力范围内,不大擅长的LINUX底层都没问)。如果正面临面试,已经没有过多时间做深入积累或者积攒人品,那就做好能做的所有准备:自我介绍,简历所有可能被问的技能和技术点,数据结构和算法(树非常爱考!然后就是动归!),以及海量数据处理题。 除此之外,在每个面试过程中,尽量在回答每一个问题时能扯到展现出自己的某一个闪光点,并且联系实际例子来证明。 最后,千万千万放平心态,不要紧张。有时候,打败自己的不是难题,而是失常发挥。另外,千万不要轻易放弃任何一个问题而直接说不知道,可以问面试官“能否给一些提示?”只要在他的引导下大概能回答个六七成,留下的印象也会大大改观。而且保不准对方一提示就想出来了呢~

最后,相信大家都会找到理想的实习,所以我也就祝大家早点达成这个成就啦~加油!  

实习应聘记(一)——简历撰写,去哪儿,360

从开始准备简历撰写,到现在基本确定实习岗位,晃晃忽忽过了大半个月。半个月说长不长,说短不短,但绝对是我这20年来最难忘的历程之一。其中经历的心态上的大起大落,只有当自己真的置身其中,才能有所体会。写下这篇博客,一来记录自己第一次应聘岗位的心路历程,二来也是想记录下几轮笔试面试的题目,希望能对各位小伙伴们准备后续面试有所帮助。

简历

我大约从3月1日开始准备简历,当时李力通知3月7号交第一稿,给实验室的学长学姐们修改。开始的几天,完全没有头绪,不知道该从哪里开始下笔。最后胡乱挑了WORD上的一个看着还顺眼的联机模板拿来改。 于是有了现在看来不堪入目的第一稿……(每稿简历的修改我都保留了备份,现在回头看来也算感慨颇多)

简历第一稿

这稿简历当时自认为还算简洁,但却被学长学姐挑出了一堆毛病,才知道原来自己有那么多细节没有注意:

  1. 留白过多,字体太小,颜色难看,不满两页。(简历要么一页写完,要么撑满两页,忌一页半。)
  2. 名字下方的信息,内容不显眼,排版不清晰。HR看到一份简历时,希望能够快速定位到手机和邮箱两个联系方式,应当前置。尤其是手机,应当用连字符分隔(形如:130-1234-5678),避免HR拨错号码,与职位失之交臂。
  3. “目标”改为“求职意向”更妥。
  4. 教育经历前置,将奖学金与专业排名等信息调整到“个人荣誉”中,HR关心的信息是何时毕业。这才是重点。
  5. “技能”中,程度副词由高到低依次是精通,熟练,熟悉,了解。因此简历中尽量使用熟练”和“熟悉”不要使用“了解”。同时,技能应当根据所应聘职位的要求,内容和顺序做针对性调整。忌同一份简历海投所有公司。当然,上面说的“求职意向”也是同理。
  6. “项目”中,把每个项目使用到的技术点前置,单独列出,有助于面试官快速了解项目。 
  7. “个人荣誉”部分,分为竞赛、奖学金、德育三块,把时间、项目、奖项分三列对齐列出,并按时间倒序排列。

大体要点就是这些,都是些容易忽略的细节。在学长学姐帮助下修改了若干稿后,得到了我在后续投递中使用的终稿:

简历2

简历是职位的敲门砖,还是需要花时间反复修改推敲的。我相信这份反复修改的简历在我的整个应聘过程中,起到了很大的作用。

去哪儿

其实严格按时间顺序,我是先接到了阿里的电话一面,然后才参加的去哪儿网笔试。但为了逻辑清晰,还是把去哪儿的笔试提到前面来写吧。

去哪儿网的简历网投其实开始的挺早,但需要在中华英才网上填一个巨繁琐的表格……我当时其实算是相当早开始填写的,但特别逗比的拖到了截止当天下午6点才提交(该死的拖延症),而后来发现去哪儿下午6点20就在官微上发布了“笔试邀请函发放完毕”的微博。于是我妥妥的没有收到邀请……

怎么办?果断霸笔呗!

去哪儿要求携带学生证和笔试邀请邮件打印稿前往西安交大笔试。因为我的确有提交简历,所以也有了一个“简历编号”。于是果断把小伙伴们的笔试邀请邮件拿来,“稍作修改”,自己给自己发的邀请函就火热出炉啦。早上10点,实验室小伙伴们结伴向交大进发。

印象非常深刻当天是3月8日妇女节。恰逢周末,路上堵得不行(中国人总是有把任何节日过成情人节的能力)。 经过一小时的士上的颠簸,即将晕车吐出来的时候,我们终于到了……找到笔试教室,发现门口一堆霸笔的人被拦下HR不让入场。但HR只会对照打印的邀请函,根本没有签到表或联网查询编号来验真伪,于是成功凭借伪造的邀请函混了进去!

当天笔试是开发与测试同一份卷子,开发做1,2,5三题,测试做3,4,5三题。题目并不能算难。

1、要求实现一个函数,对于给定有序整型数组以及一个给定整数,若整数存在于数组中,输出其位置;否则输出其应被插入的位置。例:

[1,2,3,4,5] 4 –> 3

[1,2,3,4,5] 6 –> 5

[1,2,4,5] 2 –> 1

[1,2,4,5] 3 –> 2

这道题就是一个简单的二分查找,时间复杂度O(log N)。当然一般的顺序查找也可以但O(N)解法对于这道题目来说有点太水了。我当时懒得写循环,直接4行递归写完了查找函数,然后再用要求实现的函数调用自己写的查找函数。唯一一点棘手的,是题目给的函数声明并不包含数组长度。如果是java,可以很方便的用.length()方法获取数组长度,但C就无能为力。其实去哪儿内部大量采用JAVA,因此笔试暗示用JAVA解题也不无道理。但因为自己对JAVA并不熟练所以整套卷子仍然用C答。这里我只好随意声明了个长度变量,随意用sizeof赋了个值(当然肯定是没用的)。当时只希望改卷的人不要纠结这种细节。

2、给定两个文件,格式如下:

1.txt

学号  科目  成绩

1001  数据结构  79

1002  编译原理  85

……

2.txt

学号  学院  专业  姓名

1001  计算机学院  软件工程  张三

……

要求输出每个专业总分排名第一的人的姓名,有挂科的不算。

这道题目是三道题目中最为麻烦的一道。我当时的想法是这样的,两个文件以学号为单位交叉比对每一个人并求出总分,需要M*N^2(假定N人M科),显然过于麻烦。因此首先按行读入第一个文件,将学号进行哈希(当时时间紧张直接注释这一思路并直接用f(x)=x作为哈希函数)把成绩加到哈希后总分数组相应元素中。至于挂科,我的处理是碰到<60的单科分数直接把总分减去INT_MAX来将其排出。

而后读入第二个文件,因为输出的是专业排名第一,所以学院信息直接忽略。同样哈希学号来得到每个学号对应的姓名和专业名。而后根据专业(第一关键字)和总分(第二关键字)进行双关键字的快排(只需重写compare函数就可以了,优先比较专业,相同专业比较总分)。这样得到按专业排序,同专业分数递减的结果。输出只需遍历一遍,专业名和前一个人不同的输出姓名,否则continue。求总分O(N*M),映射姓名和专业O(N),排序O(N log N)。因此总时间复杂度为O(N*M)和O(N log N)中的最大值,小于朴素的O(N*M^2)。

C语言实现的代码,整整写了正反两面A4纸……最后时间紧张还把快排失误写错了一点。 

3、给第一题写测试用例。

因为没有专门研究过测试方法,我就按我的思路分了几类:

  • 数组元素数量为奇数
  •     查找数存在
  •         查找数在开头
  •         查找数在中间
  •         查找数在结尾
  •     查找数不存在
  •         查找数在开头
  •         查找数在中间
  •         查找数在结尾
  • 数组元素数量为偶数
  •     查找数存在
  •         查找数在开头
  •         查找数在中间
  •         查找数在结尾
  •     查找数不存在
  •         查找数在开头
  •         查找数在中间
  •         查找数在结尾

共3级12类测试用例。

90分钟,我掐着点做完交卷。 当时感觉还行,至少把能展现的能力都尽量展现了。而后来也成功接到了笔试通过,等待电话通知面试安排的短信,说明结果也是不错的。这场笔试为我树立了比较大的自信。 也让我对霸笔霸面不再有那么强的紧张感。

360

360的职位是实验室学姐帮助内推的,系统部,负责360的底层技术和大数据平台。 当时是在一堂“跨文化交流”课上,突然来了一个010开头的电话,一看来显猜测是360的电面就赶忙出来接了。

这是我整个应聘过程中感觉发挥的最差的一场,以至于面完后我一度认为自己没有通过的希望。

面试官是典型的按简历一条一条向下过的面试思路。他注意到我的获奖经历中有提到ACM-ICPC(虽然只是一个水水的Honorable Mention,可见企业对于ACM竞赛经历是多少看重 ),技能中又提到了算法与数据结构,因此直接从数据结构开始问。

第一个问题,描述一下如何建立一棵二叉树

这个问题我就有点蒙,建立一棵树,这怎么说啊?我回答这要看具体的问题需求还有输入数据的格式,可以按照线性存,用2n和2n+1存左右孩子;也可以按链式存,节点以指针相连建树。

第二个问题,非递归遍历二叉树

脑子里直接蹦出栈了,但是因为电面太突然,脑子一下有点白,愣是没描述清楚具体过程,吭吭哧哧卡了一会儿,才说出先 压树根,而后每出栈一次,将非空的左右孩子入栈。直到栈空,遍历完毕。 

第三个问题,给出不重复但不保证全部出现的1~10亿间的自然数,进行排序。

面试前没有准备大数据类型题目,其实这是一道很经典的题。我当时只能回答,可以用桶排的思想,先将数按高位分为若干个文件,再依次细分文件,外部排序。或者使用外排归并。面试官直接说,直接读内存放不下,外排磁盘IO过高。我想了一下没想出其他方案,最后面试官告诉我用bitmap……这个问题回答的不好让我一下对这场面试更加没信心了。 

后面就是快速过了一下我简历上的每一个项目。当时因为先接到阿里的一面电面,面试官会抓着项目某个技术点深挖,因此当360面试官问我某个项目时,我只是很笼统的概述了一下,等待他问具体技术细节。没想到他竟然就这样很快的过掉了简历上的三个项目,没一个问到技术细节。又问了“何时能入职”等常规问题,而后直接跟我说等待通知,结束了面试。也没问我是否有问题要问他。整场面试只持续了13分钟,出奇的短。这也直接让我对这场面试的结果失去了信心。心情瞬间跌到谷底。 这些题目根本不算难,甚至可以说相当基础,但我却答得不好……

没想到次日内推的学姐就告诉我面试结果不错,通过了,并且没有后续的技术电面,只要等HR和我联系就行了。

这个结果大大出乎我的意料,但也是我通过的第一个职位,给了我很大的鼓励。

下面就是阿里的三轮技术面试了,因为过程较长内容较多,同时也是这段时间的主要内容,后面单开一篇博文写。有兴趣的读者可以继续阅读下一篇博文《实习应聘记(二)——阿里,总结》 

[转]一位ACMer过来人的心得

刻苦的训练我打算最后稍微提一下。主要说后者:什么是有效地训练?

我想说下我的理解。
很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了。其实,这既不是充分条件、也不会是必要条件。

我觉得一般情况下,对于我们普通学校的大学生,各方面能力的差距不会太大,在这种情况下,训练和学习的方法尤为重要。

其实,500题仅仅是一个标志,而且仅仅表示你做ACM-ICPC有一定的时间,

我们训练的目的是什么?我觉得有四点
1、提高编程能力
2、学习算法
,(读书,读论文,包括做一些题目验证)
3、准备好面临将到来的挑战(熟悉题型,调整心态)
4、启发思维。
Continue reading “[转]一位ACMer过来人的心得”