拿到阿里offer,回馈牛客~【更新中,附上笔记】

写在前面:第一次在牛客写面经分享,记录了自己的学习历程和面试经历,我相信同时适合校招和社招的同学~
先介绍楼主情况,楼主已经毕业十个月,不知名渣本,目前已拿到阿里核心部门P6 offer,同时还有一些其他大厂offer,已经接了阿里,不准备继续搞了。毕业校招时候也是在牛客刷的面经和算法题,终于如愿进入阿里,来牛客还愿,同时回馈一下牛客,给小鲜肉们分享一波学习心得和面试经历(附上答案),也有一些自己的一些学习笔记,我相信同样适合准备校招的你~希望大家在春招都能拿到想要的offer~

---------------------------------手动分割线--------------------------

一、准备过程

最开始计划的是半年,但实际上花了两个月左右的时间,期间还要工作,但感觉准备的差不多了,于是就投递了简历,以下是当时列的准备计划:

要求自己写出技术博客(每周一篇)

  • 1、Jvm相关,内存,类加载,调优,volatile
  • 2、MQ相关,MQ架构原理,技术难点,性能
  • 3、rpc相关,dubbo架构设计,技术难点
  • 4、系统设计相关,秒级监控系统,秒杀系统,日志收集系统
  • 5、分布式相关,容灾,熔断,异地多活,负载均衡,分布式锁,限流等遇到的一系列问题

不需要写博客,但需要复习的基础知识(实际使用时间:2月1日 - 3月5日)


  • 1、多线程,线程池,线程调优
  • 2、NIO,Netty,网络协议,涉及到的OS交互
  • 3、SSM,hibernate工具等框架类
  • 4、mysql,innodb引擎,b+树存储结构,索引,事务原理,分库分表,弹性库自动扩容原理
  • 5、Redis原理,分片,主从架构设计,技术难点,工业用法,性能
  • 6、ES,mongonDB,Hbase,hadoop,会使用层次即可,优缺点对比分析
  • 7、Zk原理,架构设计,性能,优点,不用作注册中心理由,脑裂等常见问题
  • 8、常用设计模式,结合工程深入浅出


附上当时做的计划一些截图:


image.png


每日作息计划截图:

image.png

二、谈一谈阿里面试

1、简历一定要好好写,简历我改了一个月了。以下是简历要点:

  • 不会的一定一定不要写,我简历上每一个词,每一句话我都准备了三个以上的 基础问题 + 三个以上的场景题 + 一句亮点表述,这很重要(什么叫亮点表述?就是针对这个词的阐述面试官一听就觉得你牛逼,在道上)
  • 简历一定要突出重点,面试官一眼扫过去心里都是卧槽,这家伙牛啊,就是我想要的人
  • 写简历要换位思考,你是面试官你看到这封简历,一眼扫过去是什么感觉,找出认为不好的地方修改
  • 如果时间足够,建议针对岗位写好简历,可以写上自己不会的内容,然后针对自己的简历的每一个字去准备面试

2、面试阶段,如何十分钟搞定面试官?

首先我要说的是,其实很多同学在准备面试的过程都有误区,背了很多面试题,面试官问的也都答出来了,但还是挂了。那是因为大家答的不在点上。面试其实比较注重候选人的深度,如果在一个点上答的好,面试官认为你答的有深度,其他的这个层次的其他问题就不会问了,就会和你聊下一个阶段内容了。
举个例子,比如他让你讲讲什么是类加载,你说类加载的过程是链接,装载,解析,七个步骤,然后有三层类加载器等等,这种他肯定还得一直问下去,因为大家都是这么背的。但是如果你说,类加载器的本质其实就是通过文件操作扫描到应用classpath下的Jar包,然后读取Jar包里的class文件,经过解析,校验等等一堆乱七八糟的操作之后,再将文件里的字节码内容加载到内存里,供后面类实例化为对象使用,实例化对象的时候会根据已加载的类信息去做分配内存,初始化成员变量等等一些工作。OK,你这样回答之后,什么Java map数据结构,jvm内存模型,内存屏障面试官统统不会再问了,最多再象征性的问几个。

为啥?因为面试官已经知道你的水平了,这种简单的问题他再问就显得自己不上道了,所以,如果时间不够,不如深入的准备好几个问题。这种情况即使后面面试官的后面的升阶问题你全答不出来,那你也比那些答了一个多小时基础问题的人评价要高了,因为你们已经不在一个水位了。

