本站消息

  出租广告位,需要合作请联系站长

  今日名言-想象你自己对困难作出的反应,不是逃避或绕开它们,而是面对它们,同它们打交道,以一种进取的和明智的方式同它们奋斗 。——马克斯威尔·马尔兹

  今日名言-用谅解、宽恕的目光和心理看人、待人。人就会觉得葱笼的世界里,春意盎然,到处充满温暖。——蔡文甫


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

自学C/C++需要学到什么程度呢?年薪五十万程序员年终总结

发布于2021-07-24 21:30     阅读(467)     评论(0)     点赞(30)     收藏(0)


在知乎看到一个这样子的问题

文章来源于知乎哦!

自学C++编程,需要学到什么样的程度才可以工作?
大学毕业,没什么特长,性格不开放,所以工作找不到。在上学的时候学过C++的基础知识,现在想自学C++编程,需要怎么学?需要什么样的程度可以找的到工作?
在这里插入图片描述
这个问题,我觉得可以拆分成三个问题:

1.要不要做一名coder。

2.选择做一名coder,学习什么语言合适。

3.学习一门语言,比如C++,要学到什么程度才能找到工作。

要不要做一名coder?
是否适合做一名coder,确实和性格有关,外界对于计算机编程从业者的称呼无外乎码农、程序员等,对于我们的印象也是穿着拖鞋短裤、头发蓬乱、胡子渣渣等,觉得我们性格内向、不善言辞,其实这些都是片面和肤浅的。
在这里插入图片描述
作为一名coder,需要能耐得住寂寞,而不是内向。

现在的计算机行业早已不是两千年的个人英雄主义时代:一个人写一个软件一夜成名。

现在的一个项目或产品往往需要一个团队通力合作去完成,PM(产品经理)、RD(Coder)、QA(测试)、OP(运维)之间会有反复的沟通、交互甚至是对抗,一名RD需要和PM沟通产品和项目需求,了解PM的真实意图,从一个RD的角度为产品把关;需要和QA沟通,建议QA哪些功能点需要重点测试,需要从哪些角度测试更合适;需要和OP沟通,告诉OP这个程序应该如何部署,对于机器性能的消耗有哪些,建议重点监控哪些地方。这些都需要RD良好的表达能力和沟通能力。

在这里插入图片描述

如果不仅性格不开放,而且表达和沟通能力也欠缺的话,建议以后有意识的加强提高,而不是通过选择coder这个行业去规避。

那么什么样的性格适合做一名coder呢,个人认为最好的答案是热爱,能通过coding产生自我认同和成就感。如果你一接触编程就爱的无可自拔,那么恭喜你找到真爱。但是人们往往很容易知道自己很讨厌什么,却很难知道自己很喜欢什么,并且很多人在学习新知识的时候有畏难心理,只有达到一定高度和深度的时候,才能产生优越感和成就感,所以有必要通过一些性格特点来判断自己适不适合做coder。

在这里插入图片描述
个人列举了以下几点,欢迎大家补充:

要耐得住寂寞,能一天十几个小时坐在电脑前;
要有良好的逻辑思维能力,否则会被很多BUG缠绕;
要有良好的学习能力,计算机技术更新速度很快,需要我们不断的学习;
要有一个好身体,长期加班坐着,身体会每况愈下。

选择做一名coder后,学习什么语言合适?

如果C++功底比较薄弱,个人建议还是不要将C++作为入门语言,出于两个原因考虑:

一是 C++的门槛相比于Java、C#等纯面向对象的语言而言,要更难一些。

难在语法和规则更复杂,也难在C++需要我们自己管理内存,需要对操作系统的内存分配和管理机制有一定的了解。

二是感觉咱们国内,尤其是互联网行业对于C++的需求量没那么大

而且C++更倾向于在Linux服务端做后台的服务,这无疑是编程新手短时间不能出成绩的地方,所以选择C++可能面临更大的就业压力。
那么其他语言呢?现在的互联网行业很火,互联网涉及到的主流语言是Java,可以做web开发,也可以做app开发,成熟的面向对象机制,丰富的库资源,友好的学习曲线,就业需求量也很大。

选择一门语言后,学到什么程度才能找工作?

我们首先要区分两个概念,找到工作和能工作是两回事,社招的岗位一般要求应聘者进来就能工作,而校招的岗位一般要求应聘者有良好的基础,经过初期的培训之后能胜任简单的工作,之后再一步步达到能胜任岗位的目标。楼主应该属于后者,我就职于BAT,仅就BAT并且是我身边的岗位对于校招的要求发表看法,抛开所有学历、学位和学校等级,就编程语言而言,语言关一定要过,不是说要把C++ Prime通读消化掉,但至少要能在理解业务逻辑的基础上读懂代码,有少量不懂的地方也可以通过搜索或查阅工具书快速的掌握。

在这里插入图片描述
那是不是只要掌握好语言就够了?答案是NO。

纵向来看,语言是外功,数据结构和算法是内功,内外兼修才是正道,算法导论的前几章最好要掌握,包括基础的算法复杂度的概念、排序算法、递归式、栈、队列、链表、二叉树、散列表等等,后续的高级数据结构和图算法可以按照兴趣和工作需要去掌握,另外,算法导论要求有概率论、线性代数的基础知识,如果有微积分的基础知识就更赞了。在这里插入图片描述
横向来看,编程语言依赖于操作系统,如果使用C/C++语言,做PC端的Windows研发可能需要掌握MFC、Windows API等,做服务端的Linux开发可能需要掌握Linux API、Shell等。编程语言处理的数据需要存储,就需要掌握数据库技术(SqlServer、Mysql、Oracle、甚至是Hadoop和Spark等),如果是网络产品,不可避免的会涉及到网络编程(socket、网络协议等),网络编程往往还伴随着多线程甚至是多进程和分布式的要求,这就需要我们掌握多线程多进程分布式编程的技术,上述这些在工作中可能会部分或者全部涉及到,但一定不会是在工作中涉及到的全部,庆幸的是对于初学者而言,不需要全部掌握才能开始工作,我建议最好都懂一些基础,知道这些概念是怎么回事、在什么情况下适合用什么技术,用到的时候再去深入掌握即可

希望这个回答能帮助大家,希望大家慎重择业,多听听其他人的建议。如果选择了作为一名Coder,也能少走我曾经走过的弯路。最后引用无间道里韩琛的话:路怎么走,你自己选,提前祝你工作顺利。最后给大家也带来了C/C++的学习基础教程及相关资源,希望大家能学好编程,走上人生巅峰!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



所属网站分类: 程序员的那点事

作者:小飞刀你有点飘

链接:http://www.pythonpdf.com/blog/article/291/220d4842d8b5fa23e8ff/

来源:编程知识网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

30 0
收藏该文
已收藏

评论内容:(最多支持255个字符)