Java编程新手指南:从零开始学习

发表时间: 2023-02-24 18:14

Hello啊,我是你们的老朋友加瓦大叔,作为一个十年的老java开发工程师,上周跟大家分享了自己在做技术面试官的时候的一些好玩的事,今天跟大家讲讲技术小白真的可以咸鱼翻身踏上技术开发之路吗?

作为一个技术老司机,其实曾经也只是一个搞建筑的工地勘测员,每天拿着死工资,还得到处跑工地,又累又苦,天天羡慕坐在办公室的那些高材生,后来机缘巧合了解到了java技术开发领域,仗着自己年纪小,所以拼了一把,当时真的是勤学苦练啊,最欣慰的就是,家里人都挺支持我的,放任让我搏一把,好在现在结果还不错!

说到咸鱼翻身,首先大家得先了解下目前市面上的java开发工程师要具备哪些技术,这样才能翻身打漂亮仗啊!!

一、 java开发工程师入职门槛要求(了解市场需求)

java初级开发工程师:

1. 负责功能模块的开发,参与详细设计,核心代码的编写;

2. 负责开发中接口的对接与提供;

3. 负责新技术的研发学习与应用;

4. 负责项目开发中与解决方案及业务对接;

5. 计算机相关专业毕业,具有一年以上软件项目开发的实际工作经验;

6. java基础扎实,良好的代码风格;

7. 熟悉掌握Spring Boot,熟悉Spring MVC、Mybatis等主流开发框架;

8. 熟悉MySQL、Oracle、postgresql、SqlServer中的任意一种数据库的使用及sql编写;

9. 熟练使用SVN或者Git;

10. 熟悉使用Tomcat、Maven等开发工具;

11. 具备强烈的责任心,进取心,良好的沟通能力及团队协作能力。

java中级开发工程师:

1. 负责公司项目的后端开发,完成需求的功能设计和开发;

2. 持续重构和优化软件的技术架构和代码质量;

3. 编制项目相关的各类技术文档;

4. 项目开发完成后,配合测试,实施完成项目的验收交付;

5. java基础扎实,熟悉java开发语言,熟悉java常用框架,如:Spring、Spring MVC、Spring Cloud、Spring Boot、Mybatis、Dubbo、Quarz、FreeMark、POI等;

6. 熟悉对象/内存模型,了解JVM垃圾回收机制,对多线程有深刻的理解;

7. 熟悉软件开发流程,熟悉常用的工作流工具,如:Maven、Git、SVN等;

8. 熟悉主流的数据库如:MySQL、Oracle、DB2、SqlServer等,对MySQL索引机制,锁机制,存储机制有深刻的理解,能编写高效SQL并具备SQL调优能力;

9. 熟悉tomcat、jboss、weblogic、websphere等中间件;

10. 熟悉常见的缓存、消息、负载均衡等机制和解决方案,如:Redis、Kafka、Nginx、HaProxy等;

11. 熟悉常用的Http协议;

12. 熟悉常用的Linux命令;

13. 具备合作精神,能和不同的模块不同的系统不同的部门配合;

14. 完成部门经理下发的其他工作任务;

15. 思路清晰,善于思考,有良好的沟通能力,能独立分析和解决问题。

java高级开发工程师:

1. 负责公司产品技术框架选型,开发规范及开发标准审定;

2. 负责公司全部产品(APP/小程序/应用系统/平台等)的服务端架构设计和核心代码的开发;

3. 熟悉业务、分析和发现系统的改进点,进行架构、性能等重构优化,保障系统的高可用;

4. 主导团队开发人员code review工作,直到团队其他人员的设计与开发工作,并能提供性能优化、安全性建议;

5. 五年以上java服务端开发和项目管理经验;

6. 熟悉当前主流的互联网技术,熟悉掌握微服务、分布式缓存、消息队列、Docker容器、分布式数据库技术、web前端技术、linux操作系统等;

7. 深入理解微服务架构,熟悉Spring生态,熟练使用SpringBoot、SpringCloud、Kafka、Mysql、Redis、Elasticsearch、NoseJs等开源框架或者工具,对现实原理有较深入的了解;

