一位材料专业研究生的Java转型复盘

一、自我介绍

先来个自我介绍吧,本硕都是材料专业,还依稀记得当初考研就是为了有个更好的平台,以后想要读博的,可当自己进入研究生阶段后,发现事实却并非像自己想象的那种剧情发展的。 对方向的不感兴趣(组里第一个这个方向,老板啥也不懂),尝试了一学期,无果,遂放弃!

期间接触了编程,决定转向互联网了。 毕竟向我们这种偏基础学科的硕士出来其实挺尴尬的,高不成低不就的,认识的很多都转行了(大多数去了房地产,采购、销售、供应链之类的,很少说有转互联网做开发的)。

我个人编程语言水平可能就只是停留在写 HelloWord 的水平上,虽说学了小半年的 Python,但说实话没学到什么,若不是今年 2 月底打算学 Java 的话,可能现在还在为工作焦虑!

因为我开始的比较晚了,8月中旬才开始投简历。 整个到签约为止,期间面试了 7 家(阿里电话一面、南京的一家公司,也是电面(开始预约面试的时候没听清楚是哪家公司,后面没好意思问)、ThoughtWorks、赛迪信息、华为、浪潮以及中兴),其中拿到了赛迪信息、中兴以及浪潮等offer。

女朋友在重庆这边,而且我也想呆在重庆,所以就签了中兴,毕竟中兴给的工资在重庆真的算是很不错的啦,属于中上水平,但如果相对于其他的一线城市还是一般。 下面就自己的整个学习过程介绍一下吧,可能是比较典型的,毕竟我真的是零基础转的。

二、学习历程

从聊天记录上看,加峰哥的时间是2018年11月25日,当时就已经把我拉进了大数据学习群,不过去年那时候我一直学的是 Python。 直到今年的 2 月20 号,稳不住了,看到群里很多都是根据峰哥的路径拿到了大厂 offer,特别是看到佳佳的经历,几个月转行,自学 Java拿到了百度、Keep 等大厂 offer,心想我是不是也可以呢?

从 2 月底便拉开了学习 Java 的序幕。 从 Java SE -> 项目 -> 多线程 -> JVM 的打法路线 。 Java SE 就是看的慕课网的三个基础视频,看完也就大概知道了基本的语法,然后就直接找峰哥刚项目了,也不知道哪来的勇气。

其实刷基础视频的时候有很多都一知半解的,自己那个时候啥都不知道,经常纠结到需要彻底弄懂不,峰哥也跟我说别让这个影响自己的学习流程,不会的先跳过,很多其实后面就会弄懂的,事实确实也是这样的。

还有就是学习 Java SE 的时候最好能与峰哥的面经结合起来一起看,学到什么地方,看到面经上有的及时整理到博客里,一定及时整理! 这个时候时间差不多是 3 月底 4 月初了。

后面自己越学其实心里越觉得是无底洞,什么多线程啊,JVM 是啥并不知道,而且老板还一直催我进度,每次开组会都被痛批,常担心自己能不能毕业,能不能顺利找到工作,真是那段时间感觉自己都快抑郁了。 一遇到烦心事就会找峰哥诉苦,真是峰哥都没觉得我烦,耐心解答,真的是非常感谢峰哥!

640?wx_fmt=png

烦心事是有,但是也不能让其一直影响自己的进度,可以先休息一小段时间,理清主次,循序渐进。

后面峰哥给了我一个传智的 Java 基础视频,让我看看里面的多线程和 JVM。 不得不说看视频是真的慢,但是的确讲的通俗易懂。 看完这个视频大概花了接近两个月吧,好吧那会自己的效率确实也不高,主要还是那段时间被老板逼的很,白天做实验,晚上有时还要做,苦逼的很。

看完这个视频差不多就到 6 月份了,看完立马又开始写博客,根据面试题来记录常见的知识点,虽然很功利性,但是确实是一条捷径。 我自己不仅仅看了峰哥的面经,网上自己也找了其他的面经综合在一起,这样也更全面! 峰哥的面经是主线,其他的搭配在一起效果更佳。

对了我自己在多线程和 JVM 这两块看了两本书(当然没看完,只是重点看了几章),多线程就是《Java 并发编程的艺术》,JVM 是《深入理解 Java 虚拟机》。 第一次看可能会觉得有难度,特别是 JVM 这块,基本上又都是纯理论方面的,第一次没看懂再看一次,着重看重点的几章,其他的可以适当了解,要分清主次,你是为了找工作而学习的(虽然有点急功近利),而不是要深入的完全研究透彻,以后工作了多的是机会的!

第一个项目刚完后,心里没底,一直想自己动手搭搭 SSM 的框架之类的,毕竟自己只是懂得大致的技术栈的原理,对于里面的细节实现实在是不清楚。 事实证明面试的时候,面试官问的实现细节很少很少,具体的面试过程会在后面提及。

6 月份开始后,自己没有急着刚项目,而是对于前面学的知识,Java SE、多线程以及 JVM 等进行一个复习,其实也就是看面经(看面经最好还是一开始看到哪就把那一块的面经给吸收了,后面也可以多复习复习),然后整理到自己的博客里,便于自己后期的复习。

