大家好,我是路飞!昨天在整理电脑中的学习资料的时候,偶然发现自己半年前面试阿里暑期实习的时候的面经
注:每个人的面试侧重点不一样,有很大的随机性,这要看你简历撰写的内容,以及面试官个人想法了!
一、简历筛选:2021-6-13
- 简历撰写注意点:尽可能以精简的文字描述清楚自己完整的技术栈范围,切记不要什么都写(要以自己有把握的为主),写进简历里的东西就可能被面试官问到,如果只是把自己所有接触过但是并不是很熟悉的内容都堆积进去,面试官问你某个方面的问题时,自己答不上来,那么这一部分的技术栈不但不会成为加分项反而是扣分项。
- 重视基础,不要头重脚轻:前段时间帮忙看过一些同学的简历,简历技术栈板块内容很丰富,技术体系很全面,涉及到的常见技术栈基本上都写了。问题是,面试官如果从计算机网络、操作系统、以及Java基础、JDK源码、JVM、数据库索引等方面去问问题时,一问三不知,给面试官的印象就是一味的堆积技术栈的使用,没有重视基本功。
- 简历中的亮点:比如ACM、CTF、ICPC等比赛的参赛奖项,以及技术博客可以适当突出(如果自己刷题数量较多,题解数量较多,甚至可以加上自己的leetcode首页),也包括英语六级、国家奖学金、年级总排名、专利等等。
- 精心打磨自己的简历:让HR筛选的时候更容易通过!如果只是随便写写,即使你确实非常精通算法,或者技术能力强,底层知识了解非常透彻,也很可能在筛选时候就被淘汰!
二、素质测试:2021-6-13
几乎是刚投递完简历,就收到了素质测试。测试内容包括:成语、诗句、表格计算、图形、人格测试等。这一流程不难,就是比较考验耐心把(需要花不少时间)~
三、算法笔试(60min):2021-6-14
笔试总共4道题:一道涉及道回溯的智力题(面试官提示用回溯了,还是没写出来)、一道二叉树俯视图(解决)、一道动态规划解决背包问题(解决)、一道类似于剑指offer中的mid股票问题(解决)。几道题都不太难(相比于字节的笔试题来说),mid题居多,一道hard。
注:保险起见,个人认为力扣200~300的题量是非常不错的(树、链表、排序、递归、回溯、动态规划这几个要重点去刷),重点刷剑指offer、Top100这些题。要反复刷,有效率的刷。
四、技术一面(40min):2021-6-16
- 首先是自我介绍(5min左右,不要太长也不要太简短)~
- JMM内存模型相关问题,大概就是工作内存与主内存的通信原理、为什么要引入JMM,这几部分(狗头,不要把JMM内存模型跟运行时数据区(堆、栈、方法区、程序计数器、本地方法栈…)搞混了,背八股文可以,但是不要不懂为什么而死记硬背!)
- CSDN写博客相关的问题:什么时候开始写博客,写博客给你带来哪些收获?平时怎么自学的?简述一下自己的学习历程。
写博客很重要!之前也被别人质疑过:“你写的博客没人看,为啥还要花时间去写这些没用的文章?”。不要管别人怎么评价,自己坚持去积累下去,不光可以增加自己对某些知识的进一步理解,而且随着粉丝量的增多,写博客给我们带来了一些额外的收益,以及一些人脉,在CSDN上结识了很多同届大三拿到BAT Offer的牛鬼蛇神大佬,也有工作多年经验的老油条,跟着他们不光能学到东西,最重要的是眼界开阔了。
我之前一直认为,能进BAT大厂的只有985-211的名校学生,或者高学历的研究生才可以,普通本科就直接把自己否定了。
但事实并非如此,在CSDN,有幸结识了不少同为普通本科拿到大厂Offer的大佬。所以,不要盲目自信,也不要太过于轻视自己,在没有真正尝试取得结果之前,不要盲目否认自己的努力和付出!
- Redis相关问题(问了几个常见的八股文问题):缓存击穿,缓存穿透,缓存雪崩;布隆过滤器实现原理,不使用SETNX如何实现分布式缓存?
- 项目相关问题:项目中哪些地方做了缓存,不同的缓存有什么区别?ES-MQ如何实现数据同步,项目中做了那些优化,有没有涉及到分表? 还做过那些项目简单介绍一下,最好提供一下项目链接,或者Gitee仓库链接。
- Jvm垃圾回收相关问题:回收算法,回收策略,回收机制,这块我比较熟悉,巴拉巴拉从回收策略迭代,到回收算法迭代,再到FULL GC、YOUNG GC,STW 。。。讲了十几分钟,还没说完,面试官说:“好了好了,我知道这块你比较熟悉了,我们进行下一个问题”。(这部分八股文面经背的很熟悉,Java虚拟机这本书也看了2遍了哈哈)
- Jvm运行时数据区相关,堆和栈的进一步详细划分及其作用?(这一块谈到了,操作数栈和本地方法表中运算的流程,这部分还是很有趣的,可以去找个案例去分析一波,例如 a++ + ++a + a– 的结果)。
- 收尾问题:CSDN上你写过的最满意的一篇博客是那一篇?上一家实习经历相关问题,实习做了什么,介绍一下具体是负责那一块任务怎么做的,实习了多久。
- 反问环节:问了部门业务类型,用到的技术栈等等。
还有一些零碎小问题记不清了,主要就是上面这些,电话收到面试通知的时候非常激动,也很害怕,害怕被面试官完虐,毕竟这是第二家大厂面试,上一次面字节,准备不充分(裸面),一面被虐的体无完肤。
五、技术二面(40min):2021-6-18
- 二面换了一个面试官,还是先让我做自我介绍~
- 接下来还是聊项目,首先介绍一下项目的整体架构,然后提问实际场景题:“Kafka生产者生产数据时,如何保证多线程条件下生产了多条数据,而消费方只消费了其中1条的情况?”
“还是上面这个问题,如果加锁的话(单体应用可以加锁解决,但是分布式下无效),在分布式环境下如何解决呢?”(分布式锁 SETNX)。 - 实习经历相关问题: “你在上一家公司实习,具体负责那一块儿内容,开发过程中遇到了那些问题,你是怎样处理和解决的?”
- 计算机网络相关问题:TCP的三次握手、四次挥手详细流程,以及状态转换过程,为什么要三次握手?又为什么要四次挥手?(八股文)
- 计算机网络相关问题:UDP和TCP的区别,如何使用UDP去实现一个简单的TCP?(八股文)
- JVM相关问题:Java语言和C++在执行效率和编译层面的区别?为什么Java效率低,还需要使用JVM?Java是如何解决这个问题的?JVM中即时编译的几种实现方式有了解过吗?
- 开阔场景问题:在校期间有没有用所学的技术栈去实现一个解决实际需求呢,请你说一下是怎样做的?
- 操作系统相关问题:为什么要将操作系统分为用户态和核心态?
- MySQL数据库相关问题:MySQL索引数据结构,为什么要使用B+树,而不采用其他数据结构?例如Hash表,B树,红黑树?
- Java基础问题:问一个简单问题,JDBC链接数据库的流程能说一下吗(送分题)!
- 数据库相关问题:什么是回表查询?什么是索引覆盖?
- 收尾问题:你当前除了阿里,还在面试其他公司吗?
- 反问环节:略。
二面效果非常好!面试官人超级暖!面试官这边刚挂断电话,HR就告诉我面试官对你评价很好,当场二面就过了)不得不说,CSDN写博客给我这个没竞赛,没学历的普通在校生加了很多分!
二面是我最紧张的一轮,紧张的时候语气助词,嗯嗯…,然后…然后… 哈哈,还好面试官很暖,很快就把节奏带正了!
可能有小伙伴会疑惑,为什么没有深入去问你JDK集合、线程池、锁、原子类这些源码?这个我也不太清楚,不过面试官在面试的时候,貌似也打开我的博客看了,这几个部分的源码学习,我写的文章还是比较多的,虽然体会不到 Doung Lea 大神的高端思维,也不能像那些多年经验的老油条一样深入体会其原理,但是这部分我准备的时间精力还是比较长的,至少不能说是完全没看过源码。有兴趣的小伙伴可以看一下我的JDK、JUC源码分析专栏,基本上常见集合源码、CAS、原子类,AQS,并发集合源码,红黑树,基本上都写过文章!
六、技术三面(20min):2021-6-23
- 三面貌似是主管面,刚开始还是先自我介绍~
- 简单聊一聊项目,项目是否上线过,有没有遇到过上线后刚开始项目运行访问很流畅,之后接口访问越来越慢的情况?
- 智力题1 两根不均匀香,求15分钟如何表示(没答上来)
- 智力题2 抓果冻(排列组合问题,还是很容易回答的)
- SQL场景题1:写SQL,查找一张表中分数在0-60 60-80 80-100 三个层次的学生人数。
- 场景题:如何自己去实现一个PRC框架,说一说你的思路?(没答上来,那时候还没学过Netty,也没看过这一部分的面试题)
- 大学期间学了哪些课程?看过那些书籍?坚持写博客持续了多长时间?
- 动态代理的实现原理,(JDK动态代理和Cglib动态代理)
- Linux相关问题:查找某个目录下所有以某个字母开头的文件。
- Linux下,如何查看某个文件的后10行,并将其写入另一个文件中。
- 计算机网络相关问题:HTTPS的实现原理,如何保证通信安全?
- 计算机网络相关问题:HTTPS建立连接的流程
- Git和SVN设计思想上的差别?(没答上来)
- 反问环节:略。
七、HR面(10分钟) 2021-6-28
接到HR面电话的收获,激动得一批,但是当时已经接了B站的暑期实习,人已经到了上海了,所以最后没接阿里暑期实习的offer。大概问了一些琐碎小问题,比如什么时候可以来实习,实习时候的薪资待遇,为什么放弃了来阿里实习,之后有机会的话还会选择来阿里实习吗?
八、总结
整体面试流程非常满意,面试官和HR小姐姐人都超级棒。
由于我自己之前网投的原因,简历被卡在阿里健康,一直没给我安排面试时间,简历就一直锁着,没办法投递阿里其他部门。把问题反应给HR小姐姐后,他提前帮忙给我安排面试,二面通过后HR和一面面试官帮忙去线下找Boss和招聘员,从阿里健康部门那边要回我的简历(花了几天时间),又继续安排我的第三轮技术面,非常感激!
注意:大厂各个部门,子公司是共享招聘信息的,挂一次会被记录,所以不要毫无准备就无脑投递,如果一个企业生态连续3个以上部门面试被挂,就考虑换一个企业把,因为短时间连续挂,会影响下一场面试。