学生党如何拿到阿里技术offer: 《2016阿里巴巴校招内推offer之Java研发工程师(成功)》

简介: 这篇文章字字珠玑,这位面试的学长并非计算机相关专业,但是其技术功底足以使很多计算机专业的学生汗颜,这篇文章值得我们仔细品读,其逻辑条理清晰,问题把握透彻,语言表达精炼,为我们提供了宝贵的学习经验。

大学里有这样一句话“现在流的泪,都是当初选专业是脑子进的水”,从见闻中了解很多中学非常优秀的同学因为选择了自己不喜欢不感冒的专业,很多人不懂得为自己寻找方向,而是继续延续应试教育下的学习方式,这样,他们的学习便成为了“面向考试”的学习,当他们走出大学校门,往往会发现,自己出了成绩单上的几个数字之外收获甚少。

 

但其实学习的主动权就在自己手中,你不喜欢自己的专业,但是你可以为自己选择未来的路。在计算机互联网行业,不是科班出身但是取得辉煌成就的人大有人在,问及为什么不是在他们的专业有所成就而是选择了IT行业,他们的回答往往是“兴趣使然”,是的,你得有所爱!当你真正爱你所从事的工作,那才能称之为事业。不要被所谓专业之间的壁垒局限住你的思维,不要看大学里的专业各种分化,才能有所突破和成就。永远记住,你的路你自己选,自己走!

 


今天为大家分享的这篇文章可以说是精华,我从中收获了太多的东西,这个学长并非计算机专业,但是他却比很多计算机专业的学生有更强的竞争力,从文章就可以看出,这位学长的逻辑思维能力之强,语言表达能力之强,总结能力之强。在从最后文尾为大家分享的书目和博客来看,他的计算机专业阅读量之大。值得我们再三品读其文。好了,再多赞美之词也显得啰嗦了,上文:


正文如下

《2016阿里巴巴校招内推offer之Java研发工程师》

 

写在前面 : 2015 年 7 月初,参加阿里巴巴校招内推, 8 月 15 日拿到研发工程师 JAVA 的 offer 。我的专业并非计算机,也没有在互联网公司实习过,只有一些学习和面试心得,供大家参考。阿里巴巴 90%以上使用 Java ,所以下面的分享也基于 Java 岗,如有表达不准确的地方,请提出建议和指正。

 

7 月上旬投递简历, 7 月 27 号至 29 号连续三天,每天一面,在 8 月 15 日正式收到校招 offer 。今年阿里依旧火热,看简历编号,内推阶段大约有 6万份简历,而据 HR 告知实际通过比例略大于 1% ,所以竞争还是很激烈。

 

一面 :

时间约 50 分钟,注重基础,广度加深度,刨根问底。

自我介绍熟悉 Java 、 jvm 、 Python 、 Hadoop( 包括 HDFS 、 MapReduce 、 HBase 等 ) 、优化算法等。所以,针对这些来提问。        

1. Hashtable,HashMap,ConcurrentHashMap 底层实现原理与线程安全问题(建议熟悉 jdk 源码,才能从容应答)

2. MapReduce 输入输出格式

3. Mapper 和 Reducer 的功能

4. MapReduce 的工作机制,Shuffle过程

5. HDFS 工作原理,如何实现 HA

6. 节点间通信机制

7. DataNode 如何冗余备份

8. Java 的引用类型有哪几种

9. 抽象类和接口的区别

10. 设计模式会哪些

11. 工厂方法模式的优点(低耦合、高内聚,开放封闭原则)

12. 数组多大放在 JVM 老年代(不只是设置 PretenureSizeThreshold ,问通常多大,没做过一问便知)

13. 老年代中数组的访问方式

14. GC 算法,永久代对象如何 GC , GC 有环怎么处理

15. 谁会被 GC ,什么时候 GC

16. 如果想不被 GC 怎么办

17. 如果想在 GC 中生存 1 次怎么办

18 缓存设计与 LRU

19. hashCode() 与 equals() 生成算法、方法怎么重写

20. 关系型和非关系型数据库区别

21. HBase 原理与工作机制,如何保证 HA ,如何保证宕机数据可恢复

22. 数据库处理大数据的优化

23. 索引的分类

24. 模糊查询性能

25. 排序算法与时空复杂度(快排为什么不稳定,为什么你的项目还在用)

26. 逆波兰计算器

27. Hoffman 编码

28. 查找树与红黑树

29. Spring 框架等

30. 项目

31. jvm 如何分配直接内存, new 对象如何不分配在堆而是栈上,常量池解析

 

