大数据最新学C++还是学Java?做软件研发还需掌握哪些知识和技能?_c(1),大数据开发大厂面试真题解析大全

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

1.2、Java的应用领域与使用场景

1.3、C++的应用领域与使用场景

1.4、如何选择

2、需要掌握的知识和技能

2.1、掌握一些基础的网络知识

2.2、熟悉一些常用的SQL语句

2.3、了解Linux系统,掌握常用的Linux命令

2.4、学习汇编语言相关的内容

2.5、学习一些其他的专业课程

3、最后


最近和一些高校的学生朋友交流,他们打算毕业后从事软件研发的工作,但目前有些困惑和迷茫,他们不太确定今后的学习方向,他们想了解一下软件研发的一些领域的现状及发展前景,想知道应聘软件研发岗位要掌握哪些具体的知识和技能。今天我们就来讲一下从事软件研发工作需要学习哪些主要内容,需要做好哪些方面的技能储备,给高校同学们和中途转行的朋友们提供一个参考。(C/C++学习路线的B站视频教程已上线,具体信息见本文的评论区!!!

VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新…)icon-default.png?t=N6B9https://blog.csdn.net/chenlycly/article/details/124272585C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新…)icon-default.png?t=N6B9https://blog.csdn.net/chenlycly/article/details/125529931C++软件分析工具案例集锦(专栏文章,持续更新中…)icon-default.png?t=N6B9https://blog.csdn.net/chenlycly/article/details/131405795C/C++基础与进阶(专栏文章,持续更新中…)icon-default.png?t=N6B9https://blog.csdn.net/chenlycly/category_11931267.html

1、是学C++好呢?还是学Java更有前途?

ff8cac4a91b24d579a4a03f8d55e2618.png

这是一个很经典的话题,相信很多人都有这个疑问,很多人都谈论过。众所周知,Java和C++是两门主流的热门开发语言,一直名列世界编程语言排行榜的前几位。在TIOBE2022年5月最新的世界编程语言排行榜中,C++和Java依然稳定在前几位,如下所示:

b2498afcf6444736b1b7a57f79067776.png

不管是从世界范围来看,还是从国内来看,Java和C++的受欢迎程度都名列前茅,所以毋庸置疑,选择这两种开发语言中的任何一种,都很有前途。

此外,从上图的排行榜中我们可以看到,Python和C依然高居前两位。从我们了解到的实际工作中的情况来看,Python作为全球首屈一指的脚本语言,已经达到无所不能的境界,但Python依然是作为工具来使用,主要来编写一些工具和脚本;C主要用于底层的开发,比如用于Linux操作系统和底层驱动程序的开发,做C开发的门槛要稍微高一些。

1.1、Java和C++都很有前途

从我们实际工作中接触到的内容以及多年积累起来的认知来看,Java和C++都比较有前途,都有着很好的就业情景,具体选哪一种语言作为自己的主攻方向,需要在了解这两种语言的应用领域和使用场景之后结合个人的兴趣去做选择。

d222f3cd84654ac68b47af7a439d630a.png

一个完备的大型软件系统,从前端到后台,几乎都离不开Java和C++。比如安卓客户端APP和后端的Web服务器是用Java开发的,Windows客户端程序和后台的很多业务服务器是用C++实现的。此外,Java还是大数据、云计算、云原生(微服务)的主流开发语言。

我们日常生活中使用的各种手机APP,在安卓手机上的,都是Java开发的。我们PC机上常用的QQ、桌面版微信、腾讯会议、企业微信、飞书、钉钉、阿里旺旺客户端、Chrome浏览器等Windows客户端软件都是用C++开发实现的。所以,无论是选择C++还是Java,肯定都是有用武之地的。

1.2、Java的应用领域与使用场景

随着近些年移动互联网的迅猛发展,移动APP已经成为各个IT厂商争夺市场的主战场之一,这给作为安卓APP开发语言的Java带来了新的生机和活力。目前,Java也是大型web系统处理后台web业务的首选语言,像淘宝和京东这些大型电商系统的web服务器都是用Java实现的。

82cfa19577d14a78893b041b4650cffa.png

