2022年想做后端开发学Java还是C++更有前景?

2022年想做后端开发学Java还是C++更有前景?不知道大家在大学的时候有没有这样的疑惑,做后端开发学Java还是C++呢?可能大家和我一样,都有过这种二选一的疑惑,如果我毕业后想从事Java后端开发,那么应该按照怎么样的路线学习呢?网上关于这个话题的文章很多,但是大部分只是对知识点和模块的简单罗列,只是让大家知道有这么些东西要学,我从校招生的角度来谈一下这个话题,介绍一下我从学习C++转向学习Java的学习历程,主要讨论Java的学习路线和找工作相关的情况,谈谈我是如何在短时间内通过自学Java进入阿里和美团的。当初选择语言的纠结我大一大二的

大家好,又见面了,我是你们的朋友全栈君。

不知道大家在大学的时候有没有这样的疑惑,做后端开发学Java还是C++呢?可能大家和我一样,都有过这种二选一的疑惑,如果我毕业后想从事Java后端开发,那么应该按照怎么样的路线学习呢?

网上关于这个话题的文章很多,但是大部分只是对知识点和模块的简单罗列,只是让大家知道有这么些东西要学,我从校招生的角度来谈一下这个话题,介绍一下我从学习C++转向学习Java的学习历程,主要讨论Java的学习路线和找工作相关的情况,谈谈我是如何在短时间内通过自学Java进入阿里和美团的。

当初选择语言的纠结

我大一大二的时候学习的都是C语言和C++,主要原因是当时没有考虑就业,还有就是学校课程的安排,我当时买了很多这方面的书籍并且花了挺多精力。

后来发现自己对科研不感兴趣,就打算毕业了直接参加工作,于是去网上了解了一下程序员就业的情况,当时发现Java技术栈校招就业机会相对比较多,就选择开始学习Java相关的技术栈了。

在确定完要学习Java之后,已经到了大二暑假,也就是大三了。当时完全是从零开始,靠自己从网上看一些零碎的信息,自己慢慢摸索进行学习,也走了很多弯路,所以今天想和大家分享一下学习路线和一些心得。

对Java语言的看法

我觉得Java是一门语法比较简单的语言,相对于C/C++更容易学习,提供的就业机会也相对比较多。

学过C/C++的同学都知道,这门语言更加接近于机器底层硬件,最大的特点就是可以用指针直接操作内存,语言特性也比较多且复杂,使用起来也相对于Java来说困难一些。C++目前用的比较多的领域是嵌入式、游戏服务器端开发、算法工程系统等等。

Java在后端开发中使用的还是更多一些的,Java语言是生态是最完善的一门语言,各种开源的工具非常多也非常好用,Java是一门平台无关的语言,使用JVM隔离了底层的硬件细节,有自动内存管理功能,所以也更加容易学习和上手。但是对于校招面试来说,Java需要准备的东西也更多。

虽然相关的内容比较多,但是如果是准备找工作的话,我还是建议大家学习Java。首先是招Java开发的公司比较多,机会也比较多。其次是对于一些使用Go/C++的大厂,在校招中是没有语言倾向的,例如腾讯字节跳动,虽然我学的是Java,但是我还是能拿到它们的offer。但是相反,使用Java语言的大厂,一般是有语言倾向的,最典型的就是阿里和美团

校招Java学习的路线

当初走过的一些弯路

我当时走的弯路是,在理论学习和实践中没有做到一个很好的平衡,我当时比较重视书上理论知识的学习,忽略了在实践中去写代码,所以在这一段时间里的学习效果并不好。

其实这里有两个误区,第一个误区就是因为面试中考察八股文比较多,所以认为理论知识比较重要,而不写代码了。第二个误区是只写代码不学习理论,认为我们是做开发的,只需要尽可能多写代码就行了。

其实我们在学习的过程中,理论知识和实践动手都很重要,首先是需要学习好理论知识,因为这是面试的重点,然后在动手实践中去使用我们学习过的知识,这样能够加深我们对知识的理解和提高我们的动手能力。

学习方法

因为我们需要对Java进行系统的学习,所以我推荐大家一定要看书,因为看书能够让我们对一个技术的学习更加全面。除此之外,我们也可以通过网上的一些博客和文章,来对某一个知识点进行深入学习,因为书籍为了全面地对知识进行讲解,所以可能在一些地方的深度存在欠缺。

这也是面试过程中,面试官经常会问我们喜不喜欢看书,看过哪些经典技术书籍的原因。

还有一个可以提高我们学习效率和面试能力的方法,就是我们依靠面试题来做导向学习,在学习的过程中重点关注高频面试考点,这样能强化我们对相关知识的记忆和学习,在平常就让我们重点关注,也能更好地去应付相关知识模块的面试。

在学习过程中,一定不能偷懒,要自己多记笔记多整理,根据费曼学习法,多做知识输出才能学习得更好。

学习路线

1.Java基础

首先我们需要学习的是Java基础知识,这一部分包括数据类型、流程控制、数组、面向对象、抽象类、接口、枚举、集合类、泛型、异常处理、IO流、反射。

这部分的学习我推荐《Java核心技术 卷一》这本书, 跟着书上的例子敲代码后,自主编写代码,并完成课后练习。不推荐看《Java编程思想》,虽然是最经典的一本书,但是对新手十分不友好。

