[编程开发] 如果一定要在C++和JAVA中选择,是C++还是java?

[复制链接]
龙岗数据1 发表于 2023-10-3 20:00:01|来自:北京 | 显示全部楼层 |阅读模式
如果一定要在C++和JAVA中选择,是C++还是java?
全部回复5 显示全部楼层
快活林的猪 发表于 2023-10-3 20:00:44|来自:北京 | 显示全部楼层
计算机专业的同学对这个问题有疑惑的,一定要看一下猪学长这个回答!
上来直接给出最中肯的建议:

  • 如果你是刚刚步入大学的大一时间非常充裕的同学,猪学长强烈建议先学C/C++,因为c++非常接近底层,对你后面理解整个计算机基础体系都有非常巨大的帮助。貌似国内大学里大多数计算机专业的课程也是这么设置的。
  • 如果你是马上就要面临找工作,同时大学混了几年毫无c++基础,那么想都不用想,赶紧选java,至少保证你能找到工作。
c++更偏向于底层, 除了腾讯之外,虽然在其他公司较少用于业务层面的研发。
但是在各大厂的基础架构部门、偏底层的缓存、存储组件,业务部门中对性能要求较高的服务比如字节广告系统、滴滴出行核心排队服务、还有国内大多数的游戏公司都对c++有着很高的需求。
同时在PC客户端方向,各种输入法,音乐软件PC客户端,c++也是主流技术开发语言。
但是,相比于java、golang的业内比较主流的业务服务端语言,c++岗位较少。
c++服务端相对于java服务端方向,由于生态像java spring那样主流的框架较少,所以学习的广度并不宽,但是c++语言学习深度与难度更大。
比如学习c++现在想要在互联网校园招聘找到不错的c++/Linux服务端方向的工作,基本需要学如下这些:
c语言入门:

如果你是连c语言都没学习过的纯小白同学,猪学长这里首先推荐大家先去看一下我们浙江大学翁凯老师的c语言入门课程:

  • C语言程序设计:
C语言程序设计_浙江大学_中国大学MOOC(慕课)

  • C语言程序设计进阶:
C语言程序设计进阶_浙江大学_中国大学MOOC(慕课)C语言书籍的话,其实用大学自己的教材就可以,或者《C程序设计语言,TheCProgramming Language》、《啊哈C语言》、《CPrimer Plus》任选一本都行。
上面这些书籍如果有需要的同学,这里先分享给同学们:
点这里, 计算机优质书籍项目免费推荐分享!
c++初阶:

对于很多喜欢看视频来学习的小白同学,可以先从b站上黑马的c++入门课程开始,这个c++课程在b站上的c++类学习视频中是播放量比较高的:
黑马的c++入门课程:
2017 黑马 C++ 教学视频_哔哩哔哩_bilibili浙江大学c++:
浙江大学 C++ 翁恺老师_哔哩哔哩_bilibili 也可以哈工大c++精品课:
[哈工大][C++语言程序设计]_哔哩哔哩_bilibilic++初阶在看视频初步入门后,一定!一定!一定!必须要读这本所有c++方向同学必学的c++圣经:

  • C++Primer 5th
牛客网上很多同学这本书都二刷,三刷读了很多遍!
c++进阶:

上来直接首推c++进阶四大名著

  • 《Effective C++》
  • 《More Effective C++》
  • 《STL源码剖析》
  • 《深度探索C++对象模型》
上面这些书籍如果有需要的同学,这里先分享给同学们:
点这里, 计算机优质书籍项目免费推荐分享!
其中重点要关注两本:

  • 《Effective C++》
《Effective C++》一定要重点去学习。只看完《C++Primer 5th》只能达初步达到入门c++语言的水平,必须继续深入学习《Effective C++》才能极大的提高你c++代码的编写水平。

  • 《STL源码剖析》
