分享:在阿里做 Java 开发的这五年,收获与感悟
正好在离职交接空档期,就抽空简单分享自己的一些个人经历给大家,希望对刚毕业不久或者工作三五年的同学能有一些帮助。
个人经历
正文前先来一些简单的自我介绍,这部分水分较多,如果没兴趣的同学可以直接跳到第二部分看些面试题。
我是 16 年本科毕业,毕业第一年在福建上班,17 年到杭州,来杭州前,自己花了很长时间准备面试,本来信心满满,但是到了杭州,还是遇到很大的挫折。我还记得,当时有一个面试官问我说你说下什么是分布式,或者简单讲下集群和分布式的区别,我当时就卡壳了。之前在福建的时候我们做的项目,并发量非常少,并且我们服务一共也就是两三台机器,仅仅是为了做负载均衡用。虽然面试前做了很多准备,看了很多分布式相关的东西,并且说项目的时候也吹了一把,项目如何用到分布式,但是当面试官叫我简单讲下集群和分布式的区别的时候,居然一时答不上了。现在想想真的很尴尬。
但杭州不愧是互联网之都,机会真的非常多,也可能是跟我前期准备比较足有关系,或者是我面的公司都比较小还是公司比较缺人的原因,反正记得当时我也拿了挺多 offer。后面经过朋友推荐,选择了一家阿里系的合资公司。现在回过头来想想,真的非常感谢在杭州第一段工作的这段经历,在这里我遇到了很多很多优秀的同事(后面这些同事绝大多数也都去了阿里),也遇到了很不错的老板,并且也真正接触到了所谓的并发、分布式、集群、大促等项目经验。现在回想,真的很庆幸当时遇到的同事。我们当时那个团队真的氛围非常好,学习气氛很强烈,我们当时经常私下组织技术分享,那段时间成长了非常非常多,不仅仅是最前沿的互联网技术,还有学习习惯。在这家公司我得到了非常多的机会,并且我每个机会我也都把握住了,半年后我甚至都当上了 5、6 个成员的小组组长,当时距我毕业还没两年。我还记得当初晋升谈话的时候,有个评委跟我说的,你才刚毕业两年就开始带人了,这个对你是挑战也是一个坑,不管是技术和经验你都非常欠缺,一定不要迷失自己,对技术要始终抱有热情,不断进步。这句话我也同样送给在规模比较小的公司,刚开始工作不久就开始带人的其他同学。
到 18 年中,我跳槽到了蚂蚁金服,就是做花呗借呗的那个阿里巴巴下面的蚂蚁金服。当时跳槽纯粹是因为身边很多同事都慢慢收到阿里的 offer,其实作为我们当初那个阶段的计算机专业的人来说,基本都有一个 BAT 的梦(现在是 2021 年了,可能当初的 BAT 已经不那么香了)。我看到大家都出去尝试也心动了,就投了阿里的岗位。应该算是一点实力加一点运气吧,本来我是面的钉钉,后面阴差阳错去了蚂蚁金服。
蚂蚁金服我是 18 年 8 月入职的,到 21 年的 1 月底,差不多两年半时间。因为我现在还在职,处在交接阶段,这里有很多事就不方便说了。在这里我遇到过很多挑战,同时也遇到很多牛逼的同事,学习到了很多做事方式。即将离开蚂蚁了,这里我也总结几个工作经验,包括我自己做的不好的几个地方,希望对后面的同学有一点借鉴:
在阿里这种大厂,其实在很多公司也一样,沟通和反馈是非常非常重要,一味埋头苦干的人其实是很吃亏的。我见过好几个踏实做事的同学被打上‘325’走人的。所有一定要学会在老板和同事面前包装和表现自己。
需求太多、运维工作量太大,平时各种琐事会充满你所有的时间(甚至包括你的睡眠时间和周末时间),一定要学会解脱(思考解法或者寻求帮助再或者甩给别人),然后自己抽身去做些有成长有意思的事情,只有这样你才有时间去搞些容易拿 KPI 的项目,不然到时候你剩下的只有抱怨为什么这么忙,为什么脏话累活都是你干。实际上这些抱怨一点用都没有,在老板和大多数人眼里,只能说明你什么事都搞不定。以结果为导向的价值观里,过程是不重要的!
一般人的工作目的无非是为了在同等的条件下,获取更高的物质回报。如果你确实努力了也拼命了,还是得不到老板的精神认可,获取不到自己想要的物质回报,你要么改变自己,要么就改变环境-或者换个环境。
工作是公司的,只有技术、成长还有健康是自己的。此处不留爷,自有留爷处,但是打铁还需自身硬,说白了,你想跳槽也是要看你实力,在日常工作中一定要抽时间多学习多总结,互联网这行业,技术更新换代速度太快,只有自己成长才是王道。
面试经验
我面的岗位都是 java 开发,前前后后面了很多一二线互联网公司,其中包括腾讯,阿里,滴滴,网易,美团、头条、快手等等,下面的文章水分较少,都是一些面试干货。希望能为大家圈一些“考试范围”,给大家面试带来一点点帮助。
当然文中涉及的资料也是可以免费分享的
第一个点:
我要说的就是面试时间点很关键,这直接决定了你的竞争力和拿到 offer 的难度。同一个岗位,不同时间点面试,难度和要求是不一样的。因为这里要看缺人的程度和岗位 HC 的数量 根据我的观察,在杭州互联网的话,一般每年年底机会比较多。另外就是如果有认识的人,推荐得比较急的或者“放水”几率比较大的岗位的话,那么你拿到 offer 的可能性自然而然就比较高,这就是我前面说的面试是实力的基础上加一点运气。
第二个点:
java 基础,我是毕业 4 年半,即将 5 年,面的岗位有开发工程师,有开发专家(近期也拿到过一二线厂的开发专家的 offer)。基本每次面试都要准备一下 java 面试常见的“八股文”,也基本每次都会被问到,比如锁、spring、比如 jvm 垃圾回收,比如 hashmap 等等,这些基础的肯定要掌握,甚至要滚瓜烂熟,举一反三。这里有一些大牛总结的面试必背题(包含答案),大家面试前可以看看,里面全是干货。
阿里内部流传很广的一份 Java 笔记:非常全,适合补全基础。
第三点:
笔试题。最近两年的面试一些大厂基本都要做一些笔试题,一般都是牛客网上面出题,这些题大多数都是一些算法题,基本都是 leetcood 的原题,所以要准备面试的同学,要提前适应一下,去 leetcood 上面刷刷题。一般面试官会根据你的面试表现然后出一些不同难度的题目,如果你面试问题回答的比较好,给的题目就相对比较简单,如果回答的不好,可能就直接给你一道 hard.
不过根据我的经验,大多数情况给的题都是 leetcood 上面热题 100 的中等难度的原题。算法题更多的是思路问题,建议先去力扣刷些题,然后再看视频找思路,最后再刷题总结;
刷题路线与视频:
第四点:
各种常用的中间件原理、源码:一些常用的框架比如 rpc、任务调度、缓存-redis、MQ 等等,特别是你项目中运用到的一些中间件,一定要掌握他的原理,如果有时间最好撸一下核心源码,一般的面试官很喜欢问这些东西,特别是小厂跳大厂的时候。这里东西太多,我就不做总结了。
第五点:
项目。说项目的时候如果是业务项目,就要体现出项目的难点和解法,最好有高并发、大数据量,怎么保证稳定性等等。如果是框架型的项目,就要体现出他的平台性、怎么保证高可靠等等。然后就是你在项目中做的哪些比较有特色的事,最难的事情(这个时候就是要活学活用了,不管是不是你做的,你只要能说的上来就是你的)。
这里可能有很多同学没接触到什么有难度的项目,就是项目在面试官眼中是没什么挑战性的,那这个时候你最好要准备一个中间件类似的项目说一下,来吸引一下面试官的眼球,比如限流、比如任务调度、比如配置平台等等,这些都是通用的万能的项目,很容易集成到自己的业务项目中。我这里给大家推荐这个项目+代码,不要再用假商城项目去面试了!
第六点:
场景题。一般面试官会出一些场景题,让你给出一些解决方案。遇到比较多的就是秒杀场景,或者其他的并发相关的场景。这个没有标准答案,就是看你的知识面了,能自圆其说就 ok。回答的时候尽量考虑全面一些,多围绕下面几个点展开:容量规划、架构设计、缓存、数据迁移、同步方案、分库分表、高并发解决方案、数据一致性、幂等、甚至考虑一下回滚、性能压测、监控报警方案等,尽量全面一点,把你的知识面铺开。
经验不足的朋友,可以学习一下这份高并发架构设计笔记:
小结
离职交接期无聊,就简单地回顾一下自己的这几年的一些工作经历,顺便把这段时间积累的一些面试经验分享给大家,希望对大家有一点点帮助。另外,后面如果想起什么其他有意思的点我会继续补充进去。
评论