⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 juejin.cn/post/6914581750111076359 「不行就改名」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

正好在离职交接空档期,就抽空简单分享自己的一些个人经历给大家,希望对刚毕业不久或者工作三五年的同学能有一些帮助。

1:个人经历

提文前先来一些简单的自我介绍,这部分水分较多,如果没兴趣的同学可以直接跳到第二部分看些面试题。

我是16年本科毕业,毕业第一年在福建上班,17年到杭州,来杭州前,自己花了很长时间准备面试,本来信心满满,但是到了杭州,还是遇到很大的挫折。我还记得,当时有一个面试官问我说你说下什么是分布式,或者简单讲下集群和分布式的区别,我当时就卡壳了。之前在福建的时候我们做的项目,并发量非常少,并且我们服务一共也就是两三台机器,仅仅是为了做负载均衡用。虽然面试前做了很多准备,看了很多分布式相关的东西,并且说项目的时候也吹了一把,项目如何用到分布式,但是当面试官叫我简单讲下集群和分布式的区别的时候,居然一时答不上了。现在想想真的很尴尬。

但杭州不愧是互联网之都,机会真的非常多,也可能是跟我前期准备比较足有关系,或者是我面的公司都比较小还是公司比较缺人的原因,反正记得当时我也拿了挺多offer。后面经过朋友推荐,选择了一家阿里系的合资公司。现在回过头来想想,真的非常感谢在杭州第一段工作的这段经历,在这里我遇到了很多很多优秀的同事(后面这些同事绝大多数也都去了阿里),也遇到了很不错的老板,并且也真正接触到了所谓的并发、分布式、集群、大促等项目经验。现在回想,真的很庆幸当时遇到的同事。我们当时那个团队真的氛围非常好,学习气氛很浓烈,我们当时经常私下组织技术分享,那段时间成长了非常非常多,不仅仅是最前沿的互联网技术,还有学习习惯。在这家公司我得到了非常多的机会,并且每个机会我也都把握住了,半年后我甚至都当上了5、6个成员的小组组长,当时距我毕业还没两年。我还记得当初晋升谈话的时候,有个评委跟我说的,你才刚毕业两年就开始带人了,这个对你是挑战也是一个坑,不管是技术和经验你都非常欠缺,一定不要迷失自己,对技术要始终抱有热情,不断进步。这句话我也同样送给在规模比较小的公司,刚开始工作不久就开始带人的其他同学。

到18年中,我跳槽到了蚂蚁金服,就是做花呗借呗的那个阿里巴巴下面的蚂蚁金服。当时跳槽纯粹是因为身边很多同事都慢慢收到阿里的offer,其实作为我们当初那个阶段的计算机专业的人来说,基本都有一个BAT的梦(现在是2021年了,可能当初的BAT已经不那么香了)。我看到大家都出去尝试也心动了,就投了阿里的岗位。应该算是一点实力加一点运气吧,本来我是面的钉钉,后面阴差阳错去了蚂蚁金服。

蚂蚁金服我是18年8月入职的,到21年的1月底,差不多两年半时间。因为我现在还在职,处在交接阶段,这里有很多事就不方便说了。在这里我遇到过很多挑战,同时也遇到很多牛逼的同事,学习到了很多做事方式。即将离开蚂蚁了,这里我也总结几个工作经验,包括我自己做的不好的几个地方,希望对后面的同学有一点借鉴:

1:在阿里这种大厂,其实在很多公司也一样,沟通和反馈是非常非常重要,一味的埋头苦干的人其实是很吃亏的。我见过好几个踏实做事的同学被打上'325'走人的。所以一定要学会在老板和同事面前包装和表现自己。

2:需求太多、运维工作量太大,平时各种琐事会充满你所有的时间(甚至包括你的睡眠时间和周末时间),一定要学会解脱(思考解法或者寻求帮助再或者甩给别人),然后自己抽身去做些有成长有意思的事情,只有这样你才有时间去搞些容易拿KPI的项目,不然到时候你剩下的只有抱怨为什么这么忙,为什么脏话累活都是你干。实际上这些抱怨一点用都没有,在老板和大多数人眼里,只能说明你什么事都搞不定。以结果为导向的价值观里,过程是不重要的!