8. 熟悉掌握Oracle、SQLServer、MySQL、Redis等数据库技术、熟练使用UML、PowerDesigner设计工具;

9. 熟悉主流开发流程,熟悉各种常用设计模式,有良好的的代码风格;

10. 负责跟销售端反馈的客户需求进行可行性分析,完成技术方案整合优化,并对涉及需求二次开发的内容制定相应的技术开发解决方案;

11. 负责疑难技术分析诊断、攻关解决;

大家可以看看上面三种不同级别的招聘需求哈,在了解了市场的需求之后,就可以针对性的学习啦,毕竟学习最终的目标是为了找一份工作的嘛!不然我们没有规划的乱学一通,既消耗了时间,也让我们所学的东西无用武之地,岂不浪费!让我们紧贴时代前沿,一起咸鱼翻身吧!!!

好啦接下来我们就要开始制定合理的学习方式了!

二、 选择适合自己的学习方式

自学:

1. 学习方式:

看书、看学习视频、上网课、刷题网站刷题等;

2. 自学的优点:

没有高额的金钱消费;

如果学习过程中发现自己不适合,可以及时回头,也没有财力损失;

3. 自学的缺点:

互联网上的资料和学习路线太多,从而导致初学者把大量珍贵的学习时间用在不必要学的技能上;

没人在边上辅导,可能学习过程中步步是坑,而且不知道怎么解决,这可能会让学习过程不了了之,或者是延长学习时间。

需要有强大的自我控制能力;

就算你毅力非常好,每天都坚持个学习,依然会遇到“学习技能”和“面试技术”脱节的问题,造成的后果是学了几个月,看似了解了一大堆语法,但还是做不了项目,甚至还不知道java面试会问什么。这样学习的结果往往是学习时间被拖长,然后最后不了了之。

培训机构系统学习:

1. 学习方式:

有专业老师辅导上课,会安排统一上课时间,统一安排学习时间,安排课后作业等;

2. 培训机构学习的优点:

在班级里面,根据系统的学习安排,你会更加明确自己的学习方向,会有培训机构老师可以帮助你制定学习计划,不用自己多花费时间在这个上边,可以有更多的时间去学习知识;

在老师的帮助下,遇到了问题也能及时解决,及时查缺补漏,提升自己的能力。自学的话这方面就需要自己去解决,如果遇到难以解决的问题就可能浪费很长时间;

最重要的是,培训能够得到可贵的实战项目经验,这些都是以后企业中会真实用到的经验。虽然,自学也能够找到一些相关项目练习,但相比有经验的老师指导实操项目还是有一定的差别;

就业方面培训班一般都有相关的就业指导也会有相关的工作推荐,而自学的话全凭自己去找,相对难度比较大;

其实没有开发实战经验丰富的老师引导学习,是很难深入了解java开发技术知识的。在小伙伴自学的过程中,无论是找资料也好,还是解决问题都是靠自己独立完成的,这样学习效率很低。

3. 培训机构学习的缺点:

需要花费大笔的财力;

不知道选择的培训机构是否靠谱,但是被坑;

一旦学习发现自己不适合,但是花钱了,就得硬着头皮学习。

看到上面的学习推荐方式,大家是不是有些焦虑啊,觉得选择自学,自我控制力差,但是培训机构学习又怕被坑,不用呢么担心,首先你需要摆正好自己的学习态度,其次就是理性选择,毕竟培训机构可以有效的给你制定学习计划是真的,培训机构合理的规定确实可以让你管住自己,有效利用好自己的时间,但是 现在培训机构五花八门,鱼龙混杂。所以在选择机构学习的时候,一定要选择行业知名度高的培训机构。根据机构资质、机构规模、机构师资、机构培训模式、机构就业渠道、机构口碑、机构费用收取等去考量。切不可贪图蝇头小利,上当受骗。

三、 自学推荐的学习方式(推荐的学习方式:系统视频教程+书籍辅助+刷题网站辅助+有人指导)