三、面经放送

楼主根据上面的准备技巧,所以被问的问题其实不多,基础问题甚至基本没怎么问(写好简历真的很重要),以下是具体面经:

1、你说你熟悉多线程,说说你对线程池的理解

答:线程池入参+拒绝策略简单介绍,然后分析线程池核心线程数以及队列大小如何设置,执行过程中线程数增加和队列数增加对应用的影响,并举例压测无法打满cpu如何调整线程池参数,最后介绍如何通过重写线程池执行方法,改变线程池现存弊端。面试官表示认可,没有追问。

2、那你是怎么理解类加载的?

答:类加载器的本质其实就是通过文件操作扫描到应用classpath下的Jar包,然后读取Jar包里的class文件,经过解析,校验等等一堆乱七八糟的操作之后,再将文件里的字节码内容加载到内存里,供后面类实例化为对象使用,实例化对象的时候会根据已加载的类信息去做分配内存,初始化成员变量等等一些工作。

3、那类加载器为什么有三层结构,双亲委派是做什么的?

答:简单介绍双亲委派概念和及oot,ext,appClassLoder负责加载的作用域。然后表示双亲委派的目的其实是为了避免类的重复加载,我们也可以通过自定义类加载器去破坏双亲委派,常用于插件隔离,容器隔离等场景(这里点到为止,故意抛出等待面试官询问)。

4、那你说说怎么自定义类加载器做容器隔离?

答:先引出应用常见容器tomcat,然后介绍了容器隔离的场景,最后介绍了如何通过classCache解决隔离通信问题,这里表述比较多,校招不会问这么深入,就不展开了。至此,面试官没有再问我任何基础问题,包括我准备的锁,jvm内存模型,NIO等等一系列问题。开始怼分布式了。

5、介绍下你的项目吧。

答:此处略过问答20分钟

6、设计下缓存吧,如果数据库写成功了,但是缓存更新失败了,读到了脏数据怎么办?

答:写库前先更新缓存,使缓存失效,缓存失效后再更新数据库,数据库异步同步缓存,同时将状态更新为有效。

7、那同时来了两个更新请求,同时失效掉缓存,然后第一个请求导致数据更新了,并将缓存状态置为有效,此时第二个请求更新数据库后,还未更新缓存此时系统挂了。数据库与缓存数据不一致导致读取脏数据怎么办?

答:数据库字段加版本号,缓存value中也加版本号,每次更新数据库时版本号+1,然后异步同步数据到缓存,并将缓存版本+1,读取缓存时对比缓存中的两个版本号,如果一致则返回,不一致则读库。面试官不再追问分布式相关问题,开始问系统分析和架构设计。

8、你如何保证系统的稳定性?

答:分布式的链路一般都很长,所以我们首先通过全链路压测,分析整个链路,到底是哪个节点出现瓶颈。如果是数据层出现瓶颈,那么可以考虑加缓存,读写分离等降低数据库压力,如果短期流量很大,一天就能打满一个库,那么要考虑扩库。数据层如果没问题,瓶颈在应用层,那么需要先分析应用代码是否有问题,jvm是否可调优,线程池是否可调优,rpc超时时间设置是否正确,如果应用代码没问题,那么可以加docker,进行水平扩容。如果问题不在己方链路,在于依赖服务,那么要推进对方进行性能优化,并且最好降级预案。如果系统已经最优,无法进行优化仍然承受不了流量,那么只能做限流处理了。然后又介绍了一些流量隔离等等业内解决方案。

以上为主线问题,附上一些其他问题:

  • 注解怎么实现
  • 秒杀系统怎么解决超卖问题,还有其他实现方式吗
  • redis分布式锁怎么实现,和zk实现的区别
  • rpc一次请求过程,从序列化,压缩,线程池讲讲,越细越好
  • mq顺序消费如何做
  • mq可靠交付如何保证
  • gc问题排查,cpu过高如何排查
  • es倒排索引介绍下,range和filter的区别,查询性能飘高怎么解决
  • es字段设计有什么要点,和数据库对比下

四、再次总结面试

二面三面一直到HR都很顺利,面试官也都很Nice,就先写到这了,看的人多就再写吧。希望大家能通过我的面试经验,发现面试官想要的到底是什么,然后做针对性的准备,不要白白花了时间,却达不到预期效果。其实就是我之前说的,面试官觉得你会了,就不会再问你同等基础问题了,如果问了你一小时基础,那么你就要当心了,可能要凉。