3:一般人的工作目的无非是为了在同等的条件下,获取更高的物质回报。如果你确实努力了也拼命了,还是得不到老板的精神认可,获取不到自己想要的物质回报,你要么改变自己,要么就改变环境-或者换个环境。

4:工作是公司的,只有技术、成长还有健康是自己的。此处不留爷,自有留爷处,但是打铁还需自身硬,说白了,你想跳槽也是要看你实力,在日常工作中一定要抽时间多学习多总结,互联网这行业,技术更新换代速度太快,只有自己成长才是王道。

2:面试经验

我面的岗位是java 开发,前前后后面了很多一二线互联网公司,其中包括腾讯,阿里,滴滴,网易,美团、头条、快手等等,下面的文章水分较少,都是一些面试干货。希望能为大家圈一些“考试范围”,给大家面试带来一点点帮助。

第一个我要说的就是面试时间点很关键,这直接决定了你的竞争力和拿到offer的难度。同一个岗位,不同时间点面试,难度和要求是不一样的。因为这里要看缺人的程度和岗位HC的数量 根据我的观察在杭州互联网的话,一般每年年底机会比较多。另外就是如果有认识的人,推荐的比较急的或者“放水”几率比较大的岗位的话,那么你拿到offer的可能性自然而然就比较高,这就是我前面说的面试是实力的基础上加一点运气。

第二个点,java基础。我是毕业4年半,即将5年,面的岗位有开发工程师,有开发专家(近期也拿到过一二线厂的开发专家的offer)。基本每次面试都要准备一下java面试常见的“八股文”,也基本每次都会被问到,比如锁、spring、比如jvm 垃圾回收,比如hashmap等等,这些基础的肯定要掌握,甚至要滚瓜烂熟,举一反三。

第三点:笔试题,最近两年的面试一些大厂基本都要做一些笔试题,一般都是牛客网上面出题,这些题大多数都是一些算法题,基本都是leetcode的原题,所以要准备面试的同学,要提前适应一下,去leetcode上面刷刷题。一般面试官会根据你的面试表现然后出一些不同难度的题目,如果你面试问题回答的比较好,给的题目就相对比较简单,如果回答的不好,可能就直接给你一道hard。不过根据我的经验,大多数情况给的题都是leetcode上面热题100的中等难度的原题。

第四点,各种常用的中间件原理、源码:一些常用的框架比如rpc、任务调度、缓存-redis、MQ等等,特别是你项目中运用到的一些中间件,一定要掌握他的原理,如果有时间最好撸一下核心源码,一般的面试官很喜欢问这些东西,特别是小厂跳大厂的时候。这些知识点大家可以根据网上的文章和自己的情况去做一些相应的准备。这里东西太多,我就不做总结了。

第五点,项目。说项目的时候如果是业务项目,就要体现出项目的难点和解法,最好有高并发、大数据量,怎么保证稳定性等等。如果是框架型的项目,就要体现出他的平台性、怎么保证高可靠等等。然后就是你在项目中做的哪些比较有特色的事,最难的事情(这个时候就是要活学活用了,不管是不是你做的,你只要能说的上来就是你的)。这里可能有很多同学没接触到什么有难度的项目,就是项目在面试官眼中是没什么挑战性的,那这个时候你最好要准备一个中间件类似的项目说一下,来吸引一下面试官的眼球,比如限流、比如任务调度、比如配置平台等等,这些都是通用的万能的项目,很容易集成到自己的业务项目中。

第六点,场景题。一般面试官会出一些场景题,让你给一些解决方案。遇到比较多的就是秒杀场景,或者其他的并发相关的场景。这个没有标准答案,就是看你的知识面了,能自圆其说就ok。回答的时候尽量考虑全面一些,多围绕下面几个点展开:容量规划、架构设计、缓存、数据迁移、同步方案、分库分表、高并发解决方案、数据一致性、幂等、甚至考虑一下回滚、性能压测、监控报警方案等,尽量全面一点,把你的知识面铺开。

3:小结

离职交接期无聊,就简单的回顾一下自己的这几年的一些工作经历,顺便把这段时间积累的一些面试经验分享给大家,希望对大家有一点点帮助。另外,后面如果想起什么其他有意思的点我会继续补充进去。

文章目录
  1. 1. 1:个人经历
  2. 2. 2:面试经验
  3. 3. 3:小结