一面总结 :

面试官竟然主动对我说谢谢 …  惊我一身冷汗,不过立刻意识到肯定过了。

1) 面试问题主要根据自我介绍和项目,所以,对写在简历上的内容,一定要理解的清清楚楚,也不要为了简历看起来牛比而罗列经历,尤其是自己浅尝辄止的项目。

例如,建议不要轻易说自己写过爬虫,因为没那么简单,一般会追问懂 Scrapy 框架吗,为什么不做成分布式的,如何并行爬取多个网站,如何设计并行任务分发器,爬来的数据如何存储,索引,检索,你觉得还有什么可以改进的。爬虫属于搜索引擎框架的一部分,面试爬虫很容易给自己挖一个 “ 系统设计 ”的坑。

2) 阿里注重基础、潜力和兴趣,而一些初创公司往往更注重立即上手的技能,这一点在面试中有所体会。

3) 阿里注重基础,但是仅有基础是不够的。

项目经历与实习经历可以加分,一线互联网公司的实习经历可以镀金,由于师门严禁实习,因此需要项目弥补,除去研究的课题多目标优化算法, Hadoop 是个“大宝贝”,它包含了 java 、 jvm 、设计模式、大数据处理框架、分布式计算、 HA 、负载均衡、主备一致性等,也包含分布式文件系统、分布式计算框架、非关系型数据库的实现等,几乎面试官问的任何场景的问题,都可以在 Hadoop 中找到解答,所以, Hadoop 是我最大的加分项,弥补了自己零实习的弱点。

至于 Hadoop 需要掌握到什么程度,才能应对面试?原理上,可以回答上面提到的点,操作上,自己可以实现淘宝的数据魔方的 Demo 。

4) 面试官的问题不会了怎么办?个人不建议直接说不会,而是要 “ 扯 ” 。

例如,问我 Spring 、 iBatis 等框架,而我一点不懂,但我说会 Hadoop ,你有什么业务需求,我几乎都可以在 Hadoop 找到实现。问我 MySQL 数据库,我也不精通,但我会告诉他 HBase 如何解决。

5) 关注面试的公司,关注阿里的开源技术与自主框架,例如,问到 jvm 的时候,我会向面试官阐述淘宝在 jvm 方面的优化工作,以及 jvm 在 Hadoop 方面的优化。有兴趣的同学可以关注淘宝 “ 莫枢 ” ,后离职加入 Oracle 、 Azul ,在虚拟机方面做了很多出色的工作,详情关注: ITeye 的高级语言虚拟机专栏。

6) 回答问题时,切忌使用 “ 应该 ” 、 “ 好像 ” 、 “… 吧 ” 等不确定性词汇,因为搞技术还是需要严谨的,面试官不想招聘一个什么都靠猜测的同事。

 

二面 :

时间约 23 分钟,感觉是交叉面,是其他部门的主管,听语气感觉级别在 P8 以上。

首先也是自我介绍,针对自我介绍和项目,开始提问。

1. IO 流,字节流 --> 字符流

2. 递归读取文件夹下的文件,代码怎么实现

3. HashMap 与线程安全问题

4. rehash

5. Web 框架

6. 项目与 Hadoop

7. 问我未来的职业规划

8. 问我有什么问题(问了关于阿里工程师文化的问题)

 

二面总结 :

1) 自我介绍要抓住重点,与岗位匹配,比如面技术,社团经历可以不说(但是 hr 面非常有用)。

2) 二面问的技术内容很少,感觉是可以看到一面成绩,进行简单的确认。所以,笔试或一面表现好,对后面的面试很有帮助。

3) 当面试官不再关注你的过去,而是和你谈未来谈理想的时候,基本表明面试通过了。例如,问职业规划和你对阿里的想法等问题的时候。

 

HR面 :

知乎上称阿里的 HR是神存在,掌握生杀大权,多少英雄好汉历经残酷的技术面,却倒在HR面前,但是从个人的经历,感觉HR姐姐还是很 nice 的。

40 分钟,并没有自我介绍,而是直接轰炸。

1. 暑假在学校做什么呢

2. 平时喜欢阅读什么书

3. 问我俱乐部主席的工作,有什么收获(社团主席,是HR的兴趣点)

4. 课题是什么,遇到什么困难,你是如何解决问题的

5. 为什么不从事本专业相关工作

6. 你专业是电磁场,为什么要转行

7. 你是一个什么样的人

8. 你的缺点

9. 曾经最大的打击