常用的Hadoop、Spark、OpenStack等大数据与云计算开源框架,都是用Java开发的,所以在大数据与云计算领域Java有着天然的优势,Java已经成为大数据开发人员最喜欢的开发语言之一。近年来涌现出来的云原生、微服务等新兴技术与框架,也都是Java的主战场。

Java运行于虚拟机之上,有着特有的跨平台特性,Java中有完善的异常处理机制。作为C++开发人员的我们(我本人是做C++开发的),有时真的很羡慕Java如此完善的异常处理机制,一旦程序中发生异常,Java就会抛出异常,这些异常的提示信息会输出到运行日志中,通过这些输出的信息就能知道是什么异常,快速地定位到有问题的代码。此外,Java有着近乎完美的封装(封装了很多常用的功能类,以Jar包的方式提供),以及多种成熟的Java框架(比如Hibernate、MyBatis、SpringMVC、SpringBoot、SpringCloud微服务框架等)

ea00b6d069a348b793989fe5d5de4718.png

此外,大数据与云计算领域中的Hadoop、Spark、OpenStack等框架也都是Java实现的。特别是在大数据、云计算和云原生领域,Java的新技术和新框架更新的很快,Java始终站在技术的最前沿,这是Java最吸引人、最有魅力的地方。所以,Java绝对是很值得学习、很有前途的主流开发语言。

相对于C++,Java有着更完善的内存管理机制,有别于C++中复杂的指针操作,Java的学习门槛要稍微低一点,这也是很多人选择Java的一个重要原因。从现在在校学生选择现状来看,确实大部分人都选择了Java,选择C++的同学相对要少不少。这也导致了一些问题,比如我们在招聘C++开发时应聘的人明显比几年前少了,比Java开发人员难招了许多。

1.3、C++的应用领域与使用场景

C++语言不仅能开发PC端的客户端程序,还可以开发服务器程序,后台的很多业务服务器出于性能和效率的考虑,都需要使用C++来开发。C++也有着良好开源生态,有各种功能的开源库可供选择,但在软件框架这块,C++要比Java要逊色一些,Java有很多成熟通用的框架可以使用。

f7d3317c2a724d41b8633a953f090122.png

