当前位置:网站首页 > Java基础 > 正文

有java基础转行做什么好



前言

没有绝对的天才,只有持续不断的付出。对于我们每一个人来说,改变命运只能依靠努力+幸运,但如果你不够幸运,那就只能拉高努力的占比。

我,26岁,双非研究生毕业,学的土木工程相关的专业。工作半年,存款3000,半年后调到深圳总部(公司央企),工作一年差不多也就几万存款,感觉生活无望,就直接决定转行的28岁高龄程序员。之所以叫自己高龄程序员是因为一直听说35岁是程序员的失业转折点。

我当时觉得自己好歹过了计算机二级,也会些matlab,也听说IT工资高,就直接放土木工程农民工,转行IT。转行的时候有两点支撑着我:一是相信我读那么多书,学习能力绝对没问题,二是以我读书的经验,相信自己学两年应该能赶上。

说干就干,2021年7月,我有幸成为了阿里的一名Java研发工程师,正如标题所说,我从央企辞职了,10000小时之后,走进阿里巴巴拿到了offer。相信大家都清楚,从双非学校跨专业转行,再进大厂有多难,运气之余,也离不开我自己的脚踏实地,所幸每踏出的一步都留下了厚厚的脚印。

下文内容涉及到:面试题(含答案)+学习笔记+电子书籍+学习视频,免费打包分享,如有需要点击>这里<,凭截图即可免费领取

A:阿里巴巴Java岗面试经历还原

一面(基础面:大约60分钟)

  1. 自我介绍
  2. 对象相等的判断,equals方法实现。 Hashcode的作用,与 equal 有什么区别?
  3. Java中CAS算法?
  4. G1回收器讲一下?
  5. HashMap,ConcurrentHashMap与LinkedHashMap的区别
  6. 如何在多线程环境下使用Map,ConcurrentHashMap原理,ConcurrentHashMap如何加锁。
  7. 多线程并发的同步实现,有两个方法,每个方法里有a部分代码和b部分代码,我要让两个线程分别执行两个方法,并且让他们运行完a部分代码再一起向下执行,如何实现。
  8. TCP连接中的三次握手和四次挥手,四次挥手的最后一个ack的作用是什么,为什么要time wait,为什么是2msl。
  9. aio,nio,bio的了解
  10. ReetrantLock和synchronized的区别。
  11. Java有哪些悲观锁的实现?
  12. Java有哪些类实现了乐观锁?

二面(死抓多线程问)

  1. 线程池有哪些参数?分别有什么用?如果任务数超过的核心线程数,会发生什么?阻塞队列大小是多少?
  2. 数据库连接池介绍下,底层实现说下
  3. hashset底层实现,hashmap的put操作过程
  4. 说说HaspMap底层原理?再说说它跟HaspTable和ConcurrentHashMap他们之间的相同点和不同点?
  5. 说说B+树和B树的区别,优缺点等?
  6. 算法题,对一个链表进行归并排序,链表可能有环
  7. 怎么实现一个线程安全的计数器?
  8. 原子类AtomicInteger实现原理是什么?和你设计的计数器优劣比较?CAS怎么实现原子操作的?
  9. Java中的锁有什么?synchronized与Lock的区别?公平锁和非公平底层怎么实现的?AQS原理详细介绍一下?
  10. 你在项目中一般怎么调优JVM的呢?
  11. 说一下GC吧,什么时候进行Full GC呢?
  12. 你了解哪些收集器?CMS和G1。详细谈谈G1的优点

三面(Redis和mysql)有java基础转行做什么好

  1. 了解哪些排序算法,讲讲复杂度
  2. 手撕归并排序
  3. Redis有哪些数据结构?底层的编码有哪些?有序链表采用了哪些不同的编码?
  4. redis的hash数据结构最多能存储多少个元素
  5. 自己如何实现RPC?
  6. mysql默认存储引擎?MyISAM、InnoDB、MEMORY的区别
  7. 什么是幻读,如何解决
  8. 事务隔离级别有什么?通过什么来实现的?分别解决了什么问题?
  9. 乐观锁与悲观锁的使用场景

