校招成功拿到阿里技术offer:技术面 + HR面(Java开发)
前言
作为一枚计算机软件专业的学生党,从进入大学校园的第一门课程《职业发展概论》上就明白一个道理:“在计算机软件行业,学不到老那就活不到老”。
我们的专业是当下世界中发展最快的,我们不得不紧跟时代的脚步,不断学习,只有站在行业的前沿,才能保证自己不被行业淘汰。
作为软件攻城狮的学生党,我的业余时间往往用于来逛技术论坛,在阿里云栖社区这样的技术论坛上收获了很多,不仅丰富了视野,也对专业也有了更为清晰认识,更重要的一点是在论坛上从很多的技术大神身上学到了技术和知识。一篇篇技术博文中,唤起了我对一家公司的向往——阿里巴巴。而更让我产生仰慕之情的是,他们的奋斗精神。
总之,我非常希望未来能去阿里工作,和我有一样想法的小伙伴应该不少吧。所以,假期中,我特别找了篇有关阿里校招的文章做成一个系列在这里和大家分享一下咯。
这篇是一个学姐在成功拿到阿里offer后写的博客。
以下为正文:
一面:技术面(大概40 minutes)
给我安排了个Java方向的面试官,这次交流非常愉快。
第一阶段:自我详情
面试官: 请简单自我详情下。
我: 我是XX大学计算机专业的一名XX,。18年暑期在XX公司实习了4个月,做的是XX(不知名小公司实习过)……(其它重要项目的简述)。另外,自己是名开源积极分子,有自己的Github,而且今年暑期参与了CSDN举办的开源夏令营活动,做的是XX。
阶段总结:上面只是我自己当时的一个简单自我详情,经验不足讲的比较乱,而且忘了讲自己十分热衷技术,平常喜欢写技术博客等事情(有些情况下可以加分)。建议大家都定制好自己的版本,讲出自己的亮点。
第二阶段:详情论文项目,针对详情提出几个相关的技术问题
面试官: 好,我看下简历。(而后对着我的简历看了十几秒,指着我的第一个项目)这是你刚说的论文项目吧,那你把这个项目详细说下。
我: 我从项目的选题(为啥要做这个方向)、项目采用的技术、新颖的地方、最终达到的效果(因为我做的是某个算法的性能提高,那么我就会讲速度提高了多少?空间压缩了多少?)这几个方面详细详情了自己的项目。接下来就是针对我的叙述具体问了几个技术相关点,这没什么好说的,由于每个人做的项目不一样,问的东西也不一样。
阶段总结:对于项目而言,语言就不是很重要了,关键是项目的架构、所采用的技术、能达到什么样的效果。面试官选的项目一般要么是简历中项目经验的第一个、要么是有他感兴趣的、要么项目做的时间比较长的,因而建议在写简历时,把你认为最有把握的项目放在第一位(而不是传说中的要按时间倒序来写项目经验),没太大把握的不要写(被抽问到就惨了)。
第三阶段:Java方向的知识,包括JVM原理、垃圾回收机制等
面试官: 你Java学的怎样样?
我: 还可以,有研究过部分JDK源码,比方常用的集合类如HashMap/Hashtable、ArrayList/LinkedList、Vector等,还有Java5之后的并发包JUC如concurrentHashMap、Executor框架、CopyOnWrite容器等。自己很欣赏Java巧妙的垃圾回收机制,看过周志明的《深入了解Java虚拟机》,因而对JVM相关的知识有所掌握……
面试官: 嗯,学的挺深的,那你把JVM的结构和类加载原理说下。
我: 马上拿起桌上的笔和纸,把虚拟机运行时包含的几个数据区和执行引擎画了下,包括方法区、虚拟机栈、本地方法栈、堆和程序计数器,而后详情每个区域有什么作用,最后讲ClassLoader的类加载机制,还顺便说了下双亲委派机制。
面试官:你刚刚说Java的GC机制很巧妙,那么它的巧妙之处在哪里?
我: 我从两个方面说下自己的了解:一是Java的内存分配原理与C/C++不同,C/C++每次采用malloc或者new申请内存时都要进行brk和mmap等系统调用,而系统调用发生在内核空间,每次都要中断进行切换,这需要肯定的开销,而Java虚拟机是先一次性分配一块较大的空间,而后每次new时都在该空间上进行分配和释放,减少了系统调用的次数,节省了肯定的开销,这有点相似于内存池的概念;二是有了这块空间过后,如何进行分配和回收就跟GC机制有关了,而后我详细详情了GC原理、画图表示年轻代(Eden区和Survival区)、年老代、比例分配及为啥要这样分代回收(我认为巧妙就在于这里),有了GC基本结构后,我又详述了下GC是具体如何进行内存分配和垃圾回收的。
面试官:嗯,看来你对这块确实掌握了,对了,你说你参与的CSDN开源夏令营项目是阿里的是吧(我点头),这个夏令营是什么情况?
我: 我简单详情了CSDN举办此次夏令营的目的,顺便说道此次夏令营活动当初有2000多人报名参与,最终只挑选出60多名,自己凭着开题报告和对开源的酷爱博得了导师的青睐得以当选。
阶段总结:上面的对话有人看了过后可能会说:好简单啊,问的题目都是你会的,当然能过啦。是的,其实这是有技巧在里面的,就是要想办法“先下手为强”。即让自己成为主动摊牌者而不是被动答复者,找机会跟面试官说自己熟练掌握了哪些方面的知识、自己喜欢专研什么等等,就像上面我所做的。
二面:技术面 + HR面(大概1 hour)
一面很轻松的就过了,但是二面就相对而言有些费劲,问的完全是项目相关,而且不是我最熟的研究生期间的论文项目,而是另外两个项目,因为复习不到位,某些地方答复的不完善。
第一阶段:自我详情,同上
第二阶段:详情面试官感兴趣的两个项目,一个与推荐系统相关,另一个与Java web相关。
面试官: 详情下你简历上的这个电影个性化推荐引擎,使用的是哪种推荐算法?
我: 改进的基于客户的协同过滤推荐算法。
面试官: 那好,那你从项目的基本架构、所使用的算法原理、如何改进的、数据如何解决这几个方面详情下你的项目吧。
我: 我首先画了下项目的架构图,据此图详细讲了下UserCF的原理及如何使用客户的社交数据和六维理论改进传统的UserCF,并写出了改进后的算法公式。而后又说这个项目的数据多大,代码中采用什么数据结构进行解决的。
面试官: (详情原理中提到了利用客户类似性来作为推荐的一个参考,面试官追问)那客户的类似性你怎样算的?
我: 汗,这个有个计算公式,我不太记得了,最后根据自己的了解讲了下余弦类似性的计算方式,公式没写全,面试官问公式里的根号怎样算的,我说直接用Java的库函数
详情完了这个项目,马上面试官又看中了另一个Java web相关的项目,马上追问。
面试官: 你这个XX系统是用ssh2框架做的,那你对这个框架熟吗?
我: 当时在公司实习时对ssh的掌握程度只是会使用级别,那时候没时间去研究框架背后的原理。后来有闲暇时间后,我就深入研究了下这几个框架的原理,还看了部分spring的源码,学到了不少知识。
面试官: 那你把这三个框架都详情下。
我: 我开始按自己的了解按Hibernate、Struts、Spring的顺序开始讲,Hibernate讲到它的使用原理及与iBATIS的比照,顺便说了下现在似乎大家更倾向于使用iBATIS、myBATIS这样更加灵活的轻量级框架。struts讲了下它的作用就是“将请求与视图分开”,而后讲述从输入url到使用struts解决的控制流程(struts从tomcat那接管、action解决),而后也说struts现在似乎也不那么倾向于使用由于它有漏洞。最后重点讲了下重头戏Spring,详细讲述了它解耦的功能、AOP原理及自己有利用动态代理商简单模拟实现过一个简单的AOP功能、IOC(DI)等。
面试官没说啥,一直在电脑上写着什么东西。这时候旁边的HR终于发话了。
HR: 你本科是哪的?为什么选择考研?
我: 开始说出我的“发家史”,从一所不知名的小二本考到了中科大,……
HR: 那你技术上是怎样学习的?
我: 又从本科说起,本科技术很差,到了研究生期间才真正开始技术上的修炼,……balabala
HR: 你的职业规划是什么?
我: ……(每个人的想法不一样)
HR: 你最大的优势是什么?
我: (自己吹吧,也要根据实际情况看)
……
阶段总结:再次说明项目的重要性,第一个项目有些记忆模糊,答的有瑕疵,这里要引以为戒(肯定要对项目知根知底),第二个项目感觉答的还可以,不过Hibernate安全问题没答出来,我觉得只需你其它问题答的很好,有个别问题答不出来是不会影响最终的offer的。HR面也很重要,你得说通了,需要提前考虑好常见问题的答复。
第三阶段:到你提问了
自由发挥阶段,可以问问公司内部的培养计划、晋升机制、能否经常有大牛分享技术让我们学习等等。
总结
整个面试过程中没让写代码,没问Linux下的少量知识,也没问操作系统、计算机网络相关,我觉得可能是Java面试更倾向于从项目中问相关的技术问题,假如你没项目或者项目不多,那么即可能问这些计算机基础知识了。
因为之前内推电面的失败,让我丧失了少量小自信,因而在这次阿里的整体面试过程中还是有些紧张,大家请引以为戒,务必在面试中保持淡定的心态,就当是和朋友在一起交流技术问题。
最后,希望我上面对话形式的面经能够给正在找工作或者以后找工作的同学们带来少量借鉴意义,希望你们能够从中看出某些问题的答题技巧和所做的准备工作。
最后,自己也要提出的问题。我一直认为提问题永远是一门技术甚至是一门艺术,而很多的大学生直到现在还是不懂得如何提问,这一点也是我们要在平常积累锻炼的。
好了,这篇分享就先到这里了。我们下一篇再见!
【文章彩蛋】
给大家推荐一个Java进阶内推交流群967051845,不论你在地球哪个方位,不论你参与工作几年都欢迎你的入驻!(群提供的Java技术+面试题目等500+资料集合,将是你不错的学习库。)

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 校招成功拿到阿里技术offer:技术面 + HR面(Java开发)