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后端学习路线(适合零基础和非科班的同学)

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • nessus中文版使用教程_svn中文使用教程

    nessus中文版使用教程_svn中文使用教程https://www.wangan.com/docs/nessus

    2022年10月10日
    2
  • git及git使用与常见git面试题

    git及git使用与常见git面试题gitgit使用git命令git面试题

    2025年5月28日
    2
  • java etl 简单实例_东方通ETL开发实例[通俗易懂]

    java etl 简单实例_东方通ETL开发实例[通俗易懂]东方通ETL开发实例下面通过一个简单的“OracleCDC增量抽取”实例,带大家感受一下TIETL的开发思路和强大的数据处理能力。功能需求:同一数据库(localhost_etl)下,现有cdc_source和cdc_target两张表如下:表cdc_source表cdc_target现表cdc_source的增量(增、删、改)需同步到cdc_target中TIETL环境下开发思路:类似于jav…

    2022年5月1日
    44
  • 蓝桥杯猴子分香蕉_蓝桥杯少儿编程大赛试题

    蓝桥杯猴子分香蕉_蓝桥杯少儿编程大赛试题packageexec;importjava.util.Scanner;/**问题描述  秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分。这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果。第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个苹果吃了,然后藏起来一份,最后把剩下的苹果重新合在一起。这些猴子依次悄悄来到山洞,都做同样的操作,恰好每次都剩下了m个苹果

    2022年10月11日
    5
  • pycharm terminal 进入虚拟环境_pycharm failed to create virtual

    pycharm terminal 进入虚拟环境_pycharm failed to create virtualPycharmterminal激活虚拟环境,首先需要保证系统完成了conda的安装,并在Powershell中完成虚拟环境的创建(操作创建的虚拟环境名称为deep_pool,这个虚拟环境在接下来的操作中会被提及到)。如果不会创建虚拟环境,可以参考下面这个流程:Ubuntu20.4安装Anaconda以及过程中遇到的问题(已解决)_qq_53258482的博客-CSDN博客在虚拟环境创建完成后,在powershell中输入命令Set-ExecutionPolicy-ScopeCurrentUse

    2022年8月25日
    5
  • shardbatis实现分表「建议收藏」

    Shardbatis的名称由shard(ing)+mybatis组合得到,是谷歌的一款开源软件。旨在为mybatis实现数据水平切分的功能。数据的水平切分包括多数据库的切分和多表的数据切分,目前sha

    2022年2月16日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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