四面( 分布式架构 dubbo spring cloud Kafka 数据库)

  1. 介绍对你技术能力帮助最大的项目,重点讲架构设计思路
  2. 分布式全局唯一ID怎样来实现?
  3. dubbo的生产者如何发布服务,注册服务,消费者如何调用服务?
  4. dubbo负载均衡的策略有哪些?一致性哈希详细聊一下?
  5. 分布式session如何实现的
  6. 微服务你的理解?以及常用的微服务方案dubbo、spring cloud的比较?
  7. Kafka怎么保证数据可靠性?
  8. 数据库主从同步数据一致性如何解决?技术方案的优劣势比较?
  9. 分布式锁的实现方式你知道有哪些?主流的解决方案是什么?
  10. Spring两大特性?AOP和IOC
  11. Spring的初始化过程?Spring bean的生命周期?
  12. 多个RPC请求进来,服务器怎么处理并发呢?

HR面(常规问题为主,见招拆招

1.遇到什么挫折

2.职业规划

3.对阿里的认识

4.有什么崇拜的人吗

5.希望去哪里就业

7.有什么兴趣爱好,能拿得上台表演的有吗 记忆深刻的事情

面试之前收集的各种面试题


面试总结(一些心得和小建议)

  1. 提前刷题真的很有必要,不然基本上没戏,运气好的说不定还能被问到原题,当然你是大神,就不需要浪费时间在这上面了。
  2. 基本上每轮都有算法题,1~3道左右,难度不一,一般根据当次面试情况来的,会考虑的面试者的表现,但也不会太为难你。
  3. 一定要自信,敢于表达,面试的时候我们对知识的掌握有时候很难面面俱到,把自己的思路说出来,而不是直接告诉面试官自己不懂,这也是可以加分的。

B:我为什么想要去阿里?(阿里的优势)

①福利待遇

我不是hr,也不是给阿里打广告,这里真的要提一下阿里的福利待遇绝对是一线厂子里数一数二的。加上我是完全跨行走入IT圈,让我觉得能够进阿里工作算是我最大的幸运了。

至于福利待遇,这里随便提及几点:

  1. 不仅员工,也关爱员工家人,推出各项 买房、父母体检、子女教育基金等相关计划
  2. 各种丰富的活动假期和团建
  3. 免费舒适的餐厅,还有夜宵(吃胖了)
  4. 免费健身房
  5. 各种节日礼包

②提升实力

在小公司虽然接触面广,但有时候做的事情越多,越不能精专一门,再加上很多公司制度不完善,无论是薪资还是职位,都很难得到大的提升。而在阿里体系相对比较完备,有一套成熟的人才培养计划,也给了我更大的提升空间。

③我看到了认同

来到阿里,我看到了认同,收获了归属感。在做事上有共同一致的目标,这里的人讲“阿里范儿”,它不是条条框框的束缚,它是一种精神食粮,实质是一种价值认同。恰好,拥有同一种价值认同的人走到了一起。

④虽辛苦,但不感觉累

阿里是一家非常年轻化的公司,对于一线的互联网公司来说,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!同样,也祝愿你实现自己的人生理想,愿我们都越来越好,共勉! 友情分享:文章码字不容易,希望多多点赞+转发+评论支持一波。需要文章中提到的面试题、笔记、电子书、学习视频,可以关注我,然后点击>这里<,凭截图即可免费领取

版权声明


相关文章:

  • 0基础入行java2024-11-09 09:50:05
  • 零基础java与python2024-11-09 09:50:05
  • 0基础java知乎2024-11-09 09:50:05
  • 玉溪java编程基础入门机构2024-11-09 09:50:05
  • java基础教学兼职2024-11-09 09:50:05
  • Java如何自定义基础数据类型2024-11-09 09:50:05
  • JAVA 牛客补基础2024-11-09 09:50:05
  • java零基础学习班2024-11-09 09:50:05
  • java基础教学2542024-11-09 09:50:05
  • java面向对象基础类2024-11-09 09:50:05