在学习完基础的语法之后,我推荐大家学习一下Java核心类库相关的知识,这是一个重点,也是这个部分在面试中考察比较多的内容。这里我推荐一本书《Java修炼指南》,这是一本侧重于面试热点的书,里面有这些类库的详细解读,例如基础类(Object、String、包装类)、集合类(HashMap、ArrayList、ConcurrentHashMap)等等,还有并发包里面一些类的解读。

2.Java虚拟机

我推荐大家学习这部分的原因有两点,第一点是这部分经常在面试中被考察到,第二点是学习这部分能够加深我们对Java语言的理解。

这部分知识比较偏理论化,我建议大家看周志明老师的《深入理解Java虚拟机》这本书的其中若干个核心的章节,我建议大家学习的章节有Java内存区域与内存溢出异常、垃圾收集器与内存分配策略、虚拟机类加载机制、Java内存模型与线程、线程安全与锁优化等几个章节,这些章节也是这部分内容的重点。学习完这几个章节后,我们就可以对JVM的核心功能有一个大体的了解,对相关的原理也有了一个简单的认识,接下来学习这部分常考的面试题就行了。

3.Java并发

为什么Java并发我推荐大家在Java虚拟级之后学习呢?因为我觉得Java一些锁和同步机制的实现原理,比如syncronize关键字、volatile关键字、锁升级的过程、并发包,都与JVM底层原理有关,所以我建议在学习这部分之前,先学习一下Java虚拟机。

这部分的重点是Java线程模型和线程的生命周期、syncronize关键字的实现原理、锁升级的过程、volatile关键字的实现原理、JUC并发工具类、线程池的作用原理实现等等。

关于这部分我看过几本书,这部分我推荐大家看《Java并发编程的艺术》这本书,这本书是阿里巴巴两个非常资深的技术专家写的,写得非常深入浅出。

4.Spring框架

这部分我建议大家以掌握使用为主,因为这毕竟是一个工具嘛。根据面试考察的重点掌握一下核心的原理就够了,例如Spring的基本概念、SpringIOC的实现原理、SpringAOP的实现原理、SpingBean的管理。如果我们简历对这块内容只是简要写几点,一般面试官都不会对这块内容进行深入考察,我也建议大家不要在简历上写阅读过Spring源码,因为对Spring深入学习的学习成本也比较高,防止被面试官深挖这块内容。

学习Spring我建议大家以上手使用Spring框架为主,可以去github上找一两个项目来看一看,如果实在想看书,可以看《Spring实战》这本书。

5.MyBatis框架

这部分我同样也建议大家以掌握使用为主,这部分在面试中考察的相对较少,我甚至几乎没有被问到过,我简历上也没写MyBatis相关的东西。

结尾

最后要强调的一点就是,我觉得学习的过程中最重要的两点就是学习规划和坚持努力,我相信大家只要肯好好规划和用心学习,也一定能取得效果的,希望大家在这一点上能有信心。

推荐阅读:Java后端学习路线(适合零基础和非科班的同学)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160759.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 大数据技术大致包含哪些内容「建议收藏」

    大数据技术大致包含哪些内容「建议收藏」关于大数据的概念,指的是无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合。而大数据技术,是指从各种各样类型的数据中,快速获得有价值信息的能力。那么关于大数据的技术大致包含哪些内容?一、数据采集ETL工具负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。二…

  • java开发培训_Java培训课程那里好?

    java开发培训_Java培训课程那里好?互联网时代,人们纷纷羡慕IT软件行业的前景和“钱景”。有些行动力较强的更是摩拳擦掌,直接通过参加Java培训班来成功转行这一行业。这些通过Java培训班转行成功的人现在如何了,他们的薪资高吗?没有基础但是想要跟上IT软件行业的发展步伐,选择Java培训班显然是一条有效途径。早几年,IT行业发展刚起步的时候,每一天都有无数家互联网企业诞生,对IT技术人才的需求规模巨大,学员从Java培训班毕业之后迅…

  • GirdView 通过 RenderControl 导出 excel 日期问题

    GirdView 通过 RenderControl 导出 excel 日期问题for(inti=0;i<gt.Rows.Count;i++){ gt.Rows[i].Cells[7].Text=Convert.ToDateTime(gt.Rows[i].Cells[7].Text).ToString("yyyy年MM月dd日HH:mm:ss");}

  • MFC之COleVariant[通俗易懂]

    MFC之COleVariant[通俗易懂]COleVariant 本质上是一个枚举,用同一种类型来表达不同的子类型。如同boost中的variant。例子COleVariantvar(3.6f);floatv=var.fltVal;CStringstr(“testCOleVariant”);COleVariantvar2(str);CStringcpStr(var2.bstrVal);例子CStrin

  • ExecutorService 的理解与使用「建议收藏」

    ExecutorService 的理解与使用「建议收藏」接口java.util.concurrent.ExecutorService表述了异步执行的机制,并且可以让任务在后台执行。壹個ExecutorService实例因此特别像壹個线程池。事实上,在java.util.concurrent包中的ExecutorService的实现就是壹個线程池的实现。ExecutorService样例这里有壹個简单的使用Java实现的

  • 手动创建线程池_创建线程池的5个参数

    手动创建线程池_创建线程池的5个参数一,Executors类不建议使用自带的工具类的!使用JDK自带的Executors工具类(图中蓝色框中的那个,这是独立于线程池继承关系图的工具类,类似于Collections和Arrays)可以直接创建以下种类的线程池线程数量固定的线程池,此方法返回ThreadPoolExecutorpublicstaticExecutorServicenewFixedThreadPool(intnThreads){……}单线程线程池,此方法返回ThreadPoolExecu

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号