前言
没有绝对的天才,只有持续不断的付出。对于我们每一个人来说,改变命运只能依靠努力+幸运,但如果你不够幸运,那就只能拉高努力的占比。
我,26岁,双非研究生毕业,学的土木工程相关的专业。工作半年,存款3000,半年后调到深圳总部(公司央企),工作一年差不多也就几万存款,感觉生活无望,就直接决定转行的28岁高龄程序员。之所以叫自己高龄程序员是因为一直听说35岁是程序员的失业转折点。
我当时觉得自己好歹过了计算机二级,也会些matlab,也听说IT工资高,就直接放土木工程农民工,转行IT。转行的时候有两点支撑着我:一是相信我读那么多书,学习能力绝对没问题,二是以我读书的经验,相信自己学两年应该能赶上。
说干就干,2021年7月,我有幸成为了阿里的一名Java研发工程师,正如标题所说,我从央企辞职了,10000小时之后,走进阿里巴巴拿到了offer。相信大家都清楚,从双非学校跨专业转行,再进大厂有多难,运气之余,也离不开我自己的脚踏实地,所幸每踏出的一步都留下了厚厚的脚印。
下文内容涉及到:面试题(含答案)+学习笔记+电子书籍+学习视频,免费打包分享,如有需要点击>这里<,凭截图即可免费领取
A:阿里巴巴Java岗面试经历还原
一面(基础面:大约60分钟)
- 自我介绍
- 对象相等的判断,equals方法实现。 Hashcode的作用,与 equal 有什么区别?
- Java中CAS算法?
- G1回收器讲一下?
- HashMap,ConcurrentHashMap与LinkedHashMap的区别
- 如何在多线程环境下使用Map,ConcurrentHashMap原理,ConcurrentHashMap如何加锁。
- 多线程并发的同步实现,有两个方法,每个方法里有a部分代码和b部分代码,我要让两个线程分别执行两个方法,并且让他们运行完a部分代码再一起向下执行,如何实现。
- TCP连接中的三次握手和四次挥手,四次挥手的最后一个ack的作用是什么,为什么要time wait,为什么是2msl。
- aio,nio,bio的了解
- ReetrantLock和synchronized的区别。
- Java有哪些悲观锁的实现?
- Java有哪些类实现了乐观锁?
二面(死抓多线程问)
- 线程池有哪些参数?分别有什么用?如果任务数超过的核心线程数,会发生什么?阻塞队列大小是多少?
- 数据库连接池介绍下,底层实现说下
- hashset底层实现,hashmap的put操作过程
- 说说HaspMap底层原理?再说说它跟HaspTable和ConcurrentHashMap他们之间的相同点和不同点?
- 说说B+树和B树的区别,优缺点等?
- 算法题,对一个链表进行归并排序,链表可能有环
- 怎么实现一个线程安全的计数器?
- 原子类AtomicInteger实现原理是什么?和你设计的计数器优劣比较?CAS怎么实现原子操作的?
- Java中的锁有什么?synchronized与Lock的区别?公平锁和非公平底层怎么实现的?AQS原理详细介绍一下?
- 你在项目中一般怎么调优JVM的呢?
- 说一下GC吧,什么时候进行Full GC呢?
- 你了解哪些收集器?CMS和G1。详细谈谈G1的优点
三面(Redis和mysql)有java基础转行做什么好
- 了解哪些排序算法,讲讲复杂度
- 手撕归并排序
- Redis有哪些数据结构?底层的编码有哪些?有序链表采用了哪些不同的编码?
- redis的hash数据结构最多能存储多少个元素
- 自己如何实现RPC?
- mysql默认存储引擎?MyISAM、InnoDB、MEMORY的区别
- 什么是幻读,如何解决
- 事务隔离级别有什么?通过什么来实现的?分别解决了什么问题?
- 乐观锁与悲观锁的使用场景
四面( 分布式架构 dubbo spring cloud Kafka 数据库)
- 介绍对你技术能力帮助最大的项目,重点讲架构设计思路
- 分布式全局唯一ID怎样来实现?
- dubbo的生产者如何发布服务,注册服务,消费者如何调用服务?
- dubbo负载均衡的策略有哪些?一致性哈希详细聊一下?
- 分布式session如何实现的
- 微服务你的理解?以及常用的微服务方案dubbo、spring cloud的比较?
- Kafka怎么保证数据可靠性?
- 数据库主从同步数据一致性如何解决?技术方案的优劣势比较?
- 分布式锁的实现方式你知道有哪些?主流的解决方案是什么?
- Spring两大特性?AOP和IOC
- Spring的初始化过程?Spring bean的生命周期?
- 多个RPC请求进来,服务器怎么处理并发呢?
HR面(常规问题为主,见招拆招)
1.遇到什么挫折
2.职业规划
3.对阿里的认识
4.有什么崇拜的人吗
5.希望去哪里就业
7.有什么兴趣爱好,能拿得上台表演的有吗 记忆深刻的事情
面试总结(一些心得和小建议)
- 提前刷题真的很有必要,不然基本上没戏,运气好的说不定还能被问到原题,当然你是大神,就不需要浪费时间在这上面了。
- 基本上每轮都有算法题,1~3道左右,难度不一,一般根据当次面试情况来的,会考虑的面试者的表现,但也不会太为难你。
- 一定要自信,敢于表达,面试的时候我们对知识的掌握有时候很难面面俱到,把自己的思路说出来,而不是直接告诉面试官自己不懂,这也是可以加分的。
B:我为什么想要去阿里?(阿里的优势)
①福利待遇
我不是hr,也不是给阿里打广告,这里真的要提一下阿里的福利待遇绝对是一线厂子里数一数二的。加上我是完全跨行走入IT圈,让我觉得能够进阿里工作算是我最大的幸运了。
至于福利待遇,这里随便提及几点:
- 不仅员工,也关爱员工家人,推出各项 买房、父母体检、子女教育基金等相关计划
- 各种丰富的活动假期和团建
- 免费舒适的餐厅,还有夜宵(吃胖了)
- 免费健身房
- 各种节日礼包
②提升实力
在小公司虽然接触面广,但有时候做的事情越多,越不能精专一门,再加上很多公司制度不完善,无论是薪资还是职位,都很难得到大的提升。而在阿里体系相对比较完备,有一套成熟的人才培养计划,也给了我更大的提升空间。
③我看到了认同
来到阿里,我看到了认同,收获了归属感。在做事上有共同一致的目标,这里的人讲“阿里范儿”,它不是条条框框的束缚,它是一种精神食粮,实质是一种价值认同。恰好,拥有同一种价值认同的人走到了一起。
④虽辛苦,但不感觉累
阿里是一家非常年轻化的公司,对于一线的互联网公司来说,996是常态,阿里也脱离不开“加班”二字。但是给我最大不同的感受是,忙碌且生机勃勃。在这工作一段时间了,我也算是跟上了这里的节奏,虽然辛苦,但我却一点也不感觉累,因为在充实的工作环境中,我是有所收获的,在公司野蛮生长的同时,我个人也得到了快速的成长。
另外,别以为一线大厂的“打工人”只会死工作,这里人最大的特点就是年轻,他们同样会玩,每个人都有自己的爱好,骑行、狼人杀、健身、摄影、瑜伽等等,这与我之前对大厂人的印象显然不同,我也一点一点在慢慢被影响着。
⑤反思:关注工作效率
以前觉得自己的工作效率和时间管理做得还不错,至少能拿出时间做一点大家想做却没有做的事情,但现在才发现这也许只是错觉,你总做容易的事情,当然不会感觉到时间的压力,即便是项目进度比较紧的时候,加加班,搞搞996似乎也就那么回事。我们通常都会愿意延长时间,而不是考虑如何提高效率,在同样的时间内完成更多的工作,当然也有很多不言自明的客观原因。
来阿里,我才从身边同事的工作细节中看到了什么才是“效率”。
C:这两年的学习我积累了什么?怎么度过的?
确认方向后,先是咨询了一些计算机专业的校友,然后直接辞职在家,从Java初级入手,每天自学超过16个小时,并且第一个月就接了3000元的外快。半年内,还接了一个一万多的单。这些都给了我很大动力。
后来,不到一年的时间,我就找到一家外包,薪资8K。当时真心感觉到人生选择的重要性。外包工作不到一年,又跳槽涨到了13k。天天下班后就是学习,那种为了涨薪而学习的动力相当的足,期间学会了Java、threejs,数据库,React等,直到两年后我来到了阿里。
很多人认为在外包学不到什么东西,但我却不这么认为,无论你身处什么环境,造成什么样结果的人都是你自己。所以,在外包工作的这些年,我并不是每天单一的机械化敲代码,在这个过程中,我主动地去复盘,去总结,去学习,而慢慢积累的工作方式才铸就了我今天的“质变”。
在这两年期间,我复盘了什么?做了哪些总结?(写了一些博客,做了一些笔记总结,附下PDF)
Java架构成长笔记
Redis核心技术笔记(学习总结)
Spring全家桶学习笔记(SpringBoot+SpringMVC+SpringCloud+源码等)
其它
D:下一个3年如何规划?
1.确定发展方向程序员生涯大致分为五个阶段:
- 第一阶段:2-3年,初级程序员
- 第二阶段:3-5年,中级程序员
- 第三阶段:4-7年,高级程序员
- 第四阶段:5-8年,互联网架构师,大数据工程师
- 第五阶段:8年+,技术总监,技术主管,首席架构师
目前,我处于第二阶段,有一定的工作经验,可以独立做一些项目,也有自己的代码习惯,甚至在团队中我也可以担任重要的角色。而日后的1-2年内,我肯定是要往三阶段过渡,甚至是四阶段过渡。
2.梳理学习路线
想要快速成长,一条合理且正确的学习路线才是最为重要的,所以梳理学习路线,是我目前学习上最重要的事情。(个人梳理的学习路线图如下) 目标:能够独当一面,在专业领域具备辅导他人的能力 学习内容:并发编程与JVM实战+缓存中间件+消息中间件+搜索中间件+高并发+高可用+搞扩展+网络通信与协议+分布式与微服务+分布式权限控制+微服务熔断降级与限流+微服务链路追踪+底层&源码深入解读+一线大厂分布式场景实战
3.学习方法我个人的学习方法很简单,利用碎片时间进行系统性的学习。关于学习方法,我个人喜欢阅读书籍文档结合视频的方式,对于这些我自己个人也有一些整理。
- 阅读书籍文档:
- 看视频学习:
结尾:未来愿景及祝福
我知道,对于一些学历没有优势又不是科班出身的人来说,外包是别无选择,但是未来的路究竟要怎么走,取决你的步子迈多开。每个人都有自己的选择,如果你喜欢稳定,那按部就班适合你,但你有想法,不甘平庸,那就别让世俗埋没了你。
最后,希望未来的我发展顺利,早日拿下p7!同样,也祝愿你实现自己的人生理想,愿我们都越来越好,共勉! 友情分享:文章码字不容易,希望多多点赞+转发+评论支持一波。需要文章中提到的面试题、笔记、电子书、学习视频,可以关注我,然后点击>这里<,凭截图即可免费领取
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/19447.html