640

有次看集合源码的时候,有个地方不懂,问了下峰哥。 确实也是如峰哥所说的那样,不要为了看源码而看源码,记住它的原理流程就行。 比如 HashMap,一般问的多的也就是它的执行逻辑,比如 put() 方法具体的执行顺序,先干什么后干什么等等,也会随着问你扩容之类的,有些会问到 HashMap 的多线程,也就是 ConcurrentHashMap,JDK1.7 和 1.8 是有区别的。

后面也基本上就进入了暑假了,今年暑假我们老板破天荒的给我们放了4周的假期,按以往都只有两周,真是这4周对我来说太宝贵了! 有了全心全意为秋招备战的时间,不用担心动不动就被老板找,做实验之类的杂事了。

暑假的几周大部分时间都是在刷算法,没错,暑假才开始刷算法,6月底也就大概看看剑指offer,没有动手敲过,只是理解其思想,进入暑假才开始动手敲。 我是先从排序查找算法开始动手敲的,然后再动手做剑指 offer 的题目,时间太有限了,那本书没有敲完,好吧,只敲了一半多点。

算法这一块,千万不要学我, 真的,有时间得尽早的刷,我是没办法,开始的太晚了。 可以先刷剑指offer这本书,还有时间的话可以刷刷 LeetCode 上的题目! 这样基本上笔试和面试手撕算法基本上是问题不大的。

很多公司其实早就开始了提前批,但是我总怀疑自己的能力迟迟没有投递简历。 直到 8 月中旬的时候将项目二学的差不多的时候,才慢慢开始投递。 总共投递的简历不少于110份吧,我记录的就有90多份,还有很多没有及时记录下来的,还有很多在大街、51job等网站直接投的。 我当时心里想的就是我要多积攒面试经验,我投100份,如果有十分之一能进面试我就满足了,实在不行我就投200,300份。 总会有拿到 offer 的。

640

三、面试过程

一、阿里一面

阿里一面是电话面,不得不说阿里的效率真的高,记得8月中旬不到8月20号内推的,不到一周就约了面试,佩服佩服。 当时面试的时候面试官开的扩音,根本听不清说的什么,有时候要问几遍,尴尬,以后如果有听不清的一定得及时提醒面试官吧,不然本来面试自己就很紧张,加上听不清导致最终效果会差很多的。

1.Zookeeper 的一些原理,介绍一下 Zookeeper,主要还是涉及 ZAB 协议
2. Zookeeper 的选举机制
3.RabbitMQ 在项目里的使用场景
4.结合 Dubbo 和 Zookeeper 一起
5.JVM 的类加载机制
6.Memcached 的缓存机制

还有一些当时没有及时记录下来,忘记了。 基本上就是围绕你的简历来提问的! 所以简历上有什么内容一定一定一定得非常熟悉!

二、南京的某企业

打电话的时候在自习室,急着插耳塞走出去没听清前面自己的介绍,后面没好意思问,就不知道具体是哪家公司。

1.简历上的两个项目的技术栈是有点出入的,问自己在使用上有过什么比较之类的;
2.模块怎么拆分的?比如你项目里面用到了 Dubbo,你做的模块哪些服务是依赖了别人的 Dubbo 服务的?
3.消息队列主要是传递什么消息的?
4.try…catch…会对应多个 catch 块的使用场景
5.常见的注解使用
6.常见的集合类型,怎么实现的?问源码,主要讲了 HashMap
7.Java的什么版本,JDK1.7 与 1.8 的区别?
8.String 的常用方法
9.你有什么想问的?

三、ThoughtWorks

笔试: 跟牛客网里面的一模一样,无人机的路线规划,这个没有标准答案,主要还是让面试官知道你的优化的过程。 笔试完后会让你拿你的结果找面试官去谈你的答案,笔试也会让你写出代码来,我没写出来,很大可能也是因为这个所以才挂的。 跟面试官交谈后等了一会就是无领导小组讨论,会有5个左右的面试官在周围走来走去观察你的情况,当时讨论的是一个项目占有率越来越低,想开发另一个项目,从原项目里选取相关人员调到新项目里。

四、赛迪信息

真正意义上的线下专业面试,之前 ThoughtWorks 感觉也不算是专业面试。 这是最想去的几家公司之一,是中冶赛迪(钢铁设计院)旗下的专门做信息化智能化方面的公司,业务之一是做智能制造方向,跟我的专业有很大的契合度,后面签中兴的原因是该公司流程太慢了,都面了一两周了还没有消息,私信 hr 也没人回,而且中兴也发了签约通知(现在我们学校是网签,发起签约通知后只有 48h 的考虑时间),最终没办法只能签中兴。