10. Web 框架不会怎么办,以后工作的内容和你现在研究的不同怎么办

11. 职业规划

12. 如果能去杭州家人同意吗

13. 向我介绍了所应聘部门

14. 问我有什么问题

 

HR面总结 :

1) 一定要坦诚,HR 阅人无数,更别说阿里的HR了。

2) 面试官是在考察适合自己团队的人选,而面试者,也是在寻找适合自己的团队和 manager ,这是双向选择的过程,所以自己的心态要和面试官持平。记住,面试官是在寻找团队伙伴,不是在对你考试,这种心态有助于减轻紧张的心情。

3) 社团主席让HR产生了好感,社团经历对自己的成长,看不见摸不着,但在时间管理、情绪控制、团队管理等方面,有很大的收获。程序猿的工作寿命并不长,当技术过硬,开始带团队的时候,相信一定会感谢自己在社团的经历。



 

推荐书目 :

限于师门不允许实习,所以只能在学校学习干货,提升内功。一直相信,理论决定上限,技能决定下限。修炼好内功,学习各种武功招式便轻而易举。

《 Java 编程思想》, Java 业界神书,不建议入门阅读,相比较,《 Java 核心技术 I 》非常适合入门。《 Java 核心技术 I 》,如果不想啃《 Java 编程思想》,这本是绝佳的入门神器。

《 Effective Java 第二版》,别犹豫了,深入 Java 必读,因为 James Gosling 也读,务必打好基础再读,否则会打击学习 Java 的信心。居家旅行,催眠必备。

《 Java 解惑》, Effective Java 作者又一力作,解析 Java 的各种坑。

《 Java 并发编程实战》,玩 Java ,怎么能不懂并发,并发的世界很奇妙。

《 Java 特种兵》,淘宝谢宇所著,洋洋洒洒,也是进阶读物,不可入门,作为补充参考。

《深入理解 Java 虚拟机》,周志明所著,国内业界良心之作,建议参考 ITeye 高级语言虚拟机专栏,也可与《 Java 性能优化权威指南》参考来看。

《 Java 性能优化权威指南》,深入理解 Java 性能优化细节, James Gosling 力荐。

《设计模式之禅》,一个个生动的例子,让枯燥的设计模式也变得有趣,不建议初学者直接看 GOF的《设计模式》。

《 Hadoop 权威指南》,掌握 Hadoop 必看,不用多说。

《 Hadoop 技术内幕》之 HDFS 、 MapReduce 、 YARN ,参考与补充。

《 Python 核心编程》,对 Python 的讲解深入浅出,虽然基于 Python2.5 ,但是核心思想不变。Python有很多库,建议阅读官方文档,里面有详细解释和示例代码。

《计算机网络》,网络基础入门必备。

《大型网站技术架构》,简单实在,理解大型网站架构,学习 Hadoop 之后才看发现架构上很多相似之处。

《 Linux 内核设计与实现》,抛开了 Linux 内核纷繁的源码,给出了关键的架构与实现,与《深入理解 Linux 内核》互补,重点推荐。

《深入理解 Linux 内核》,几乎所有关键的疑问,都可以在里面找到解答,需要时查阅,千万不要从第一页开始读。

《程序员面试金典》,注意不是 “ 宝典 ” ,涉及算法、对象设计、概率智力题等,面试神器。

《剑指 offer 》,刷题必备,面试利器。

《编程之美》,你会发现各大公司的算法题好像似曾相似。

《大话数据结构》、《算法》、《算法导论》,算法是我的弱项,以我的教训建议算法长期准备。

实际上,上面的书目我表示也只看了 50% 不到,大神的作品需要反复研读,比如《 Effective Java》。

 

个人体会: Hadoop 是个“大宝贝”,尤其对于我这样零实习,少项目的非科班学生,在面试的时候化解了很多面试官的刁难问题。它是 DT 时代的关键技术,包含了太多大神的心血和智慧,深入理解,不仅是 Java 与编程的提升,而且提高架构与系统设计的能力。抓蛇抓七寸,对于 Hadoop 一样,其中关键的组件有分布式文件系统、分布式计算框架、非关系型数据库、分布式协调服务等,而各个组件都有其核心架构与关键技术点,认清架构,由广度到深度,各个击破。理论加实践,建议在 Debug 中探索工作机制。

 

