工作多年的我是如何从零到一转型到Java并拿到多个大厂offer的——《我的Java打怪日记》

简介: 从转型原因到艰难的迈出第一步,一路走来深有感触,但结果是令人满意的。相信当前及以后会有很多人会面临相似的选择,这里写出来仅供大家参考。

1. 为何要转技术栈?

在这之前,我已有五六年的C/C++的开发经验,Java相关的知识还是在大学里学习过,工作以后就没再接触过相关的内容。那是什么原因促使我产生转技术栈的念头呢?


答案很简单,生活所迫。说的更全面一点,我个人其实也是有一股很强烈的好奇心,喜欢探索新领域,挑战自己把握不了的事情。


很多小伙伴可能会有疑问,C/C++不是收入更高吗?怎么转型的原因会是生活所迫?

这和公司分布、房产价格、户口有关。这里不做展开,感兴趣的小伙伴可以单独联系。

2. 迈出第一步

大概可以这么理解,百度、腾讯等做搜索和社交的公司内的开发职位大多数是以C、C++为主,总部集中在北京、深圳;阿里巴巴、蘑菇街等电商类公司内的开发职位大多数是以Java为主,总部集中在杭州。


做转型迈出第一步是非常困难的,这里包括圈子里的技术鄙视链,做C/C++的鄙视做Java的,很多人会不理解你为何会做此选择;另外没有Java领域的开发经验,几乎所有的头部公司尤其是大公司会明确say no。


但凡事皆有例外。比如在17年风头正盛的某公司,发展速度非常快,人员需求非常强烈,我更愿意相信是公司相信开发语言只是一种工具,重点看候选人基础是否扎实,人是否聪明,满足这些特质通过短时间学习可以很容易快速上手。


互联网圈子其实很小,我很快捕捉到了这个公司,约了某个晚上面试,一共三面,两轮技术一轮HR,面试过程围绕算法展开,需要伪代码实现,2个多小时全部搞定。这是至今为止我遇到的面试效率最高的一家。

3. 快速学习

先说结果:通过我的博客可以看出学习的过程和时间线,通过2个多月的学习,基本掌握了java里的一些基础知识、构建工具以及相关开源的集成、部署等系统,至此,可以看明白代码并完成第一次应用发布了。


这里的经验是带着一线实际运行的业务服务代码来看,一点点的扣,一点点的梳理。

我学习的服务代码框架是spingboot + redis + ehcache + mybatis, 编译工具是gradle,集成工具是Jenkins,发布系统是marathon。


开发工具也发生了变化,之前是通过notepad++或者vim,Java里会使用IDEA-IntelliJ。


这里面给我困惑最多的是注解,由于之前从未见过如此写法,一上来感觉有点懵逼,看了多篇注解的写法以及追踪进去查看注解的实现,才有了一些认识。


基础知识储备到一定阶段以后,开始尝试动手创建一个SpringBoot工程,有个整体的体感,对应的教程网上有很多,我原来收藏的链接现在无法访问了,就不贴了。

image.png

4. 小试牛刀

开始做第一个应用的小需求编码,需求的具体内容记不太清了,大致是一个写多读少的场景,用于保存一些信息。涉及到了分库分表的设计,以及基于mybatis的增删改查。


一路坎坎坷坷,遇到了各种编译不通过问题、打包问题、部署问题等等,此处的建议是一定要自己钻研(查看相关文档、分析运行原理),实在搞不定再借助Google,最后确实搞不定再选择求助身边同事。


发布过程一定是有多套环境及灰度策略的,除了造数据验证流程之外,还要密切关注应用的日志输出和监控大盘,持续至少30分钟。


虽然过程坎坷,搞到凌晨半夜才把服务发上去,但系统代码运行还是很稳的,没有遇到bug导致的回滚以及业务问题。


问题大致一览:

redis异常

Caused by: java.util.NoSuchElementException: Unable to validate object at

定位后发现是redis配置不对,uris少了个引号…


mybatis绑定异常

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.example.UserMapper.search

定位后发现

In src/main/resources your folder is named com.example (look at your system directory). Instead, you should have folder com and inside folder example then put your UserMapper.xml inside and run your app again.

即resources目录下定义了一个叫com.example的目录,而不是嵌套目录,com/example  🤦‍♂️


在idea里看起来是一样的,但是去到本地系统文件里看,实际上是建立了一个目录,名字叫这一串。


还有很多排查后的低级错误,这里就不一一列举了。


5. 深入浅出


重点学习了JVM、RPC框架(dubbo)、本地缓存ehcache以及Java里的高级特性的基础知识补充。

image.png


这个过程历时两个月,中间也看了一些技术书籍,这里重点推荐一下Doug Lea的《Java并发编程》,对于concurrent包、automic包,synchronized锁、AQS锁、CAS的实现,NIO等。

并发编程网 http://ifeve.com/doug-lea/


6. 更多选择

经过前两个阶段共四个多月的学习,Java的基础知识已经基本掌握了,也顺利的开发了几个线上的迭代需求并发布上线,对从开发到测试到上线完整的流程有了清晰的了解。这个过程是进步最快的过程,接下来就是多次迭代需求增强这种经验了。