一面技术:
  1. 面向对象的三大特性是什么?
  2. 重写和重载的区别?
  3. 同一个文件里面可不可以有两个 public 类,这个当然是不可以的啦~
  4. 基础数据类型以及相应的占多少字节?
  5. stringbuilder 和 stringbuffer的区别?
  6. 类的一个加载机制(加载->验证->准备->解析->初始化,我真的就只是说了这个,也没有简单的对其介绍,当时心里还想的要不要再简单介绍一下的,看面试官没说,我就没管了)
  7. 双亲委托模型
  8. HashMap 与 TreeMap 的差别?
  9. 讲述一下快排
  10. ZAB 协议
  11. 消息同步是怎么同步的? (忘了?)
  12. 有一个 SQL 查询很慢,怎么去排查? (不知道,尴尬)
  13. 联合索引了解过没? (不懂)
  14. 数据库的隔离级别?
  15. Redis 的数据类型支持
  16. 数据的备份模式? (不了解)
  17. Solr 的倒排索引
  18. Memecached 和 Redis 的区别?
  19. Redis 持久化方式?
  20. 一致性 Hash
  21. 多线程,线程池的创建方式。
  22. 如果都满了怎么整? (不知道)
  23. sleep 和 wait 的区别?
  24. 架构这方面有没有设计,数据库设计? (大概说了一下数据库的设计)

赛迪一面结束刚下楼梯,就打电话让我回去进行二面,二面 hr 也说了她这里不怎么刷人,问了下我期望的薪资,保守说了 8k,hr 笑了笑说期望的有点偏低,问是哪的人? 为什么想呆在重庆……后面通过了会有一个测评链接,一般都不会刷人。 但是过了一段时间hr先公布了一批人(做测评的),我没在名单里面,心里慌了,总在想是不是自己笔试的时候没做好(笔试成绩是71分,过了70才能有后面的面试,所以我是刚刚过了笔试),隔了几天又出来了名单,这才安下心来。

五、华为一面
只记得这么些,面试过程中被劝退,他丫的。

  1. 先自我介绍一下
  2. 介绍一下你的项目
  3. 你说到项目主要负责微信商城订单模块,那 session 是怎么管理的。
  4. 用到了 Dubbo 和 Zookeeper,说一下 Zookeeper 的选举机制
  5. SpringMVC 讲一下请求的过程
  6. Memcached 是怎么实现的?
  7. 多线程相关
  8. 讲一下GC
  9. 手撕算法:给一个字符串,再输入一个字母,输出最近的离这个字母的数组。比如:[loveleetecode]  e 输出:[3,2,1,0,1,0,0,1,0,1,2,1]。

六、浪潮
6个应聘者,3个hr,群面? 开始分别进行自我介绍,然后从我开始进行技术面试:

  1. JAVA中,类的组成(当时听不懂啥问题,尴尬)
  2. 8种基本数据类型(应该是答出来了的,但是当时面试官只说我答出7种)
  3. Dubbo 和 Zookeeper 的区别(当时很懵,后面面试官说了,Dubbo的底层 xxxx 也可以作为注册中心)
  4. Redis 和 MQ的区别(答的不好,后面面试官纠正了)
  5. 你都用了哪些数据库 (自然是 MySQL了,当时还以为会继续追问的,并没有)
  6. 介绍一下 Zookeeper。

只记得这么多了,我被问的时间比较长,然后最后面试官的结论是不是很熟悉底层的知识。

七、中兴
一面:

  1. 先做个自我介绍
  2. 数据库三大范式?
  3. SQL 查询语句,年龄段之间的人数统计
  4. JAVA多态实现需要的条件?(我只回答道继承,还有方法的重写,还需要有父类的引用指向子类对象(丫的,不知道怎么说后面两点,其实是知道的))
  5. JAVA 线程启动,有哪些方式?
  6. 另一个hr,问有发表论文吗?是学硕还是专硕?
  7. 你还有什么问题吗?
流程走的贼快,面试过程也超快,一面不到10分钟,二面也就10来分钟,一面当一个 hr 说我这边没什么问题了看另一个 hr 的时候,我就在想不会这么快吧,果真另一个 hr 就问了有没有发表论文是专硕学硕? 就没了,就没了,整个 9 分钟多一点,出来还以为必挂,哪知道最后竟然走完了全程……

二面 hr 面:基本上没有问任何的技术问题,拿到简历就问了一下用 Redis 是干嘛的,就没了,其他就是关于加班看法,期望工资之类的。

四、总结

1.明确目的,规划好路线。 秋招自己想往哪个方向发展,前端? 后端? 还是其他方向。 确定好大的方向后规划好自己的学习路线。 对于初学者来说,最好是有前辈带着复习,因为很多时候自己一个人闷着学习,经常会被自己带偏的。

2.给自己设定一个 deadline。 每一个模块学习的时间设定一个大概的 deadline,这样更容易把控好学习的节奏。 比如学习 Java SE,看完基础视频大概要多久,每天要学习的内容是什么,还需要自己及时总结,能写到博客里是最好的,便于后期的回顾。

3.简历里面所写的内容一定要非常熟悉。 你写的有哪些技术栈,它的基本原理以及相应的应用场景等等都要非常熟悉。

4.最后一点,也是最重要的,转行要趁早,早就是优势!

--end--

扫描下方二维码
添加好友,备注【交流群
拉你到学习路线和资源丰富的交流群
640?wx_fmt=jpeg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值