我应聘的职位是“软件研发工程师”。到了面试地点,我选择了Java语言(有对应的面试官)。然而后来进行了一次交叉面试,他被推到了“数据研发”的位置。一方:首先自我介绍。我:“做过两个项目,写过几篇论文和专利,也参加过阿里巴巴大数据竞赛,同时出于个人兴趣,也看了一小部分HDFS的源码和理解了HDFS,核心思想是实现一个非常简单和不完整的HDFS。面试官1:“说说你写的其中一篇论文的创新点?”我:“我写的文章或专利,主要遵循一个原则:将现有的理论或模型应用到新的场景中。因此,它们都偏向于应用。我们把重点放在这篇论文上。首先,让我们从奇异值分解开始。。”大约几分钟后。面试官1打断我:“你做的东西都是偏向数据挖掘的,为什么不投给数据挖掘?”我:“因为按照我的理解,数据挖掘的定位需要对机器学习算法有深入的研究,但是我做的是偏向于数据挖掘算法的应用,所以我想投入研发,偏向于数据挖掘和分布式方向,从基础做起。”面试官1:“其实你的优势就是你做过数据挖掘。这样吧,我先找一个数据研发的面试官跟你面试,以后来找我。”虽然也系统学习过机器学习算法,但是接触时间太短(几个月),研究不够深入,比赛中用到的算法只有几个:LR,RF和GBRT。自身的强项在于在对数据的理解、特征的提取、算法的应用上。算法推导过程不是很清楚,只是了解它的思路。怕问的太细,所以不是很愿意。不过,在在面试官1的坚持下,他终于同意了。看到第二位面试官的牌子上写着“数据研发”,我稍微松了口气,还好不是“数据挖掘”,今年招的“数据”还是蛮多的researchanddevelopment”岗位,很多去小微金服。面试后我觉得“数据研发”的职位要求是:掌握基本的SQL语句;因为有一道笔试题。我觉得阿里应该用自己的ODPS-SQL(类似Hive)来进行数据研发。这个平台虽然比较复杂,但是面试的时候要求不高。只要掌握基本的内置函数和SQL语句:select,groupby....比赛期间写了几万行SQL代码(去重后几千行),从来没有用过索引和视图;我经常使用内置函数,偶尔使用UDF(用户定义函数)。但是,编写的代码不包括索引、视图和UDF。我没有测试优化(其实我也不懂)。有数据研发的相关经验,看来面试官很看重这一项。我参加了阿里巴巴大数据大赛。对数据研发有一些自己的看法。这个很重要,一定要想清楚。我主要讲的是比赛中的模型:数据预处理->训练集、预测集->特征提取->进一步处理->正负样本比例->训练->预测。当然如果能写MapReduce就更好了。阿里的平台提供了MapReduce,工作中估计会用到。这里有详细的介绍:GettingStartedwithSuperLong-windedODPSMapReduce然后开始和第二位技术面试官交流。面试官2:“让我自我介绍一下。”我:“刚才介绍了其他的经历,那我主要介绍一下数据研发相关的经历吧。”然后,简单说一下我参加的阿里巴巴大数据大赛。面试官2:“好吧,我们先做一道题。”面试官给了我一道SQL题:给了一个表,一共有四列:user_id,brand_id,time,cnt(花费的金额)。从此表中选择用户B为每个品牌购买的总金额。我看到的时候有点小欣喜,这和我在比赛中做的太像了。和面试官简单沟通后,我很快就写出来了;但是还是怕出错,所以查了半天才给面试官看2.顺便说一句,如果需要处理字符串,我会用ODPS-SQL中的UDF。面试官看了看程序,什么也没说就放到一边了。后面主要讨论阿里巴巴大数据竞赛:我做了什么,用什么模型和算法做的,准确率是多少。(这次讨论花的时间最多)还好我主要讨论了对业务和数据的理解,并没有深入讨论数据挖掘算法。讨论进行得很顺利。结束后面试官2把我带回面试官1,回来后继续和面试官1讨论,主要是我写的论文。由于总结了之前写的论文,思路很清晰。并谈了写论文的体会和收获。总之,第一天的面试官很亲切,谈话很愉快。再提一点:个人认为面试官主要有两种。一种是用技术来问你死活,以此来判断你掌握技术的深浅。另一种是在简单的技术问题之后,让你表达,引导你发言,看你的思维、表达能力、个人观点等综合素质。当然,如果面试官看到你不善于表达,就只能一直问你问题了。幸运的是,我遇到了第二种面试官。面试就像聊天一样简单。最终还是顺利通过了。两侧:两侧面试官是做Java研发的。一开始还是讨论竞争和分配。后来被问到一个关于大文本处理的问题“在大文本中查找Top3字符串”。这个我没研究过,不好回答。Java问题:“请介绍一下JVM的结构。”网络题:“TCP/IP的三次握手和四次握手”。然后,就开始问关于JavaWEB的问题。我刚刚了解了这方面。面试官3说:“没关系,就说说你自己的理解吧。”面试官3:“淘宝用户数据(购物车……)存在哪里?如何满足高并发?”这方面我不懂,面试官让我自由发挥;答案不好。面试官3:“那我们问你的算法题,输入两个整型数组,返回一个数组:两个数组中的公共值。”其实,这时候,我有点迷茫,也有点紧张。我是从快速排序算法开始写的,用的方法并不完美。面试官不是很满意。等会儿吃午饭的时候,我想排序完O(nlgn),然后O(m+n)就好了。在与他人讨论时,我认为对于一些特殊情况;其实这个可以用散列的思想来实现。复杂度O(K),K是数组中的最大值。面试官3:“测试你对递归的掌握程度。写一个函数,输入int类型,返回整数反转后的字符串。例如:输入123,返回“321”。必须用递归,不能用全局变量,input必须是一个参数,并且必须返回一个字符串。”当时只是倒序输出(print),并没有倒序返回字符串。吃完午饭,在和别人讨论的时候,突然想到了这个用二叉树递归解决深度和叶子数等问题的思路:每次返回的时候加上最后一个返回值。这时候面试官不是很满意,正好是吃饭的时间。然后,面试官3说:“这样吧,我帮你找个数据研究员,你再去面试,让他做评估。”他虽然不情愿,但还是同意了。毕竟这一次的表现太差了。避免在下午问同样的问题。午饭后,与其他同学讨论算法题。然后是面试官4,目前还在第二阶段。面试官4:“就当我们在聊天,讨论技术问题吧,说说你的相关经历吧。”这样会放松很多。和之前一样,把无关紧要的经历用一句话概括。***关注阿里巴巴的大数据竞赛。面试官4对比赛很感兴趣,就把比赛从头说到尾吧。它主要讨论模型、算法和特征。专注于自己对数据的理解,得到面试官的认可4.我说:“比赛的时候,我们每天都要盯着数据去提取特征,如果只把这个看成一个数字,真的很无聊但是,我们会把它当作一个用户行为来对待和分析,这样就变得很有趣了,比如我在数据清洗之后,我看到某个用户每天都点击某个品牌,他就是不买很明显,这是个屌丝,有人不停的买,明显是高富帅。”总之,聊聊游戏和自己对数据的理解,非常轻松。***,顺利通过。三面早就听说,很多今年进入HR面试的人,淘汰的可能性还是很大的。所以,要小心。后来才知道,不一定是HR做的。因为,过了好几轮面试,面试官还是会商量要不要录取;如果确认录取,则给出Offer。有些被辞退的人,可能是因为过往表现不好被技术面试官拒绝了,而不是被HRjj拒绝了。听说过了HR,数据挖掘和算法的应聘者比较多;对于其他职位,他们很少被拒绝。不过面试官人很好。当我们聊天时,我开始毫不犹豫地谈论所有事情。我们谈到了:如何提高自己的技术能力;自己的优点和缺点;阿里巴巴的名字等等。在面试的过程中,我主要强调了两点(用自己的经验):我喜欢和别人讨论问题,这样总会有意想不到的收获。此外,它还列举了项目、比赛和日常生活的例子。我什至说我刚才没有回答技术面试官的问题,但是在和其他面试的同学私下讨论的时候(不知道),突然豁然开朗。把工作当作生活的一部分,快乐地工作。这主要讲的是我如何在比赛中把一些无聊的东西变成有趣的东西。***,面试官问我还有什么问题吗。我说:“我参加比赛的时候加入了阿里旺旺的群,里面有很多内部员工,通过他们我对阿里了解很多,所以没什么好问的。”面试结束,结束。出来后,我赶紧查看自己的状态“三面通过”;过了一会儿,突然变成了“采访结束”。听别人说,面试结束就是挂了。于是,我问了外面的工作人员,他们说:“这就是回去等通知。”HR面试完后,状态是“三面通过”、“四面通过”、“面试结束”等。这个是正常的。因为他们还需要根据之前的综合表现进行筛选。不是说“面试结束”没有拿到offer,也有可能收不到。后来听说有的甚至“四面通过”也拿不到offer。回到学校后,直到凌晨三十八点才收到短信。然后,兴奋的一夜。总结:基础扎实的,让面试官随便问。但是,我认为任何人都可以不问,因为他们想通过这种方式了解您的掌握深度。对我来说,基础知识一般:数据结构,排序算法和递归,会写;操作系统,了解一些基础理论;计算机网络,了解一些基本概念和理论。只能充分发挥自己的竞赛、项目、论文和专利的优势。在面试的过程中,抓住面试官的兴趣点,把面试官带到自己的优势是非常重要的。当然,如果你的强项不是面试官非常了解的领域,而是面试官比较感兴趣,那就更好了。我的几个面试官,在聊天的时候,我注意到面试官1对我的论文和专利感兴趣,面试官2和面试官4对阿里巴巴大数据竞赛感兴趣,面试官3对我的论文和专利感兴趣。HR对基础能力感兴趣,HR对合作能力感兴趣。面试官3只想问我的基本情况。尽管我多次尝试让他对我有利(数据挖掘和分发),但他还是被迫收回了他。对于其他面试官,我有意识地将话题转移到阿里巴巴大数据竞赛上。恰好,他们都没有对这场比赛有深入的了解,也没有产生一定的兴趣。然后,他们大部分时间都在讨论这些内容。总而言之,充分发挥你的优势。***,感谢我的本科同学Jason帮我指明了学习的方向,给了我各种建议。还有其他朋友和同学支持和帮助我。