而同时STL在校招大厂的面试中简直太重要了,几乎是每场c++面试面试官必须提及的考点。《STL源码剖析》所以一定要作为重点来学习。尤其是STL日常使用中高频的容器,vector与list比较、vector迭代器失效的情况、map与unordered_map、set与unordered_set对比等基础问题必须要搞透。
《深度探索C++对象模型》、《More Effective C++》剩下两本在学有余力的情况下额外再去了解。
c++并发编程如果想要额外提高完善一下自己知识,这里推荐《C++并发编程实战》,也可以在学有余力的时候去阅读提高。
由于c++进阶部分涉及到了大量复杂的c++高级特性,复杂机制。如果只看书无法很好的理解,强烈推荐c++侯捷老师的b站精品c++课程视频:
【高清版】侯捷C++新标准-C++11/14
【高清版】侯捷C++新标准-C++11/14_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili【高清版】侯捷-C++ STL标准库和 C++ 泛型编程  
【高清完整版】侯捷-C++ STL标准库和 C++ 泛型编程_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili【高清版】侯捷-C++程序的生前和死后  
【高清完整版】侯捷-C++程序的生前和死后_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili如果上面的内容都能认真的学完,c++基础语言方面就足够应互联网校招中下面这些主要考察的c++面试点:

  • 面向对象的三大特性:封装、继承、多态 、动态多态、静态多态
  • 类的访问权限:private、protected、public
  • c/c++区别、虚函数、Extern C、指针、引用区别
  • 虚函数实现动态多态的原理、虚函数与纯虚函数的区别
  • new、delete 、malloc、free
  • 写时拷贝、继承与多态、虚函数、智能指针
  • 模板、class、struct区别?struct内存对齐
  • 智能指针、引用计数、RAII(资源获取即初始化)思想、shared_ptr、weak_ptr、unique_ptr等
  • 四种类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast
  • c++ STL原理、vector、deque、map、hashmap
同时还需要重点关注c++/Linux服务端生态:

计算机系统底层原理:

书籍:

  • 《深入理解计算机系统》CSAPP
  • 《编译原理》
  • 《程序员的自我修养:链接、装载与库》
视频:

  • 《深入理解计算机系统》原作者视频:
【精校中英字幕】2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频_哔哩哔哩_bilibili

  • 国防科技大学编译原理国家精品课:
编译原理_国防科技大学_中国大学MOOC(慕课)
Linux网络编程


  • 《Unix网络编程》
  •   游双老师《Linux高性能服务端编程》
  • Linux 多线程服务端编程:使用 muduo C++ 网络库》
此处重点推荐陈硕老师的《Linux 多线程服务端编程:使用 muduo C++ 网络库》,这本书真的是Linux网络编程学习必读书籍。muduo是陈硕大神个人开发的C++的TCP网络编程库。muduo基于Reactor模式实现。这本书中对muduo整个架构进行了非常详尽的介绍和分析。校招同学求职c++方向同学的简历上几乎烂大街的服务器项目很多都是参考这个。
muduo 源码注释版本:
https://github.com/chenyahui/AnnotatedCode/tree/master/muduo  这里还有一个学习moduo的视频:
【没有什么能够阻挡我们学习的步伐】网络编程实践--陈硕(Muduo作者)_哔哩哔哩_bilibili上面这些内容看似没多少,但是由于c++较为复杂的机制,其实学习难度与深度远远java方向要大很多。
如果想要从事java服务端方向

大致需要学习了解如下内容:
(1)java语言基础及常用集合
java语言基础是java后端开发面试考察的基础知识,越是应届生的同学面试官往往问基础居多。
要想基础学扎实,非常有必要认真学习一本java语言基础类的书籍。
这里我推荐的是《java核心技术卷一》,
java基础入门真的看着一本书足够了!
重点看第三章到第九章。其中4,5,6,9四章是要格外重点看的,尤其第九章集合的相关概念问题时面试中最常考察的重中之重。

进阶推荐书籍1:《Java核心技术卷2高级特性原书第10版》
进阶推荐书籍2: 《Effective Java 中文第二版》

(2)JVM
随着近几年校招面试难度的提升,jvm已经变成了java后端必考的基础知识了。我在面试java后端岗位的过程中几乎都是必问的了。
学习jvm肯定推荐《深入理解java虚拟机》,
这本书第2章,第3章,第6章,第7章都是必须要重点看并且掌握的。这本书确实是一本让我收获非常大的书,
看懂了jvm会对java程序的运行原理有了更深层次的理解。其他的章节关于jvm调优相关的,也要有所了解。