1. 教学视频推荐

对于Java初学者来说,看视频学习也是最普通的方式,视频教程会把工作中常用的知识进行讲解,而且视频一般都是分章分节,每一个小节都只讲一个知识点,学习起来较为明确。但是视频教程尽量要完整,最好是一整套视频学习。

好啦,小千这里也给大家准备的小礼物吧!大家可以私聊小编获取java基础学习视频哦!当然进阶版,高级版都有哈!

2. 书籍推荐

依靠书籍辅助主要还是针对理论知识的补充和学习。

3. 刷题网站推荐

牛客网

力扣

九章算法

4. 专业老师指导

大部分自制力极强的人可能依靠自身强大的自制力可以实现自学成功,但是这种概率太小了,大部分人都不可能全靠自己的能力把Java学的特别好,因为你不了解这个行业,也不知道怎么学,完全零基础自学Java想要找到工作,概率极低。所以建议如果真的想要做这行,尽量找人去带带你,有不懂的问题可以直接请教,少走弯路,提高效率。学习的质量决定以后工作的薪资以及起点,所以还是应该重视起来。

四、 项目实践的重要性

大家在学习的过程中通常出现这样的问题:

学习时的问题:

1. 能看懂,不会写【上课的时候觉得很简单,但是一实操就完蛋】;

2. 记不住【学完就忘记了】;

3. 学完的知识不知道该怎么用;

4. 找不到学习技巧的时候就形成了开始背代码的坏习惯,导致代码逻辑能力很差,脱离一贯的套路就不知道该怎么写代码了;

5. 害怕找不到工作。

学习心态:

1. 心里总是没底,没信心,害怕焦虑;

2. 抱着完成任务的心态学习;

3. 学习重心不对,对学习没有耐心;

4. 我希望每个学习编程的人都要摆正学习态度,如果你对于学习没什么耐心,没什么兴 趣,我劝你不要来学习编程,学习编程绝对是一个耐心的活,也是需要不断学习和充电的行业。或者说已经到了信息时代,不爱学习的人,很难有耐心去学习知识的人,在信息时代是混不下去的,任何行业都是如此,不学习不进步不紧贴时代的人就一定会被淘汰。

为什么一定要有项目时间经验:

1. 对于初学者碰到的大部分学习上的问题都是不会写代码,而项目实践就可以有效的规避这种问题;

2. 不同的软件公司针对研发人员的水平要求存在一定的差异,但是起码你要有正常的编码能力吧,你连代码都不会敲,哪家公司敢要你?

3. 只有结合项目才会锻炼好自己的逻辑能力,光死记硬背面试题是没办法解决你不会上手写代码的问题的;

4. 每一个能够达到就业的开发人员起码都要理解掌握Java核心面向对象的设计思想和代码构建,能以面向对象方式设计编写业务功能;

5. 起码要熟练掌握至少两种数据库的开发,如Oracle,mySql,能熟练编写基本常用及高级的SQL语句,而这些,在项目实操中都可以让你得到锻炼;

6. 例如:必需掌握并熟练应用Springframework IOC容器,深入了解IOC及AOP概念并应用,使用MVC实现对web 请求做出处理,像这类问题,不写项目,如何才能达到理论结合实践?面试官问你在项目中如何使用IOC或者AOP,不写项目,怎么回答这类问题?

7. 熟练掌握Java处理数据库的ORM框架myBatis,JDBCTemplate,对Hibernate也应有所了解,这些框架,你靠死记硬背面试题你就会用吗?不实践使用你保证你看看视频刷刷题就能练会吗?

8. 开发工具你不是使用你能会吗?

针对上述问题,你们说项目时间经验重要吗?小千给大家准备了一些基于当下最流行的Spring Boot框架的项目,私聊小编获取哦!

五、总结

好啦!今天小千就分享到这里啦,至于大家想要选择怎么的学习方式,主要还是无愧于自己的付出就好啦,最后一句话:“想好了,干就完事了”!我们下次再见喽!!!