经过半年的技术沉淀,基本对Java领域的开发轻车熟路了,基础、框架、工具、监控等有了通盘的认识,是时候检验一下自己的掌握程度了 -_-


按照公司规模从小到大的顺序,分别聊过工具类、金融类、综合类、出行类、电商类的多家公司,结果还不错,80%的企业都聊的蛮顺利,offer率也还不错,达成了5成以上。


经过一年多的转型,使自己有了更多的选择。


很多时候选择大于努力。


7. 后记

目前通过另一种技术工种进入大厂已有两年时间,对当前的状况非常满意,现在回头来看,对于之前转型的决定,要给过去的自己一个大大的赞。


当然不同的人有不同的背景和选择,个案仅供参考。

过程中如果有更多需要交流的,可以留言评论或者发邮件给我,我的邮箱swmabby@gmail.com


本文完。

目录
相关文章
|
6月前
|
人工智能 Java 大数据
Java程序员真的还有未来吗?如何备战2024春招?并狂拿大厂offer?
Java程序员还有未来吗? 嘿,小伙伴们,你们有没有想过Java程序员还有没有未来? 哈哈,别担心,我这就来给你们答疑解惑! 首先,让我们来看看Java的发展历程。自从Java诞生以来,它就一直是编程界的一颗璀璨明星。从Web应用到企业级应用,再到移动应用,Java无处不在。那么,现在呢?现在,随着人工智能、大数据和云计算的兴起,Java依然发挥着重要的作用。这些领域都需要大量的Java程序员来支持它们的发展。 那么,有人会说:“哎呀,现在出现了那么多新的编程语言和框架,Java程序员会不会被淘汰啊?”哈哈,别担心,Java程序员们!这些新语言和框架的出现并不会让Java消失。相反,它们
137 0
|
6月前
|
NoSQL Dubbo Java
唯品会三年,我只做了5件事,如今跳槽天猫拿下offer(Java岗)
xxx,都是好牌子,天天有三折” 是的,我在这家洗脑广告词公司里工作了整整三年时间,虽然是大家耳熟能详的互联网电商公司,但它的发展同其他新起互联网公司来说局限了很多,同时也早早遇到了瓶颈。好在三年前,我就开始规划了我自己的人生,所以在唯品会的三年时间里,我并未懈怠。
|
4月前
|
安全 Java 程序员
【Java探索之旅】多态:向上下转型、多态优缺点、构造函数陷阱
【Java探索之旅】多态:向上下转型、多态优缺点、构造函数陷阱
46 0
|
6月前
|
消息中间件 运维 前端开发
java云his系统源码 B/S版+saas智慧医院云his系统源码 二甲医院应用多年 运行稳定
Java云HIS系统,SaaS模式,适用于二甲医院,稳定运行多年。包括B/S版电子病历,支持四级标准,具有自主知识产权。系统涵盖挂号、收费、病历、药物管理、统计报表、综合维护及运营运维功能。前端使用Angular+Nginx,后端基于Java+Spring系列,数据库为MySQL+MyCat,缓存Redis+J2Cache,集成RabbitMQ、XxlJob等。电子病历系统支持在线创建、管理和打印,采用SpringBoot、Mybatis-Plus等技术,提供一体化解决方案。系统优势在于模板化、配置化设计,便于使用和扩展。
79 1
java云his系统源码 B/S版+saas智慧医院云his系统源码  二甲医院应用多年 运行稳定
|
6月前
|
存储 安全 Java
剑指offer全集系列Java版本(2)
剑指offer全集系列Java版本(2)
36 0
|
6月前
|
存储 Java
剑指offer全集系列Java版本(1)
剑指offer全集系列Java版本(1)
42 0
|
6月前
|
算法 Java C++
刷题两个月,从入门到字节跳动offer丨GitHub标星16k+,美团Java面试题
刷题两个月,从入门到字节跳动offer丨GitHub标星16k+,美团Java面试题
|
6月前
|
NoSQL Java 关系型数据库
五面阿里巴巴拿offer后定级P6:分享Java面经及答案总结
一面(电话) 说说对JVM的理解 treemap和hashmap有什么区别? Java多线程的的5大状态图流转 mysql主键和唯一索引的区别 说说最近的项目
|
6月前
|
消息中间件 缓存 架构师
复习这份美团架构师的Java核心面试宝典,我四面阿里拿下offer
怎样才能拿到大厂的offer,没有掌握绝对的技术,那么就要不断的学习 他是如何拿下阿里等大厂的offer的呢,今天分享他的秘密武器,美团资深架构师整理的Java核心知识点,面试时面试官必问的知识点,篇章包括了很多知识点,其中包括了有基础知识、Java集合、JVM、多线程并发、spring原理、微服务、Netty 与RPC 、Kafka、日记、设计模式、Java算法、数据库、Zookeeper、分布式缓存、数据结构等等。
|
6月前
|
消息中间件 NoSQL Java
读完这些“Java技术栈”,拿下阿里Offer没问题
今天,要分享的这些是非常干货的面试知识,在疫情闭关期间,这些“Java技术栈”读完,斩获offer到手软。