Java语言是一种运行于虚拟机上的一种解释性语言,正是通过虚拟机实现了跨平台的特性,开发出来的程序可以运行不同的操作系统上,但同时因为Java是一种解释性语言,边解释边运行,其运行效率上,和C++相比要差一些。C/C++的运行效率是最接近汇编语言的,所以在服务器侧,执行各种高效率代码或算法的业务都会选择更高效的C++。现在PC端的客户端程序基本都是用C++或者其他语言开发的(比如C#等),基本不用Java来开发客户端程序了。**在人工智能、机器学习、计算机视觉与图像识别、自动驾驶等新兴技术领域,对运行性能有着很高的要求,都会首选效率更高的C++来开发。**有朋友可能会问,这些领域能不能使用python去实现呢?答案是否定的,因为Python的运行效率在这些场景下达不到要求。

所以在当前各种大型系统中,从前端到后台,都有C++语言的大片用武之地。所以,C++也是一种很有用途、很有市场的主流开发语言。

1.4、如何选择

其实对于一个大型的系统,后台的服务器或模块,有部分是用Java开发的,有部分是用C++实现的,两种语言交织在一起,彼此没有明确的界限,它们相互通信,相互配合。

最终选择哪门开发语言作为自己的主攻方向,要看对语言本身的兴趣,也要看对语言所侧重的技术领域的兴趣,需要综合考虑一下。此外,在大学学习期间我们去主攻一门语言,但找工作时拿到的是另一门语言的开发岗位,或者是校招时以A语言应聘进来的,但进入公司后可能因为人员变动会把你调到另一个项目组做B语言开发的岗位上。这些情况我们在公司都见到过,比如去年有个以Java开发岗位应聘进来的同学,到公司后因为我们C++项目组缺人,就调到我们这边来搞C++了。

这位同学在校期间一直学习Java,甚至参加了一些Java的开发项目,在Java开发方面积累了一定的经验,刚开始学C++感觉很不适应,但熬过了最开始那段最难熬的时间后,也逐渐适应了,做的也越来越好了。语音是想通的,学会一门开发语言,再去学另一门语言就不会那么难了!

2、需要掌握的知识和技能

除了掌握开发语言本身之外,还要掌握一些其他的基础知识和技能。这些基础知识知识与技能不仅工作中可能会用到,在找工作时的笔试和面试可能也会涉及到。

2.1、掌握一些基础的网络知识

因为现在的大型系统都是基于网络的,都要基于网络编程,了解一些基础的网络知识,不仅可以加深对代码的认识和理解,也能在遇到网络问题时去排查问题。这些基础的网络知识不仅工作过程中可能会用到,找工作时的笔试和面试可能都会涉及到。不管是开发人员,还是测试人员,亦或是运维人员、技术支持人员,都要有扎实的网络知识,可以应对项目中遇到的各种网络问题。当然,不同岗位或不同层次的人员,对掌握程序是有所差别的。

c509d48ca63d43acb33577730b7e1d8c.png

大家在学校时基本都会学计算机网络相关的课程,建议大家可以好好学一学。可以了解一些基本的概念,了解一些TCPIP协议栈层的内容,对以后的工作和面试都是有帮助的。

常见的基础网络知识有OSI和TCPIP模型的分层以及各层对应的协议、端口的概念TCP数据的构成TCP连接的三次握手和四次挥手TCP和UDP的区别TCP的心跳机制与丢包重传机制TCP的滑动窗口与拥塞控制、操作系统中常用的网络命令等。这些基础的内容,在找工作时的笔试和面试中也会频繁地涉及到。当然,计算机网络课程中的部分内容可能比这些基础内容讲的要深,可以深入地、系统地去学习一下。

2.2、熟悉一些常用的SQL语句

掌握基本的数据库知识是对一个IT技术人员的基本要求,无论是开发人员,还是测试人员,亦或是其他技术岗位。服务器侧有存储数据的数据中心,数据都是保存在数据库中的,服务器程序会频繁地读写数据库,特别是大型系统中的海量数据的存储对数据库的读写查询性能有着很高的要求,会有专业的数据库工程师进行开发和维护。

198ecf9773514b05896a6abd42462f84.png

服务器侧一般使用大型数据库比如PostgreSQL、MySQL、Oracle、SQL Server等,上图中基本涵盖了大部分数据库系统。一些互联网大厂甚至会基于开源的PostgreSQL、MySQL等深度优化改造出满足自身业务需求的专业的高性能专业数据库,比如阿里推出的金融级OceanBase数据库腾讯推出的分布式TBase数据库、以及华为推出的智能原生的GaussDB数据库。经过海量数据与业务的考验和锤炼,这些数据库都已达到国际先进水平,甚至它们的性能与稳定性要高于国外的Oracle等顶级数据库,在这些大厂的产品和系统中,已经实现了对国外顶级数据库的国产化替代。客户端程序和嵌入式软件可能也需要存储一些数据,一般会使用轻量级的sqlite数据库。

不同层次的人对数据库掌握程度的要求也是不一样的,此处我们主要讲一下需要掌握的一些基础的SQL内容。比如数据表的创建、修改和删除,向数据表中插入、修改和删除记录,对数据库中数据进行查询,要熟悉并会使用数据库中的索引、视图、事务处理、存储过程、触发器等。具体学习哪一种数据库,其实都可以,比如比较常见的MySQL、Oracle和SQL Server,任选一种就可以了。这些数据库SQL语句的语法大体上是差不多的,只是部分细节上会有所不同,我们只需要掌握相对通用的SQL语句即可。

所以,大学期间开设的数据库课程还是需要好好的学一下的,可以在自己的电脑上安装一个数据库系统,要边学习边动手操作,这样效果会比较好。推荐大家安装免费的MySQL数据库,数据库客户端推荐使用数据库图形化管理客户端工具SQLyog。

2.3、了解Linux系统,掌握常用的Linux命令

当前大部分IT公司的后台服务器中使用的操作系统都是Linux系统,服务器程序都是运行在Linux系统上的,服务器侧的开发人员、测试人员、运维人员都需要对Linux系统比较熟悉,了解Linux文件系统掌握一些常用的Linux命令。在日常开发和排查问题的过程中会频繁地使用到这些Linux命令。这些Linux相关的内容,不仅工作中可能会用到,找工作时的笔试和面试也会有所涉及。

2e092770e92645a9ae3c3dc07661f582.png

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值