最后推荐一些技术资源, lintcode 、 leetcode 刷题必备(适可而止,不同于北美 FLAG 和一些startup 公司,国内的面试往往需要很多应用技术,也就是项目), July 的 csdn 博客 “ 结构之法 算法之道 ” ,数据库可以学习淘宝沈询的视频和博客,操作系统( Linux 进程管理与调度、内核同步、虚拟文件系统、内存管理、进程地址空间等),推荐网站: 牛客网, 七月算法,博客在线, ImportNew 、 ITeye、 InfoQ 、 csdn 、博客园, IBM developerWorks 等。另外,可以关注技术大牛的微博,开开眼界也是极好的,例如寒冬 winter 、淘宝沈询、淘叔度、淘宝丁奇、阿里正祥、淘宝正明、淘宝褚霸、RednaxelaFX 、 2gua 等大神。

对于非应届生,有足够的时间,修炼内功,切忌基础不牢就模仿武功招数。对于应届生,时间不多,可以刷刷题,多看看面经,磨磨枪。



阿里云技术专场招聘会-Java已经启动,特邀数位Java大牛担任面试官,两个工作日内高效回复。欢迎感兴趣的同学们来报名!链接点这里!!!


本系列文章:

学生党成功拿到阿里技术offer:面Java开发,却是C++考官,几个意思?

学生党如何拿到阿里技术offer:《阿里实习生面试经验(成功)》

学生党如何拿到阿里技术offer:《阿里面试经历-2014.4.18研发实习生面试经历(失败)》

学生党如何拿到阿里技术offer: 《阿里巴巴常考面试题及汇总答案(Java方向)上篇》 

学生党如何拿到阿里技术offer: 《阿里巴巴常考面试题及汇总答案(Java方向)下篇》

学生党如何拿到阿里技术offer:《阿里面试(失败+成功)》 

学生党如何拿到阿里技术offer: 《2016阿里巴巴校招内推offer之Java研发工程师(成功)》

学生党如何拿到阿里技术offer:《阿里面试(失败)》

学生党如何拿到阿里技术offer:《阿里面试(成功)》

相关文章
|
10天前
|
JSON 前端开发 JavaScript
java-ajax技术详解!!!
本文介绍了Ajax技术及其工作原理,包括其核心XMLHttpRequest对象的属性和方法。Ajax通过异步通信技术,实现在不重新加载整个页面的情况下更新部分网页内容。文章还详细描述了使用原生JavaScript实现Ajax的基本步骤,以及利用jQuery简化Ajax操作的方法。最后,介绍了JSON作为轻量级数据交换格式在Ajax应用中的使用,包括Java中JSON与对象的相互转换。
24 1
|
16天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
30 3
|
16天前
|
SQL 监控 Java
Java连接池技术的最新发展,包括高性能与低延迟、智能化管理与监控、扩展性与兼容性等方面
本文探讨了Java连接池技术的最新发展,包括高性能与低延迟、智能化管理与监控、扩展性与兼容性等方面。同时,结合最佳实践,介绍了如何选择合适的连接池库、合理配置参数、使用监控工具及优化数据库操作,以实现高效稳定的数据库访问。示例代码展示了如何使用HikariCP连接池。
10 2
|
18天前
|
Java 数据库连接 数据库
优化之路:Java连接池技术助力数据库性能飞跃
在Java应用开发中,数据库操作常成为性能瓶颈。频繁的数据库连接建立和断开增加了系统开销,导致性能下降。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接,显著减少连接开销,提升系统性能。文章详细介绍了连接池的优势、选择标准、使用方法及优化策略,帮助开发者实现数据库性能的飞跃。
25 4
|
16天前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
16 1
|
16天前
|
算法 Java 数据库连接
Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性
本文详细介绍了Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性。连接池通过复用数据库连接,显著提升了应用的性能和稳定性。文章还展示了使用HikariCP连接池的示例代码,帮助读者更好地理解和应用这一技术。
31 1
|
18天前
|
SQL Java 数据库连接
打破瓶颈:利用Java连接池技术提升数据库访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,避免了频繁的连接建立和断开,显著提升了数据库访问效率。常见的连接池库包括HikariCP、C3P0和DBCP,它们提供了丰富的配置选项和强大的功能,帮助优化应用性能。
37 2
|
缓存 安全 网络协议
|
8天前
|
安全 Java 测试技术
Java并行流陷阱:为什么指定线程池可能是个坏主意
本文探讨了Java并行流的使用陷阱,尤其是指定线程池的问题。文章分析了并行流的设计思想,指出了指定线程池的弊端,并提供了使用CompletableFuture等替代方案。同时,介绍了Parallel Collector库在处理阻塞任务时的优势和特点。