自我介绍
我毕业于一个普通的二流地方院校。年毕业,18年10月找到的实习单位参加工作,中间跳槽了几家公司,一直从事Java相关的开发工作,目前已有5年有余。
平时喜欢逛逛github,看看掘金,有空就维护一下github上的开源项目,没空就写写文章,发发牢骚,是个再普通不过的*丝程序猿。
说了我的这些经历,无非就是想告诉大家:我一个普通二流本科生能做到的,大家也一定能做到。所以大家不必担心,只要你能够按照我的指导去做的话,你一定可以比我更加优秀!
故事背景
一位计算机专业大四即将毕业的同学关注了我的公众号,然后问了我一系列的问题,表达出他对未来的迷茫:
我是一个二本科班的应届生,今年毕业,想知道需要掌握什么样的Java技能才能参加工作?
我在b站上看了很多Java的教学视频,很多是18年左右的,内容很旧,想知道我学完这些,距离参加工作,还有哪些要去补充的?非常迷茫!
只会java基础能去面试吗
我相信有这种疑惑的同学一定也不在少数,那么今天我就结合我的实际经验,来简单介绍一下,作为一名即将毕业的计算机专业的应届生,我们需要做哪些功课才能帮助我们更快地找到Java相关的工作。
掌握扎实的基本功
俗话说:基础不牢,地动山摇。
作为应届生,由于没有什么实际的项目经验,所以在面试过程中,用人单位会更看重应届生的基础知识掌握程度以及发展潜质。
所以,作为一名应届生,我们一定要把基本功的提升放在首位。那么要想成为一名Java开发者,我们需要着重掌握哪些内容呢?
- 基础学科知识。如计算机组成原理、数据结构、计算机网络、操作系统、数据库设计、数字电路等。这些科目向我们介绍了计算机的工作原理,掌握了这些就可以帮助我们更好地理解程序的本质。
- Java基础知识。包括语言的特性、语法、规范等。例如:Java数据类型、运算符、面向对象、集合类、泛型、注解、反射、多线程并发、Java虚拟机、设计模式等内容。
这里用一张思维导图来展示给大家,看得会清楚一些。
认清学校与社会的差距
不要天真地认为把学校里学到的东西都学会了就可以顺利找到工作了,当然也不要认为学校里学的都是些没有用的东西。
作为一名应届生,我们非常有必要认清学校与社会存在的差距。
学校里教的都是些非常重要且基础的东西,我称之为专业素养。这些东西非常重要,它直接决定了我们日后发展的天花板在哪里。
社会上教的都是些具体工作领域方面的知识,我称之为职业技能。这些内容可以帮助我们更好地完成工作。
所以,我们除了要把学校里学的内容打扎实,还需要尽早地接触社会,找到对口的实习工作,掌握必要的职业技能。
我们在找实习单位的时候,可以参考以下几点:
- 无论是大厂还是小厂,进去都会有所收获。进大厂我们可以收获不错的履历和人脉(这非常有用),学习到优秀的管理制度和流程控制,提高技术的深度。而在小厂可以磨练你的意志、获得更多主导的机会、更大的自由度,拓展技术的广度等。
- 第一家实习单位可能极大影响个人的职场观和价值观,选择时需慎重。切忌去小微企业或者创业型公司,因为这类公司每天都可能徘徊在倒闭的边缘上,所以并不会重视人才的培养。
- 在选择实习单位的时候,要多了解和掌握企业的信息,走正规渠道。不正规不可靠的千万别去;入职前,以任何借口让你交钱的公司不要去。
提高自己的动手能力
做技术搞开发的,动手能力永远是需要作为首要能力进行培养的。除非你是业内公认的技术大佬,否则秀出你的代码才是证明你实力的**方式。
很多小白在入门某一项语言或者技术的时候,通常都是购买一本入门书籍翻看,抄一抄视频或者书中的源码,就天真地以为自己已经彻底掌握了。他们殊不知,这些只是一些皮毛而已,当条件稍微发生一点变化的时候,他们就彻底懵逼,手足无措了。
那么怎样才能摆脱这样的困境呢?其实非常简单,多敲代码,多练习,多思考,熟能生巧嘛。
如何提高自己的动手能力
正如Linux之父的那句"Talk is cheap. Show me the code.",嘴上说千遍,也不如直接上代码撸一遍更加令人印象深刻。
说到这儿,可能又有朋友想问了:对于一个从来就没有具体项目经验的人来说,该从何做起呢?
这里我还是推荐大家多到github或者gitee这种开源代码托管平台去找一些优秀的开源项目,这些项目很多都是历经了各种复杂业务考验的高价值项目,临摹他们的代码,可以极大地提升我们的技术水平和编码水平。
那么当初我是怎么锻炼我的编码能力的呢?下面我就简单介绍一下供大家参考:
1.首先到开源代码托管平台寻找到适合自己的目标项目。
2.阅读项目的代码,初步了解项目的实现原理以及架构。
3.自己新建一个项目,然后按照自己的理解去自己实现一个类似的项目,不懂的时候可以借鉴或者copy目标项目的代码(目标项目就类似于参考答案)。
4.最低的要求是能够正常运行并且实现目标项目的主要功能,要求高一点的就是能够有一些属于自己的优化点或者特性等。
5.最后对自己做的这个项目进行归纳总结. 如果你能够按照我上面所说的,来回写个4~5个项目之后,相信你的动手能力一定会有质的飞跃。
关于学习和面试的感悟
①学习
无论工作多忙该读的源码,该刷的题都不能落下。要明白,私企都是说翻脸就翻脸的,整不好哪天你就会被裁(疫情开始后一起进公司的应届生都被裁员了好一些)
必须把自己的命运握在自己的手里,技术积累要从日常做起,要做到随时出去面试都能有地方去,未必厉害到那种去大厂的地步,但是起码保证自己不会长时间失业。
因此在公司的时候没事少玩手机,多看看书和博客,或者clone开源项目源码下来读,这些都是未来跳槽的资本。 我个人其实也比较懒,但是积少成多在没需求做的时候还是学了些东西,主要方式如下:
1、刷题
2、博客园看文章。可以利用搜索功能看一些系列文章
3、看书
4、把开源项目fork到自己帐号上然后clone下来看,直接把注释写上去方便以后回看
5、b站也有一些很有价值的视频,不过需要自行筛选来看
②面试
有内推一定找内推,而且一定要找练手公司面试。面试不仅关系到知识储备,还有语言组织表达能力,这个也是要练习的,另外还可以对知识体系查缺补漏。
大厂每次面试,面评都会记录到招聘系统,如果留下不好的评价会影响以后投递(我就是没有从小公司开始,因此吃了亏)
社招面试一般都会有项目面试,包括对技术选型和业务的提问,这些都要提前准备好说辞,另外就是面试官问的问题可以不断深入挖掘,来展现你的技术深度。
一般如果这一面的面试官对你满意,让你过到下一面,他会在面试结束时主动地向你介绍部门的情况,如果面试官对你说了很多他们的业务,那么这一面基本就是过了。
最后就是,第一家公司真的要慎重选择,能去大厂一定去大厂,呆够2年再跳,能选择的岗位会多很多,两年以下年限找工作是真的有些尴尬。
保持心态,一心向前
在这里,我想给新手朋友们一点建议:很多时候,很多事情,并不像你想象中的那么简单,千万不要自认为简单而不愿意去做,很多东西只有你亲手去做了之后,才会发现事情并不像你最初想的那么简单。
Java系统学习路线
面试:如果不准备充分的面试,完全是浪费时间,更是对自己的不负责!
接下来分享的系统学习资源以详解各大互联网公司的常见面试题为主线,从面试的角度带你介绍必备知识点,以及该知识点在项目中的实际应用。
帮你在现在的基础上,重新梳理和建立Java开发的知识体系。无论是你短期内想提升 Java内功实力,突破自己工作中的能力瓶颈,还是准备参加Java面试,都会在这份资料中有所一些收获。
1、看视频进行系统学习
前几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。
我这里有储存一些视频的资源可以分享,有初级、中级、高级
2、进行系统梳理知识,提升储备
学习Java技术体系,设计模式,流行的框架与组件—— 常见的设计模式,编码必备, Spring5,做应用必不可少的最新框架,MyBatis,玩数据库必不可少的组件。从源码级别掌握它们,你比别人更容易进大厂。
- 工程化与工具
工欲善其事必先利其器,不管是小白,还是资深开发,玩Java技术体系,选择好的工具,提升开发效率和团队协作效率,是必不可少的。
- 分布式架构
高并发,高可用,海量数据,没有分布式的架构知识肯定是玩不转的:
- 微服务架构
业务越来越复杂,服务分层,微服务架构是架构升级的必由之路,Java技术体系,和微服务相关的技术有哪些呢?
- 性能优化
任何脱离细节的ppt架构师都是耍流氓,向上能运筹帷幄,向下能解决一线性能问题,Java技术体系,需要了解:
- 底层知识
从架构设计,到应用层调优,再深入了解底层原理,扎实的Java基本功才能让自己变为扫地神僧:
- 项目实战
无需赘述,如果没有实战经验,如何成为一名架构师?
说了这么多,这些技术该怎么学呢?这里小编整理了一整套VIP学习笔记分享给你们。都是小编花钱整来的,不要说我小气哦【私信:笔记】获取
3、读源码,看实战笔记,学习大神思路
“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。
所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。
Java开发人员都知道,阅读源码是一个非常好的学习方式,在我们日常工作中或多或少都会接触一些开源代码,比如说最常用的Struts、Hibernate、Spring,这些源码的普及与应用程度远远超过我们的想象,正因为很多人使用,也在推动着源码不断地去完善。这些优秀的源码中有着多年积淀下来的精华,这些精华是非常值得我们学习的,不管我们当前是什么水平,通过反复阅读源码能力能有所提升,小到对源码所提供的功能上的使用更加熟练,大到使我们的程序设计更加完美优秀。但是,纵观我们身边的人,能够做到通读源码的真的是少之又少,究其原因不外乎以下几点。
- 阅读源码绝对算得上是一件费时费力的工作,需要读者耗费大量的时间去完成。 而作为开发人员,毕竟精力有限,实在没办法拿出太多的时间放在源码的阅读上。
- 源码的复杂性。 任何一款源码经历了多年的发展与提炼,其复杂程度可想而知。当我们阅读源码的时候,大家都知道需要通过工具来跟踪代码的运行,进而去分析程序。但是,当代码过于复杂,环环相扣绕来绕去的时候,跟进了几十个甚至几百个函数后,这时我们已经不知道自己所处的位置了,不得不再重来,但是一次又一次的,最终发现自己根本无法驾驭它,不得不放弃。
- 有些源码发展多年,会遇到各种各样的问题,并对问题进行了解决,而这些问题有的对于我们来说甚至可以用莫名其妙来修饰,有时候根本想不出会在什么情况下会发生。我们选择各种查阅资料,查询无果,失去耐心,最终放弃。
无论基于什么样的原因,放弃阅读源码始终不是一个明智的选择,因为你失去了一个跟大师学习的机会。 而且,当你读过几个源码之后你会发现,他们的思想以及实现方式是相通的。这就是开源的好处。随着各种开源软件的发展,各家都会融合别家优秀之处来不断完善自己,这样,到最后的结果就是所有的开源软件从设计上或者实现上都会变得越来越相似,也就是说当你读完某个优秀源码后再去读另一个源代码, 速度会有很大提升。
既然阅读源码有那么多的好处,但是很多同学却因为时间或者能力的问题而不得不放弃,岂不是太可惜?为了解决这个问题,我给大家带来了这几份源码学习资源!
4、刷面经
如何刷题?这是很多现在面试者心中的困惑,我们都知道,面试前刷题是很有必要的,毕竟很多题目都有一定的共性,刷足够题目就能够做到举一反三,甚至在面试时,被问到原题,能够侃侃而谈,那么刷题如何进行呢?建议:最好找一些历年的面试原题,分专题来对自己进行训练。
总结
个人认为我的人生中真正考验智商的只有高考,这种是在规定时间内出成绩的游戏,而且是好几门一起考,想门门精通确实不易。至于工作,只要时间坚持投入足够持久,必定会取得收获,是没有那种学不会的说法的。
只能说投入的时间、精力不够而已,即使转型失败了也绝对不是因为智商上的差距,绝大多数人压根没怎么努力,还处于拼汗水的阶段,根本没到拼智商的时候…… 还有一点就是我说的学习是全天投入去学习,而不是高兴就学两小时,不高兴就玩两小时,如果是这样,可能十年都没法学成。最后,也是最关键的一点,那就是哪怕是你面试的时候被虐的面红耳赤,也请你保持绝对的自信。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/26314.html