另外,靠谱内推真的很重要,现在阿里内推真的一片乱象,真真假假真的分不清了,很多人推了就不管你了。给我内推的小哥是我在MM勾搭的,人很靠谱,一直给我推进流程,还帮我做了一些面试辅导,给了我很多建议,大家也要擦亮眼睛,选好内推~这里也在此感谢阿里小哥~
已经入职现在是我师兄,开心~

五、写在最后

准备的过程很累,当时激励自己的一句话是,愿有岁月可回首,同样也希望大家岁月无悔,一起加油~

---------------------------------手动分割线--------------------------

以上是上周发布的内容,由于触发牛客规则,被禁言+永久降权帖子,哭死。所以很多后面向我要笔记和私聊我的同学我没能回复了,在此说声抱歉,T T。
另外我已经入职,需要内推的同学可以简历发我师兄 【hushu.czh@alibaba-inc.com】,我们部门好像没什么简历。。。好可怜的样子。。。作为社招人告诉你们,我们真的是核心BU。。。
老大开会说所有的简历都会当天处理,流程很快~需要的小伙伴也可以私戳我,我可以帮忙做简历修改和面试问题辅导~但是牛客好像说多了会禁言,如果我没回复了,就是被禁言了啊~ T T
因为是为团队招聘,所以我们只收Java研发简历~
部分笔记直接奉上了,码字不易,同学们帮忙顶个贴,谢谢各位小可爱了~
以下是部分笔记:
问题准备:http://note.youdao.com/noteshare?id=a8b1a09f888d8e1c7d5d388dbe9a27b9

更新:
校招/社招内推有需求/疑问的同学也可以加我们团队招聘负责人的微信(任何有疑惑的问题都可以问他~):chen1076850595
#春招##阿里巴巴##社招##Java工程师##面经##内推#
全部评论
给自己顶一下~
3 回复 分享
发布于 2020-04-07 16:24
担心面试?不存在的,有疑问无处解答?请看这里,阿里巴巴欢迎你~1对1解答,有问题必答!!!欢迎骚扰!!! https://www.nowcoder.com/job/17334?jobIds=21171
2 回复 分享
发布于 2020-04-08 17:29
内推流程无法推进?面试挂了?复活币来了,研发速进! https://www.nowcoder.com/discuss/401881
1 回复 分享
发布于 2020-04-07 18:53
恭喜楼主,有JAVA方向的同学,想面盒马开发岗的,欢迎联系我啊
1 回复 分享
发布于 2020-04-07 19:39
&m
点赞 回复 分享
发布于 2020-04-07 14:53
楼主是科班出身么😶
点赞 回复 分享
发布于 2020-04-07 18:58
请问阿里面试会手撕代码吗?
点赞 回复 分享
发布于 2020-04-07 19:26
为你点赞
点赞 回复 分享
发布于 2020-04-07 20:53
mark
点赞 回复 分享
发布于 2020-04-07 21:35
楼主是社招的吗
点赞 回复 分享
发布于 2020-04-07 21:47
借楼,阿里巴巴飞猪搜索与数据团队急招算法、开发(java、c++)、数据分析岗位,hc多,主管直推,欢迎投简历至xueyong.wxy@alibaba-inc.com, 别的部门挂了也可尝试我们团队。
点赞 回复 分享
发布于 2020-04-07 21:49
&大佬有博客链接吗?我去关注下😂
点赞 回复 分享
发布于 2020-04-07 22:09
感谢大佬
点赞 回复 分享
发布于 2020-04-07 22:36
优秀,给大哥顶贴
点赞 回复 分享
发布于 2020-04-08 08:01
楼主能加个好友么
点赞 回复 分享
发布于 2020-04-08 10:24
&19届吗
点赞 回复 分享
发布于 2020-04-08 11:18
直接p6😳
点赞 回复 分享
发布于 2020-04-08 11:22
大佬 理解得透彻了
点赞 回复 分享
发布于 2020-04-08 11:25
这个社招感觉很难呀,不愧是大佬
点赞 回复 分享
发布于 2020-04-08 11:54
恭喜,請問BASE是?
点赞 回复 分享
发布于 2020-04-08 12:14

相关推荐

头像
11-07 01:12
重庆大学 Java
精致的小松鼠人狠话不多:签哪了哥
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 11:07
点赞 评论 收藏
分享
87 349 评论
分享
牛客网
牛客企业服务