就现在!蚂蚁「校招季」重磅来袭!除了介绍蚂蚁的技术大咖,我们还邀请了一些通过校招来到蚂蚁的过来人分享他们的通关经验和心得,这里随时可能有行业技术大咖和你的直系学长学姐出没哦~ 「校招季」栏目会持续输出有关“蚂蚁校招”的丰富内容,敬请期待!
即将或正在饱受校招面试折磨的学弟学妹们好,我是来自蚂蚁金服CTO线研发效能部的开发工程师李煜超。从惴惴不安准备春招至今也已过去两年,现在的我也想作为过来人为你们的春招尽一份力。
先不提我平淡的经历和不足下酒的心路历程,这里我先为你们奉上你们最关心的面经宝典。由于我并没有作为面试官的经验,因此特地采访了颇有面试经验的师兄,结合自身感受整理如下几条。
简历
相信在校招季开始之前,优秀的你们已经网罗各种简历模板,并整理出了n稿漂亮的简历。其实,简历的要求是尽量做到简洁、清晰,那么一份只能容纳寥寥数字的简历,该如何包含你们横溢的才华呢?
首先要知道,简历的主体是项目经历。作为在校大学生,面试官并不会要求你们有多庞大或多辉煌的项目经验(当然有更好!),他们关心的是,经过项目塑造起来的你们是否是部门所需要的——即所罗列的项目与部门工作是否相关,以及你们在这些项目中所展现出来的自我学习能力。
这也就说明你们在筛选项目经历时也应当有所选择,侧重于展现你拥有部门想要的技能,侧重于你在项目实践过程中使用的技术手段以及这种手段带来的效果,如果你在学校要求之外开发了一定规模的项目,或是项目存在一定影响力,那是最吼滴。
同时,在编写简历时请务必做到实事求是。阿里是一家十分注重价值观的公司,而诚信一直是涵盖在价值观中的重要内容。简历上最明显的体现便是对自己技能精通程度用词的描述上,请谨慎使用过于强烈的用词(如精通)。
简单来说,简历是递给面试官的个人门面,是面试官对你们所提问题的指引,也是你们进行面试准备时的导航。
准备
通常春招的时候,大多数同学已经提前搜集一些或是前人留下,或是勤奋的同学整理的面经资料和面试题集锦。那么面试经验尚不多的同学可能会问,背这些有用吗?
就我个人感觉来说,是有用的。五六年的大学课程,难免会有遗漏,面经作为对学习内容的提炼是很好的助记手段。但也不可过于依赖,这里以Java后端开发为例分几种情况介绍。
1.基础的知识如JVM、数据结构、数据库等
这是你们手上每份资料中大部分都会涵盖的内容,也是你们在校招过程中会被提问无数次的知识,仅靠背诵面经是不足以对付面试的。在准备过程中你们需要时刻问自己是否真的熟悉,做到知其然,知其所以然。有不确定的地方提出来,看看以前上课的ppt,或是查资料进行系统复习。如果准备时间较为充分,推荐将相关权威书籍再好好阅读一遍。
值得一提的是,蚂蚁的SOFA/SOFABoot是基于Spring框架自研的金融级分布式中间件。因此,若项目经历中有涉及Spring使用的,也务必要作为重点进行准备,除了是面试的常问问题,他也有助于你们顺利通过面试后,能够尽早投入实际工作中。
2.简历中涉及的项目相关知识
很多同学在进行面试资料整理的时候,会把自己面试过程中被提过的问题也归纳进去——通常是项目相关的技术,或者再抽象出一系列复习点。这对他/她来说是很有好处的,但在其他人手上可能就成了“干扰项”。
在你们复习面经资料的过程中,如果碰到类似这种问题,应该进行合理安排,没必要投入过多精力——指疲于准备面试的情况下,若时间富裕,则多学无害。你们也可以请教整理的同学,这些问题是面试官在什么场景下提出来的,或者说是怎么引导出这个问题的,如此有利于你们学会揣度面试官的心思,并根据自己项目中提到的技术进行发散思考。
上一趴提到,简历是面试准备时的导航。其项目中涉及的技术更是重中之重,对于这些技术,在做到知其所以然之后,最好连其祖宗所以然都知道。准备期间也可以借助脑图进行整理,梳理相关知识进行学习。
比如项目中涉及了Spring技术栈,那么对于IOC和AOP的原理势必要掌握的。既然提到IOC,那么说一下IOC的好处是什么,你还需要知道有哪些相关的软件设计原则,Spring中的几种注入方式,和Spring的注解作用等等,那么顺便的,注解中的@Autowired和@Resource你可以说说有什么区别吗?提到AOP,几个基本概念,几种通知方法,可以用于开发什么功能等都可以进行复习。
3.工具相关知识
如git、mvn使用、命令行使用,甚至idea/eclipse快捷键使用,在专业知识和项目准备充分之余也可以进行复习。
除了知识的总结学习,算法题和项目回顾也是面试的重点。
对于项目本身需要把脉络理清,对于整个项目、以及项目的每个模块,做到用精简的语言让面试官能够明白。回顾项目时,理清楚项目的难点和成果。面对多种方案时是如何考虑的,碰到难题时是怎么解决的。
算法题就是多刷多做多归纳。
面试
蚂蚁的面试通常是有3-4轮技术面,还有一轮HR面,各轮面试的问题视面试官风格而定,但有以下几种能力或者说是特质,是面试官希望能够在你们身上看到的。
一个是基础能力。面试官对于在校生通常不会有太高的技术水平要求,但会很希望看到你们有扎实的功底。万丈高楼平地起,只要发现你们是有潜力的原石,蚂蚁就有信心把你们雕塑出龙章凤姿。
一个是自我学习能力。面试官会乐于看到你们勇于发现问题,全力解决问题,用新方法、新思路来创造变化,带来突破性的结果。
最为重要的,是需要再一次强调的诚信。对于自己没做过的,不知道的,没有必要隐瞒或伪装。如果想凭经验进行临场发挥,也请先勇敢承认。面试不是毕业答辩,没有必要唯唯诺诺或含糊其辞,面试官其实也是在找自己往后工作中的战友。可以有不同的见解,面试官不会喜欢弄虚作假的伙伴,但会欣赏一个承认短板,能够灵活应变找到答案的人。综合素质和非专业水平的亮点也是面试官考量的因素。
在进入蚂蚁后你会发现,这些其实都是成为一个阿里人的潜质,是阿里寻找同路人的方向。
以我自身的面试经历来看,我的整个面试流程经历了三轮技术面和一轮HR面。
第一轮面试的主要内容是基础知识和在线算法题。事后与同学交流发现算法题难度不尽相同。作为过来人回头看,除了最终结果,面试官还会看中你们的解题思路和编程习惯(说人话:把代码写好看点,推荐看《重构》和《代码整洁之道》)。
可能由于写的项目经历和部门业务较为相关,第二三轮技术面基本围绕项目展开,依稀记得第三轮面试的时候,我就和面试官就我做过的项目方向有不同意见,产生了讨论,当时一度觉得自己可能与蚂蚁无缘了。
最后的HR面其实更像一个互相了解的过程,HR会问你关于工作的看法(包括base地、方向等)或是考量你价值观的小问题(并不确定是不是),当然你也可以提出你对工作或部门的疑问。
个人经历
说完干货,接下来便是“水货”。
我本硕就读于南京某500本大学——南哪大学的软件学院。学校不是真的500本,但我的成绩大概差不多是500本的水平,因此在学习经验上并不能给你们很好的建议。
我们学院的部分课程工程氛围颇为浓厚(至少本科是),头几年常常会被数不尽的文档淹没,其中大作业ddl是比期末考更令人疲惫和在意的事。因此我的本科生活也及其简单,没事就泡球馆,大作业卖力做,考试要求不挂科(排名分先后),就这样,波澜不惊地来到了研究生阶段和春招季,开始了和蚂蚁的邂逅。记得当时同一实验室的师兄已经在蚂蚁实习,恰好我们正在做的课题与部门工作有一定联系,便推荐我内推。作为一个刚出新手村的菜鸟,为了抓住摆在眼前进入心怡大厂的机会,我特地问他,能不能晚些进行面试,让我先多刷刷怪涨涨经验。师兄善解人意,通情达理,我接的第二个面试电话就是蚂蚁的。
好在最后还是有惊惊惊惊惊无险地拿到了offer,你们看,我的经历就是这么朴实无华且枯燥。
回过头来看过去几年,如果可以,还是想给年轻的自己几点建议,也希望能给或是还处在美好的大学生活中,或是在焦急准备面试,或是刚刚拿到offer的你们一点帮助:
1.所有的专业课程,都好好上
并不是说非专业课程就能荒废,只是对于专业课程有更深的体会。在入职后,当事人表示非常后悔。
曾经有诸多课程摆在我面前,我没有珍惜,老师在台上声情并茂的介绍,我在台下不屑地想着:“这东西我以后工作能用到?能用到我把这课本吃下去。”。现在追悔莫及,作为研发效能部的开发工程师,我一次一次地切身体会到学校课程安排诚不欺我,只能在空闲时间重新捡起来,为年轻的自己买单。
2.课余时间多了解一些专业前沿知识
入职后,你会有机会与同届毕业生接触、合作,会发现总是有那么些闪闪发光的人,永远有自己的想法,永远走在前方。多了解一些前沿知识,能帮助你们培养专业素养,保持前瞻意识。
3.认真取花名!
对于顺利拿到阿里offer的同学,首先恭喜你们,其次作为阿里的一个文化,希望你在取花名前能认真考虑,不要重蹈我的覆辙!我的花名是黎荍(qiáo),取花名时误以为花名一定要古风,一通瞎琢磨后取了这么个我查词典前都不认识字的花名。
4.认真思考就业方向
除了hc,在投简历的时候你们需要好好问问自己,自己梦想什么岗位,是算法还是开发,是做业务还是做平台,对于所投部门与自己的研究方向是否匹配,还在踌躇的小朋友,也可以借着实习的机会切身感受一下实际工作与想象是否一致。
那么,有没有一个部门,岗位选择多,实习生活丰富多彩,工作内容与学校所学课程高度match呢?
当!然!有!啦!
蚂蚁金服CTO线研发效能部门面向全体2020校招实习毕业生开启春招啦!不管你是前端后端,Java,C++,Android还是iOS,是研发还是数据、算法,只要你有技术激情,勇于挑战,我们,欢迎你的到来!
加入我们
JAVA/ C++研发工程师
1. 计算机,数学,统计学, 运筹学或相关专业应届毕业生;
2. 良好的计算机专业基础,熟练掌握数据结构、算法、操作系统等基础知识;
3. 优秀的编程能力,熟练使用C/C++或者Java编程语言;
4. 良好的团队协作能力,有技术激情,能够胜任有挑战的工作;
5. 有分布式系统或者其它底层系统研发经验优先。
数据/算法工程师
1. 有分布式系统或者其它底层系统研发经验优先。
2. 计算机、数学、统计等相关专业应届毕业生,机器学习、深度学习、NLP等泛人工智能领域研究方向的硕士、博士优先;良好的计算机专业基础,熟练掌握数据结构、算法、程序设计等基础知识;
3. 熟练掌握SQL、R、Python以及相关进行大规模分析的工具和Hadoop/Spark/Cosmos/ODPS等大数据分布式平台,熟悉大规模分布式机器学习框架(Spark MLLib,MPI,ParameterServer等)、深度学习开源工具(Caffe,Theano,Torch,Ten-sorFlow,MXNet,CNTK等),Coding能力较强,有Java语言编程经验优先;
4. 良好的团队协作能力,有技术激情,能够胜任有挑战的工作;
5. 在顶级机器学习、信息安全和AI领域会议和期刊有文章发表的优先考虑(比如NIPS、ICML、ICLR、AAAI、IJCAI、KDD、SIGIR、CCS、WWW、JMLR等)。
Android/iOS研发工程师
1. 计算机、数学、统计、通信等相关专业应届毕业生。
2. 良好的计算机专业基础,熟练掌握数据结构、算法、操作系统等基础知识;
3. 熟悉iOS/Android平台原理机制,具备iOS或Android客户端应用实际开发经验;
4. 有一定软件架构设计能力,熟悉常见的异步,同步,多线程,跨进程,组件,容器的设计方法;
5. 具备创新业务技术攻关和落地能力者优先(不限于算法,生物识别,图形图像,3D建模,AR,多媒体等领域)
前端研发工程师
- 职位要求
1. 编程基础扎实, 熟练掌握JavaScript、HTML、CSS等前端基础技术;
2. 熟悉计算机与网络,了解数据结构与算法;
3. 熟悉模块化、前端编译与构建工具,了解React、Vue等主流前端框架,能理解其设计原理;
4. 关注新事物、新技术,有较强的学习能力,喜欢挑战;
- 加分项
1. 同时具备PC/无线端开发能力,有成功的中大型Web产品或移动应用开发经验;
2. 有参与前端开源项目开发,或有优秀的个人项目;
3. 有服务端开发经验(微服务、Serverless、PaaS等, 熟悉Node、Java、Go等语言) ;
4. 了解可视化知识, 熟悉SVG、Canvas、WebGL, 使用过D3、G2、ECharts等类库。
程序分析技术工程师
- 职位描述
1. 搭建及维护程序静态分析基础框架,基础引擎;
2. 设计实现及维护分析器程序语言特性建模系统,属性描述系统等系统;
3. 设计实现扩展及维护程序分析结果查询语言;
4. 研发及维护基础程序分析算法例如指针分析,数值分析等;
5. 研发各程序语言代码漏洞检查器,支持检查标准如CWE,CERT,OWASP等;
6. 研发及维护约束求解,打分,修复点计算等周边算法。
- 职位要求
1. 计算机或相关专业全日制本科或以上学历;
2. 熟悉程序语言的基础理论及概念;
3. 扎实的算法及计算理论基础(如图灵机模型);
4. 较强的总结能力,系统化思维及能力以及抽象思维的能力;
5. 较强的学习能力,可以很快上手并理解一门新的程序语言;
6. 熟练掌握Java/C/C++语言,能编写稳定,高效,可靠的代码。
- 加分项
1. 有从事过程序语言方面理论研究,有研究生以上学历者优先;
2. 有从事编译器/程序分析器/程序漏洞检查器开发经验;
3. 熟悉编译器中间代码格式以及程序分析相关概念,比如控制流等;
4. 有静态程序分析工具使用经验和程序漏洞挖掘经验;
5. 熟悉LLVM中间代码。
简历投递
邮箱:AntLinkE@antfin.com