阿里面试准备及面经分享(干货满满)
楼主是研三的研究生,今年毕业,去年秋招拿到了阿里天猫超市产品技术部的offer,秋招期间在牛客网上收获良多,现在是时候反哺一波了。
因为要同时兼顾学校里的论文、实习公司中的本职任务、秋招间的自主复习,因此感觉校招真的是一段需要付出努力且可能遭受挫败、甚至劳心伤神的经历。我把这一路的体会记录下来,给今后和我一样迷茫过,怀疑过,失落过的人一些帮助。给正在准备找实习和找工作的同学们一些借鉴。
下面分享的内容分为岗位选择、面试准备、面经分享、书籍推荐、部门推荐五个部分。
一、岗位选择
师弟师妹可以根据自己的情况,看以后想从事什么工作,提早做准备,岗位大体上分为技术岗和非技术岗。
技术岗:前端、后台、算法
非技术岗:产品经理、运营
由于楼主是技术岗,这里针对技术岗说一下,因为前端、后台、算法需要的技能树是完全不一样的,后台又分纯后台以及最近炒的比较火的DevOps(开发即运维)。所以大家可以从下面的面试经验(面经)大致了解一下胜任这些职位需要哪些技能,以及达到什么程度,设计一些针对性的项目(光靠导师的项目肯定不够,导师能教的东西很有限,自己才是自己的导师),进行有针对性的复习,对找实习或者找工作有很大的帮助。如果同学们对岗位没有明确的意向,可以浏览一下不同岗位需要的能力,以及对应的技能树,找到合适自己并感兴趣的。毕竟工作让自己快乐也很重要嘛~~
部分技术岗技能树;
前端技能树
https://github.com/kamranahmedse/developer-roadmap#-frontend-roadmap
后台技能树
https://github.com/kamranahmedse/developer-roadmap#-back-end-roadmap
DevOps技能树
https://github.com/kamranahmedse/developer-roadmap#devops-roadmap
算法技能树
https://www.nowcoder.com/discuss/93743
C++技能树
二、面试准备
准备面试的过程其实也是夯实自己的过程,可以从三个方面入手。
1.巩固基础知识
楼主是做java的,所以我自己巩固知识的路线大致是这样的。
计算机基础知识:操作系统 + 计算机网络 + 数据结构 + 算法
java的知识:集合、线程池、项目依赖和创建(maven、gradle选一,travis CI、jenkins选一)、中间件(mq、redis、dbproxy)、数据库(mysql)
web知识:http协议、websocket协议(通过写“你画我猜”的项目来理解)
写一些one way thru code所需的工具:python + shell
其中算法不推荐算法导论等经典的大部头的书,因为由于数学功底不足的原因真正能看完的人寥寥无几。算法推荐这个网站:https://algorithms.tutorialhorizon.com/
2.积累项目经验
3.技术视野及成长
技术视野是大家容易忽略的一个点,包括深度和广度,包括阿里在内的很多大厂面试都很看重这个。有些人面试答得很好,却给面试官留下一个视野狭窄的印象。一个例子是,Java的面试从Java7问到Java8一直问到Java11,之间有什么区别,这种问题非常小众,一般的面经里也不会提到。可以反向思考,什么样的学生会知道这种区别?大致来看,应该分为两种,一种是开发实战经验丰富,踩过各种坑,熟读源码的人,用过这些不同特性的人。另一种呢,则是自己有兴趣了解过或浏览过相关内容的人。所以如果能答出来,则说明学生有一定自主学习的能力,也愿意学习新知识。我面试阿里时还被问到过springboot2和1的区别,以及如何选择mq的实现等问题,也说明了技术深度的重要性。
Java11官网文档:https://docs.oracle.com/en/java/javase/11/
Python3.6.6官网文档:https://docs.python.org/release/3.6.6/library/index.html
Shell书籍(一本大部头):Linux命令行与shell脚本编程大全
4.复习别人的面经
别人的面经都是很有参考价值的,多看面经是一个查漏补缺的过程,我个人认为复习到这种程度就差不多了:随便选一个某家公司的面经,所有问题能回答出80%。
附上一些楼主复习时觉得很有营养的面经:
后台面经
https://zhuanlan.zhihu.com/p/34732997?utm_medium=social&utm_source=wechat_session&from=groupmessage
https://zhuanlan.zhihu.com/p/34502085?utm_source=wechat_session&utm_medium=social&from=groupmessage
https://www.nowcoder.com/profile/3539721/myDiscussPost
前端面经
https://www.nowcoder.com/discuss/80064
https://www.nowcoder.com/discuss/74890
https://www.nowcoder.com/discuss/74838
https://www.nowcoder.com/discuss/105439
https://www.nowcoder.com/discuss/104153
https://www.nowcoder.com/discuss/96781
算法面经(2018年算法岗竞争激烈,有好的论文、最好是顶会才有竞争力)
https://www.nowcoder.com/discuss/138543
https://www.nowcoder.com/discuss/127357
https://www.nowcoder.com/discuss/103068
https://www.nowcoder.com/discuss/102053
另外,同学们还需要了解招聘的主流时间窗口:
实习(一般在大三和研二的时候找) :3月、4月
提前批(内推) :7月、8月
校招 :9月、10月
四、阿里面经分享
阿里的技术岗的面试一般分为4-5轮,5轮面试下来基本会全方面的考察你各方面的综合能力,所以建议同学们注意提高自己的综合能力,并且好好准备简历上写的东西,做到简历上写的都问不倒你就行了。
1.阿里一面:
简单聊了下java基础(集合),然后开始问项目,其中主要聊了自己做的http服务器项目所有细节,这里写了个知乎的帖子。
实现一个http服务器需要怎样进行?需要哪些知识呢? 泵泵的回答 - 知乎
https://www.zhihu.com/question/20199473/answer/382206419
接着问了很多jvm相关的问题,认真看过深入理解java虚拟机那本书都能搞定。
其中只有一个问题当时觉得可能回答错了:
Java里String a = new String("abc")具体发生了什么?
后来自己弄清楚了写在知乎上了:
https://www.zhihu.com/question/22739143/answer/631000180
2.阿里二面:
二面问了很多在滴滴实习相关的内容,实习内容因人而异不便参考,但总体感觉面试官思路很清晰能抓住问题要害,并一直链式提问到你不会为止。
通用的问题如下
线程池数量如何设定,线程池参数的意义。
分库分表、会有什么问题吗、数据库中间件
实习中觉得公司代码最厉害的部分
Springboot2和1的区别
Java8特性,lambda、流式计算、lambda和流式计算的优缺点、新的时间api。
java9特性,模块化、jshell、为什么要设计jshell、jshell的好处等等
反射什么时候拿不到注解(考元注解@Retention)
3.阿里三面:
三面聊学校里工作,顺便还问了一些机器学习相关的内容。
因为是在滴滴实习,讨论了一个如何推荐司机、乘客的场景,展开讨论了很久。同时考察了一些推荐系统中的矩阵分解,解决top-k问题用堆,推导时间复杂度等。
4.阿里四面:
先7秒钟讲了一下hashmap,然后开始聊学校里论文的细节。大家对于自己做的工作一定要复习好,有可能以前自己做的东西不复习也会忘掉。
5.阿里五面:
Hr面,这一面基本就在聊人生聊对公司的看法了balabala
五、书籍推荐
下面列举一些我觉得必看的书和视频
操作系统:csapp第三版
设计模式:Youtube搜Design patterns,点击量第一的是christopher okhravi录制的。
https://www.youtube.com/watch?v=v9ejT8FO-7I&list=PLrhzvIcii6GNjpARdnO4ueTUAVR9eMBpc
数据库:Design Data-Intensive applications(又称DDIA,2017年出的好书)
Web架构:大型网站技术架构-作者李智慧
Java: Java8实战、深入理解Java虚拟机、Springboot2精髓(讲解最简单的使用例子且不涉及源码,当字典用非常好使,源码是要看的,但快速上手更重要)
不推荐的书(我踩过的坑):
操作系统真相还原(啰嗦)、Netty实战(netty原理讲解不多)、Springboot实战(没干货)、Java多线程编程核心技术(被“Java并发编程的艺术”一书cover了)
六、部门介绍,墙裂推荐
天猫超市事业群,致力于成为满足生活全场景的智慧零售商。将超越过往线上的工作方式,融入线下的“新蓝海”,强化商品、消费者、线下伙伴、供应链的各项能力,整合原有天猫超市和淘鲜达业务,和阿里大生态内的大卖场、超市等合作伙伴紧密合作,推进线上线下一体化的超市新零售模式。
在创在未来的道路上,期待有你!
我们携手同行,一起实现“天猫超市,天下超市”的理想。
Java开发工程师、前端开发工程师、用户型产品经理、测试工程师