(3)java并发编程
关于并发编程简直是后端开发人员必须具备的进阶技能了,在应届生面试中往往是面试官对你进行进一步技术考察的必问选项。
对并发编程了解的越多越深入,能与面试官聊的就越多。
如果前面java基础集合与jvm都属于入门寒暄题目的话,那么java并发编程就可以说是重点考察的重头戏了。
我强调了这么多,也能看出并发编程的重要,废话不多说,此处直接推荐学习书籍:
《实战java高并发程序设计》
《java并发编程的艺术》
上面这些书籍如果有需要的同学,这里先分享给同学们:
点这里, 计算机优质书籍项目免费推荐分享!
如果你是对并发编程零基础的小白的话,那么推荐你从第一本书先开始入门并发编程,重点看前5章。《实战java高并发程序设计》属于并发编程入门级的书籍,里面从使用的角度以及结合非常多通俗易懂的程序例子,让你对基本的java并发编程有所了解。
如果你对java并发编程有一定的基础,或者看完了第一本书,想要进一步提高,那么一定要看《java并发编程的艺术》这本java并发神书!
这本书几乎所有章节都是重点,我觉得这本书简直就是神书,从最底层的角度把java并发编程讲解的非常透彻,属于那种读好多遍都能有新收获的。
当你啃透着两本书,java并发编程你就可以与面试官谈笑风生了。
其实java的内容看起来非常多,但是其实学习难度比较低,上手很快。就算是jvm、java并发也远远比c++并发编程要容易学习掌握的多。
最后关于服务端通用考察的计算机基础知识,看猪学长这个回答就行了:
计算机专业大学生应该在大学四年踏实学哪些东西?赠人玫瑰,手有余香

猪学长之前一直都有认真整理很多技术书籍互联网校招面试题目,现如今猪学长也已经毕业啦,都分享出来直接分享给有需要的同学们。
精心整理,助力春招!计算机优质书籍项目推荐分享!互联网校招面经精心整理优质面经合集同学们如果觉得有帮助的话,不要只偷偷收藏白嫖猪学长,给猪学长点一个吧,
这样可以让更多的同学看到!



最后同学如果还有什么计算机相关互联网大厂求职技术方向等等问题,都可以在评论区给猪学长留言,或者关注我猪学长哈,猪学长不向同学们开通付费咨询!
同时对字节跳动感兴趣的同学,想要找猪学长内推的,也可以联系猪学长哈。
风口浪尖上的猪
真心希望可以帮助到你。
阿强123 发表于 2023-10-3 20:01:11|来自:北京 | 显示全部楼层
c++和java可以同时学,我就是同时学的,什么区别可以自己体会,顺序循环分支这些语法都差不多。同一道题目可以用两种语言都做一下,对比体会一下就知道了。
其实面向对象的思想我是在java中学会的,而不是C++。当然学会了就可以运用到C++中去了。
虽然《设计模式》这本我很早就看了,且是用C++实现的,但是可能是因为我看得太早了,并没理解。反倒是后来看的《java与模式一书》,收获巨大。这本书不是翻译的,是国内的书,有兴趣的可以参考。
tyzyf 发表于 2023-10-3 20:01:35|来自:北京 | 显示全部楼层
提问题的明显是学生  
学生时间又多 环境又好,  不学难的, 难道先学JAVA????  
被C++虐过的人,再学其它语言。。。。谁试谁知道。。。
学了C++,以后简历上说不定可以写: 熟悉C++,精通JAVA,python,c#.....
先学JAVA      :熟悉JAVA
yoki1366 发表于 2023-10-3 20:01:55|来自:北京 | 显示全部楼层
编程届有一个固有的偏见,就是大家默认C++可以轻松转JAVA,但JAVA转C++很难。
实际情况比较复杂,通常来说,JAVA在软件工程上的训练比C++足,但是缺乏内存管理和硬件优化的训练。
nana00101 发表于 2023-10-3 20:02:52|来自:北京 | 显示全部楼层
我觉得看应用场景,例如我是做图像算法的,要非常追求效率。处理一副图像的速度哪怕能快0.1ms也要争取。决定了必需使用C\C++,不会选择java.

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则