震惊!文科生如何三个月转行成为Java工程师?
作者:以大橘为重(链接:
身为19届应届生,我在牛客上收获颇丰,实习与秋招也带来了不少offer(Java后端开发工程师)。在20届春招即将拉开帷幕之际,我整理了大量的资料,并乐于与众人分享。接下来,请允许我为大家分享我的学习经历与心路历程。
我要说的是,自己并非天赋异禀的大神,也未能斩获一堆的ssp。我希望能将我的经历分享给大家:一个高中时期数学成绩并不理想的人,是如何凭借自己的努力找到了程序员的工作。
回顾我的学习历程,从大一开始,我就对自己所学专业的就业前景抱有疑虑。在CS领域似乎成为了一种流行趋势的背景下,我决定转专业。在大一那年,我对自己是否适合这一行并没有太多把握。尽管如此,我还是自学了JavaSE并阅读了一系列相关书籍。当时的我摸索着前进,开发了一个XX管理系统。
大二时,我面临了更多的挑战。除了繁重的课程任务外,我还努力自学JavaEE技术。那时我对Java的原理和框架知之甚少,仅停留在使用的层面。我曾经误以为学习更多框架就能证明自己优秀,但这显然是错误的观念。那时的我做了很多demo,但缺乏真正的项目经验。我还因为其他原因在数据分析上投入了大量精力而半放弃了Python的学习。这并不代表我的编程学习停滞不前了。
随着大三上的尾声临近,我对未来的方向产生了深深的思考。尽管拥有保研的机会,但我选择了放弃,内心的考量如下:
1. 向往更广阔的学术天地,希望能在更优秀的学校、更前沿的领域深造。
2. 倾向于将精力投入到更有实际价值的领域,如机器学习,而非传统的Java开发。
3. 不愿再为读研而耽误时间,担心在追求学术的途中错过职场的发展机遇。
我也认为自己前两年为求职已打下了一定的基础,并不算是从零开始。迷茫过后,我开始思考应该学习哪些技能,以及如何深入学习。为此,我花费了大量时间在牛客网上寻找面试经验,阅读了超过百篇的面经,逐渐明确了方向。
寒假来临,我回家准备迎接春招。复习内容囊括了数据结构与算法、操作系统、计算机网络、数据库理论等基础知识。对于这部分的复习,我主要依赖自己之前上课时整理的笔记。我还深入研究了Java、分布式技术、框架及中间件等领域。这个寒假,我阅读的书籍数量甚至超过了前两年阅读的总和。
书籍列表如下:
《Java并发编程实战》
《Java并发编程的艺术》
《深入理解Java虚拟机》
《Java编程思想》
《分布式Java应用 基础与实践》等
还有一些书籍虽然我还没有来得及阅读,但它们在我的书单上占有重要地位:《Redis设计与实现》、《MySQL技术内幕 InnoDB存储引擎》、《大规模分布式存储系统》等。为了深化对Netty、Dubbo等技术的理解,我还决定将其应用于实际项目,并为此付出了极大的努力。为此,我亲手构建了一个RPC框架,最初的版本只有一千行代码左右。这个过程既充满挑战也充满收获。在探索网站的编写时,尤其是那些尚未正式上线的项目,我们常常陷入一种困境,感觉自己的创造力受限,翻来覆去都在使用别人的东西。面试,尤其是阿里巴巴的面试,对技术的原理要求极高。当你在项目中使用了某种技术或工具,你能否清晰地解释其工作原理。通过亲手打造一些技术小轮子,如自定义的组件或框架,你能够深入了解其内部机制,这比仅仅阅读源码会有更深刻的理解(这并不是说阅读源码就不重要,只是相对而言)。
随着春招的来临,我总共投递了18家公司,最终收到了来自酷家乐、快手、菜鸟、携程和网易的offer。我选择了菜鸟作为我的落脚点,主要是出于阿里巴巴对Java开发者的强大吸引力。说起菜鸟的经历,真的很有趣。去年我曾在此实习过,这次的内推机会是一位师兄通过Github上的项目找到的。他给我发来邮件,对我的项目赞不绝口。但后来当我问起是哪一个项目引起了阿里大佬的注意时,师兄却笑说他们其实并没有筛选,是全发了...这让我有些尴尬又觉得有趣。
之后在实习期间,尽管学校规定要等到七月份期末考完才能外出实习,但考虑到实习时间太短可能无法做出实质性的成果,我决定在五月份中旬就提前开始实习。那段时间我频繁往返南京与杭州之间,买了十几张高铁票。
实习之前的日子,从四月初到五月初我经历了一段颓废期。虽然知道后面还有秋招的机会,但我还是沉迷于游戏和小说。在技术上,我主要完善了WebServer项目,将原有的BIO网络实现升级为BIO/NIO/AIO。
实习期间我主要完成了几个任务:给师兄研发的中间件开发Web控制台、开发一个快递相关的业务系统以及一个类似于ABTest的系统。虽然第一个任务的业务相对简单,但在这个过程中我了解了很多集团内部的中间件技术。为了更深入的理解和学习,我还阅读了师兄自研的中间件的源码并做了总结。然而实习过程中也并非一帆风顺,比如那个快递相关的业务系统,我投入了大量时间,但就在代码快写完的时候突然收到项目取消的通知,这对我是一个很大的打击。这件事让我对业务开发产生了负面情绪,也成为我后来离职重新准备秋招的主要原因。
在实习后期,我意识到我所做的工作技术难度不大且难以学到新的东西。于是我想尝试去做中间件或基础设施的研发工作。在矛盾和挣扎中我决定重新投入秋招的准备中。这期间我花了两个多周的时间重新编写了一个RPC项目并参考了Dubbo的分层结构。此外我还深入研究了Dubbo、RocketMQ等中间件的源码。
到了秋招阶段,我主要关注偏技术的岗位并联系了一些阿里的其他部门。遗憾的是并没有通过集团的中间件的面试。最后收到了包括蚂蚁中间件在内的其他公司的offer。对于Java开发者来说我建议尝试做一些具有自己思考的项目而不仅仅是简单的CRUD操作。我的简历中有四个项目其中一个Web项目和其他三个小轮子项目。在面试中我发现大部分面试官对小轮子项目更感兴趣而对传统的JavaWeb项目兴趣不大。通过亲手打造这些小轮子我们可以更深入地理解其背后的技术和原理从而更好地应对面试和挑战。在求职准备过程中,有许多需要注意的方面。对于求职者来说,深入了解并熟悉自己的简历中所列的项目实现至关重要。如果某个项目已经进行了很长时间,不妨通过绘制类图或时序图来加深理解。那些真正在线上运行、拥有一定用户量的项目,无疑会为求职者加分。
在面试过程中,笔试环节尤为关键。一定要确保为编程题留出充足的时间,以便能够充分展示自己的能力。对于不够熟悉的技术,建议不要轻易写入简历。例如,虽然Vue.js可能已经被使用,但如果只是局限于使用而不熟悉其基础原理,那么在面试中可能会遇到尴尬的情况。类似地,如果Java的前端基础不够扎实,就不要轻易在简历上标注自己熟悉前端。
关于面试经验,有一些常见问题经常被提及。如Java集合框架的源码几乎在每个公司都会被问到。Java并发知识、Linux常用命令、关系数据库的事务、索引、锁和范式等内容也是面试中的热点。对于JVM的理解,可以通过深入阅读《深入理解Java虚拟机》来加深掌握。基础数据结构和排序查找算法也是面试中的常客。TCP/UDP等网络协议、OSI七层模型、三次握手四次挥手等也是重要的知识点。设计模式也是一个重要的方面,面试时往往会根据个人的项目经验进行提问。
接下来,想和大家分享一个关于蚂蚁中间件团队的软文。这个团队致力于中间件产品化工作,同时也负责监控Metrics等一些中间件的开发。他们主要专注于金融科技产品的对外输出,把支付宝积累的高并发、高可靠的中间件、PaaS等产品化,以公有云或私有云的方式对外提供服务。目前,蚂蚁金服在金融科技领域有着宏大的战略部署,这个团队可以说是内部创业,未来前景十分广阔。他们正在寻找20届的实习生,岗位包括Java工程师、Go工程师等。如果有意加入,可以将简历发送到指定的邮箱。
岗位描述中提到,加入这个团队,你将参与SOFA开源的研发,打造金融级分布式架构的体系。每年双十一、双十二的高并发挑战也将成为你的日常。你将在实际生产环境中应用世界前沿的技术,引领未来的技术方向。岗位要求则包括热爱计算机和互联网技术,痴迷于数据结构和算法,有良好的学习和快速适应的能力,有团队精神和进取心等。如果有大赛获奖经验或开源项目经验,将更有优势。
这是一个充满挑战和机遇的团队,他们正在寻找志同道合的人一起前行。如果你有梦想,有热情,不妨一试。发送简历到xiangfeng,一起加入这个团队,共同打造未来。
- 上一篇:从基础到实践:深入学习Dubbo服务暴露
- 下一篇:返回列表
版权声明:《震惊!文科生如何三个月转行成为Java工程师?》来自【石家庄人才网】收集整理于网络,不代表本站立场,所有图片文章版权属于原作者,如有侵略,联系删除。
https://www.ymil.cn/baibaoxiang/28085.html