编程初学者指南(2023版):零基础小白如何学习编程 您所在的位置:网站首页 哪个软件可以学编程 编程初学者指南(2023版):零基础小白如何学习编程

编程初学者指南(2023版):零基础小白如何学习编程

2024-07-02 07:14| 来源: 网络整理| 查看: 265

文章目录 1.写在前面1.1 为什么有这份指南1.2 指南里有什么1.3 关于软件协会1.4 面对人生🍀 对工作:越努力越幸运🍀 对感情:爱得厚重开阔🍀 对他人:保持尊重、友好、真诚和谦逊🍀 对生活:骄傲柔软地活着 2.编程的几个基本概念3.学习编程难吗4.英语和数学不好可以学编程吗4.1 英语不好可以学编程吗4.2 数学不好可以学编程吗 5.我应该要学习很多编程语言吗6.世界上最好的编程语言是什么7.大一上需要去纠结走哪个方向吗8.初次刷题没思路没感觉正常吗9.如果我在写代码时遇到问题怎么办10.学习编程是应该先看书还是先看视频呢11.我是非计算机专业可以学好编程吗12.我认认真真上好学校的课程就够了吗13.关于 C 语言13.1 C 语言的发展史13.2 为什么我推荐先学习 C 学习13.3 学习 C 语言用什么编程工具比较好13.4 推荐的 C 语言学习视频13.5 C 语言学到哪个程度可以开始自己写代码 14.编程学习的心得分享14.1 学会做笔记,有自己的笔记库14.2 代码不要死记硬背,关键在于理解是干嘛的14.3 养成良好的编程习惯🍀 一定要格式化代码🍀 标识符规范命名🍀 学会写注释 14.4 程序是用大脑写的,而不是用手写。14.5 一定要亲自写代码,能听懂与会使用是两码事14.6 有目的地去学习 15.程序员成长的三阶段15.1 第一阶段15.2 第二阶段15.3 第三阶段15.4 程序员出身的大佬 16.计算机基础知识17.在大学16.1 社团&学生会&团委会16.2 编程类比赛16.3 考证16.4 考研与就业 18.编程相关的常见工作岗位18.1 开发类🍀 客户端开发🍀 服务端开发🍀 运维🍀 大数据与人工智能🍀 算法🍀 游戏🍀 数据库🍀 嵌入式🍀 安全 18.2 测试类18.3 非技术类

⭐ 本文已记录在了我的个人博客,欢迎访问:https://www.zhulang.love

1.写在前面 1.1 为什么有这份指南

大部分刚进入大学的小伙伴们应该是第一次接触编程,编程世界广阔而复杂,对于初学者来说,很容易感到迷茫和不知所措。小伙伴们可能会充满许多疑问,例如怎样才能学好编程、编程的学习路线是什么、哪些人适合学习编程、有哪些好的学习方法等等。对此,我在 2022 年为 软件协会 大一成员 初次编写该指南提供帮助。在 2023 年,我在编写的 2022 年指南基础上进行了重新排版与内容优化,为初学者提供更好的学习指引。

1.2 指南里有什么

我在刚上大学时才开始接触编程,关于电脑也只会玩玩 4399,其它一窍不通。因此当时的我也是一名正宗的编程与电脑初学者,刚接触编程的时候也是非常迷茫甚至慌张的。

在这篇指南里,我对当时小白的我遇到的问题进行了解答,并汇总了 2022 年的大一新生遇到的许多疑问的详解。因此,这或许会成为一份不断更新的指南。

当然,这只是一个已经学习了两年编程的学长的经验分享,不是大佬或专家的专业解答,但可能会因此更加易懂与有实际的帮助,让你得到实在的收获。

1.3 关于软件协会

🏠 官网:https://www.csuftsap.cn/

中南林业科技大学软件协会成立于 2018 年,一届又一届的学长学姐都在用他们的努力为其添砖加瓦,他们乐于将自己的经验和知识传承下去,为新一届的成员提供宝贵的指导和鼓励。因此,软件协会的发展是迅速的,离不开历届学长学姐的努力与社团成员的认可支持,从 2018 年只有十几人的小社团发展成了 2022 年吸引了近三百人加入的大社团。

image-20230904222426203

软件协会的优势:

学长学姐学习指导与解疑答惑;

image-20230904224619161

优质资源分享平台;

image-20230904224713672

知识拓展:软协提供的知识拓展大部分都是在学校学习不到的,但却是在实际工作开发中用到的知识与工具。软件协会对大一社团成员的学习规划是在与其他学校同学学习同样知识的基础上进行知识巩固与超前学习;

image-20230904225441866

书籍资源,提供借阅;

image-20230904225331833

丰富多彩的活动:例如暑寒假学习小组、软件开发大赛等等。

image-20230904225209146

1.4 面对人生 🍀 对工作:越努力越幸运

很多有所建树的人在分享自己过往的时候,一般都会说自己是个幸运的人,但其实很多的运气都是来源于他前期的准备和努力的工作,所以如果我们经常在说自己运气不够好的时候,需要想想自己是否真的努力过了,因果关系要弄清楚,不是运气来了你再去努力,而是越努力的人往往才会有好运气。

🍀 对感情:爱得厚重开阔

如果你是正在恋爱的人,别在意有没有海誓山盟,也别去期待感情一定会开花结果。重要的从来都不是把注意力放在不切实际的远处,而是把信念放在心中,好好珍惜此刻的拥有。除非结果真的发生,不然永远没人知道会发生什么。当你不再期待结果,结果才会真的发生。所以,放轻松,把念力放在心里,它会领着你去往你该去的地方。你呀,别管那个地方在哪里。

如果你是已经分手的人,愿你们在分开过后的漫长岁月里,偶尔也能怀念起彼此,心生欢喜和美好;愿你们在无法重来的未可知的将来里,因为已经足够幸福,而不再彼此想起;愿已经深爱过的你,能在人生的别处得到眷顾。

如果你是单恋的人,希望无论对方给你的回应是什么,你都能从这样的一段关系中得到比你孤独一人时更多的快乐。

如果你是被真心喜欢的人,希望无论对方是不是真的符合你的择偶标准,你都能在被真心对待的时间里善待那个人。

最后,我们谁都无法被所有人喜欢,遇见能看到你的美好并爱上这种美好的人,本来就不容易,本来就值得我们感恩和珍惜,不是吗?

🍀 对他人:保持尊重、友好、真诚和谦逊

我们应该真正地把低调平和当成我们做人做事的习惯,我们要对周围的人,无论强者还是弱者,都同样地给予尊重和真诚。没有人会是常胜将军,也没有人会永远都是被同情的弱者。如果你今天站在了相对较高的位置,那么你就应该拿出你强者的姿态,这种姿态不是高高在上也不是恶语相向,强者的姿态应该是“以弱者的姿态,做出强者的举动”。

如果有一天你不小心滑落到了低点,你希望别人用怎样的目光看待你,你希望别人用怎样的态度与你交往。那么,就应用你希望别人对待你的方式去对待你身边的每一个人。

🍀 对生活:骄傲柔软地活着

希望没有被这个世界温柔对待的我们,能默默地在自己的身体里创造出更多更多平和的力量;

希望我们都能成为,站在人生低处的时候不心灰意冷不焦躁抱怨,能够勇敢地掸掉泥土从头再来的人;

希望我们都能成为抵达人生高处的时候也会收起尖锐与刻薄,懂得宽宏与分享的可爱的人。

希望我们能骄傲地活着,不畏惧任何困苦和折磨;

希望我们能柔软地活着,不刺痛任何难堪和脆弱。

2.编程的几个基本概念

我们通过有固定格式和固定词汇的“语言”来控制他人,让他人为我们做事情。语言有很多种,包括汉语、英语、法语、韩语等,虽然他们的词汇和格式都不一样,但是可以达到同样的目的,我们可以选择任意一种语言去控制他人。

同样,我们也可以通过“语言”来控制计算机,让计算机为我们做事情,这样的语言就叫做 编程语言(Programming Language)。

编程语言是用来控制计算机的一系列指令(Instruction),它有固定的格式和词汇(不同编程语言的格式和词汇不一样),必须遵守,否则就会出错,达不到我们的目的。

可以将不同的编程语言比喻成各国语言,为了表达同一个意思,可能使用不同的语句。例如,表达“我爱你”的意思:

汉语:我爱你。英语:I love you.C 编程语言:printf("我爱你");C++ 编程语言:cout printf("Hello World:你好,软件协会"); return 0; }

Hello World 是一个最著名的程序。对每一位程序员来说,这个程序几乎是每一门编程语言中的第一个示例程序。实际上,这个程序的功能只是告知计算机显示 Hello World 这句话。传统意义上,程序员一般用这个程序测试一种新的系统或编程语言。对程序员来说,看到这两个单词显示在电脑屏幕上,往往表示他们的代码已经能够编译、装载以及正常运行了,这个输出结果就是为了证明这一点。这个测试程序在一定程度上具有特殊的象征意义。在过去的几十年间,这个程序已经渐渐地演化成为了一个久负盛名的传统。几乎所有的程序员,无论是在你之前,或在你之后,当第一次实现与计算机成功沟通之后,在某种程度上,他们的肾上腺素就会急剧上升(激动不已)。

14.编程学习的心得分享 14.1 学会做笔记,有自己的笔记库

你一定要学会做自己的笔记,无论你是用本子做笔记还是用电脑软件做笔记,都要有对知识点的总结,有在学习过程中或 编程/开发 练习中遇到的问题的思考。

随着时间的迁移,你的知识范围与知识深度都会大大提高,人的大脑能装的东西是有限的,你肯定会忘记许多曾经学过的知识。有人说我看书不就行了吗,书上讲的多详细与知识覆盖多广啊?但实际上,你所需要花的查阅成本比看笔记大的多,笔记上应当有你自己对于知识点的理解,有对需要注意的问题的标注。

当然,我更加推荐的是用电脑软件做笔记。在我的整个大一期间,我都是像高中一样使用本子做笔记,但得出来的结论是不仅花费在做笔记上的时间上太多,而且查询某个知识的效率也低下。

过去的日子里我陆陆续续用了许多支持 markdown 语法的程序员笔记软件,但兜兜转转还是回到了 Typora,我确实认为它是最好的程序员笔记工具,你值得去学习一下如何使用。

14.2 代码不要死记硬背,关键在于理解是干嘛的

这里说的代码不要死记硬背,不是说的不要去记忆一些东西,当然还是有东西需要去记住的。比如说我们 C 语言的 int、double、float、for、while、case、switch、break 等等关键字还有 C 语言的语法等,这些肯定都是需要记的。就像学习英语你不知道单词,不知道语法能学好英语吗?我们的代码就相当于英语语句,记住了英语单词、词组、语法等那么写出英语语句就不会是件特别难的事情了。我们的代码也是如此,掌握了关键字、语法等写出代码也会很轻松。

那哪些东西不要去记呢?举个例子,无论是 C 语言,还是 Java,还是数据库 SQL 语言等等,都有成百上千往上走的函数/类,这些其实除了一些常用的,其它的我们都不需要去记,你只需要知道在某个语言中应该有某个功能的函数就够了,那我们要用的时候怎么找这个函数呢?其实很简单,到 CSDN、博客园、稀土掘金 等程序员社区去找就行了。

📑 比如说我想在 C 语言中生成随机数,但是忘记代码是怎么写来着,直接搜索“C语言生成随机数”之类的关键词到程序员社区找就行了,肯定是有的,都是前人的经验。

我以 C 语言为例,带大家来浅浅探讨一段令无数程序员肾上腺素飙升的代码:

#include int main() { printf("Hello World"); return 0; }

# 是预处理命令,这里可以简单理解为就是标识在源程序编译前进行预先的处理工作。

那处理什么呢?我们接着往后看,后接单词 include,即包含,包含这个词和导入差不多,在编程世界里导入一词更为专业,因此我们之后讲解是我用 导入 来代替包含。

先提一个概念:C 语言开发者们编写了很多常用函数,并分门别类的放在了不同的文件,这些文件就称为头文件(header file),以 .h 作为后缀名。头文件也是文本文件。

因此你应当能理解,stdio.h 就是一个 文件名为 stdio 的头文件,在 stdio 文件中,包含了许多封装好了的函数供我们程序员使用。

stdio 具体又是个怎样的文件呢?stdio实际是一个缩写,我们把stdio进行一个拆分:

std:standard 的缩写,翻译成中文为“标准”;i:input 的缩写,翻译成中文为“输入”;o:output 的缩写,翻译成中文为“输出”。

因此 stdio 文件,即是 标准输入输出文件。

总结 #include:在源程序编译前导入标准输入输出(流)文件到我们自己的程序(程序也是文件形式)中。

每个头文件中都包含了若干个功能类似的函数,调用某个函数时,要引入对应的头文件,否则编译器找不到函数。你需要知道的是 标准输入输出文件 中有两个特别重要的函数:

printf:输出函数,作用是将内容输出到控制台面板上;scanf:输入函数,作用是通过键盘输入内容到正在允许的程序中。

所以,说到这里,你应当大概能理解我们为什么要我们需要写 #include 了吧,因为 printf 和 scanf 函数来自于 stdio 文件,我们想在自己的代码文件中使用到这两个函数,就不得不在源程序编译前进行预先处理 - 导入 stdio 文件,这样在编译完源程序进行程序运行时才是以合法形式使用printf 和 scanf。

暂时你只需要知道 stdio 文件有这两个函数,实际上该文件中还有许多其它常用函数,这里不做列举。

📝 根据我们上述分析,如果我们没有使用到 stdio 文件中的函数,是不是就不需要写 #include 呢?答案是 不需要写的,我们举个例子:

// 这个程序中就没有使用来自stdio文件的函数如 printf // 因此当我们编译运行时虽然没有在文件行首声明 #include,也是能够执行成功这个程序的 int main() { int temp; return 0; }

学会深度思考,这样即使你突然忘记了某个代码片段的编写,但回顾时是很容易轻松与上手的。

即使是工作了几十年的程序员,也会对于某些功能模块的代码拿不准记不清,也依旧会去网上搜索,把网上现成的代码复制下来加以修改就可以放到自己的项目中。为什么他们能很快速的知道某段代码是干嘛的,知道某段代码该如何修改呢?原因很简单,一方面是已经有了大量的实践经验,一方面是对这段代码所应该起到的作用,实现某个功能的代码逻辑理解很深刻。

💭 说说我刚接触编程的经历:大概是在 2021 年放完国庆假后(刚结束大学军训),我开始学习 C 语言,看学校发的谭浩强爷爷的《C语言程序设计》,书的前几页的代码我先是像高中一样背诵了几天,然后开始默写代码。关于深层次的代码解释基本不懂,因为书上虽然有解释但我完全没有沉下心来去尝试理解。就这样懵懵懂懂过了一个月,自己对编程完全提不起兴趣,看书就想困,还和玩的好的高中朋友们抱怨自己不适合编程,看不明白一点。我把这段经历当作给大家的反面教材, 这种做法是真的蠢。

14.3 养成良好的编程习惯

当代码量足够庞大时,代码的可读性就显得尤为重要。这里的可读,不仅仅是对自己可读,也要对其他人可读。一段只有自己能读懂的代码,可以说价值很低,而且这样的代码随着时间的推移往往自己也读不懂。而可读性强的代码,不仅方便移植与交流,更给调试带来了难以估量的便利。对于一个团队来讲,制定统一的编程规范,好处是显而易见的。通常一个项目是由多个成员共同完成,在项目中,经常互相调用组内成员的代码。如果两个人的编程习惯和风格差异显著,那么将会浪费大量时间在读懂代码上。相反,一致而良好的编程规范,会让合作开发变得轻松而高效。

这里介绍几个我觉得比较重要的编程习惯:

🍀 一定要格式化代码

代码格式化,主要是整理原代码的缩进,以及运算符的间隔(比如通常在运算符左右都有空格)等。目的是使代码缩进清晰,更容易阅读。

❌ 未格式化的代码

#include int main() { int a=0; if(a==1) printf("a的值为:");printf("%d", a); return 0;}

比如这样的代码,你觉得可读性好吗?特别是在实际开发中代码量远比这个多得多,如果程序有 bug 需要排查,这对修改代码的人无非是一种巨大的痛苦。

✅ 格式化的代码

#include int main() { int a = 0; if (a == 1) { printf("a的值为:"); } printf("%d", a); return 0; } 🍀 标识符规范命名

标识符概念:

对各种变量、函数、文件等命名时使用的字符序列称为标识符;凡是可以自己取名字的地方都叫标识符。

这里以 变量 的规范命名为例:

命名应当直观且可以拼读,可望文知意,便于记忆和阅读。最好采用英文单词或其组合,不允许使用拼音。程序中的英文单词一般不要太复杂,用词应当准确;命名的长度应当符合用最少单词表达出最详细的信息原则。C 是一种简洁的语言,命名也应该是简洁的。例如变量名 MaxVal 就比MaxValueUntilOverflow 好用。标识符的长度一般不要过长;英文词尽量不缩写,特别是非常用专业名词,如果有缩写,在同一系统中对同一单词必须使用相同的表示法,并且注明其意思;当标识符由多个词组成时,每个词的第一个字母大写,其余全部小写。比如 StudentAge、StudentFatherName;尽量避免变量名中出现数字编号,如 Value1,Value2 等,除非逻辑上的确需要编号。初学者总是喜欢用带数字的变量名或函数名,这样子看上去很简单方便,但其实是一颗颗定时炸弹。这个习惯初学者一定要改过来。 🍀 学会写注释

什么是注释:用于说明解释程序代码的文字就是注解。被注释的文字,不会被编译器编译执行,注释就是给自己或其它程序员看的。

注解提高了代码的阅读性。会写注释 是 一个程序员必须要具有的良好的编程习惯。将自己的思维先通过注释整理出来,再用代码去体现。

试想一下,在项目开发中,如果遇到 BUG,你或其它程序员需要对你的代码进行修改,可能随着时间推移你也早就忘了某段代码到底是干嘛的了,如果你写了注释,程序员能够快速把握你的代码编写思路,极大提高开发效率。写一手好的代码也是一个高级程序员必备的技能之一。

📑 我举一个我在项目中写过的注释:

// 1.校验用户手机号格式 if (RegexUtils.isPhoneInvalid(phone)) { return Result.error(HttpStatus.HTTP_BAD_REQUEST.getCode(), "手机号格式错误"); } String key = RedisConstants.LOGIN_USER_CODE_KEY + phone; // 2.查看缓存中是否已经存在,得到剩余TTL Long expire = redisCacheUtils.getExpire(key); // 3.存在并且剩余时长大于4分钟则不可再次发送验证码 if(expire > RedisConstants.LOGIN_USER_CODE_AGAIN_TTL){ return Result.error(HttpStatus.HTTP_TRY_AGAIN_LATER.getCode(),"发送失败,验证码仍在有效期内"); } // 4.验证码不存在或者剩余时长小于四分钟,则可以继续发送验证码 --> 先生成六位随机数 String code = RandomUtil.randomNumbers(6); // 关于恶意并发的问题,在短信云平台已经自动做了处理,这里就无需处理 // 5.先存储到 redis,附带验证次数,初始化为0 redisCacheUtils.setCacheObject(key,code+",0",RedisConstants.LOGIN_USER_CODE_TTL); // 6.发送短信到手机 boolean result = aliSmsTemplateUtils.sendLoginCode(phone,code); //boolean result = txSmsTemplateUtils.sendLoginCode(phone, code); if(!result){ // 6.1 发送失败,则移除 redis 中的验证码缓存信息,并返回 redisCacheUtils.deleteObject(key + phone); return Result.error(HttpStatus.HTTP_INTERNAL_ERROR.getCode(),HttpStatus.HTTP_INTERNAL_ERROR.getValue()); } // 6.2 发送成功 return Result.ok();

当然,你也可能会看到一些有趣的注释:

// 老板要求在这里让非 VIP 的用户卡顿一下,这样用户才有充值 VIP 的欲望,说白了,得加钱使用才不卡。 // 如果已经是 VIP 的用户,那么就该 if 语句不成立,就不会卡顿,业务继续执行 if(user.isVip == false){ Thread.sleep(10000) // 单位是 ms,这里卡顿 10 s } 14.4 程序是用大脑写的,而不是用手写。

简单的说:做事之前,要先过遍脑子。

用大脑写代码的意思就是程序应该是在脑袋里成型的。首先,即便是上边那些混乱的写法,也肯定要过大脑的,毕竟不经过大脑,你其实很难下意识打出一行代码的,但问题就是经过大脑的部分实在太少了,每次就那么几行上下文。真正高级的做法是,你能够在脑袋里把整套代码的流程推导一遍,让程序在你的大脑里运行一遍,这时候你会发现写下来会是非常轻松的体力活。有那么一些程序员几乎不加班,但是效率还是很高,那就是因为他们其实无时无刻都能在大脑里写程序。成为一个高级程序最重要的就是要有在大脑里完整的写完一段代码的能力。

如果接受了大脑写代码的说法,那么你会得到一个非常有意思的结论:用的哪种编程语言并不重要,重要的是思想。

14.5 一定要亲自写代码,能听懂与会使用是两码事

纸上得来终觉浅,绝知此事要躬行。

很多学习编程的人在学会某个知识点或者听懂某个算法后就说自己懂了,却没有去上机实验是非常不可取的。有的东西思想其实很简单,但用代码实现起来可能会让你无所适从,可你却没有去实操就不知道有这些问题,这是非常致命的。代码是敲出来的,不要眼高手低。简单的不屑于敲,难的又敲不出来,是一件很尴尬的事情。

代码是一切的基石,看看我们软件界的先辈们吧。Dennis M. Ritchie 决定创造一门“看上去很好”的语言时,如果只是站在高处呐喊,这门语言是划时代的,它有多么优秀,但不去实现,又有何用呢?没有 Dennis M. Ritchie 的亲自编码实现,C 语言不可能诞生,UNIX 操作系统也不可能诞生。Linux 在聚拢成千上万的开源狂热者对它进行开发和扩展之前,如果没有 Linus Torvalds 的编码实现,仅凭他高声呐喊“我要创造一个划时代的操作系统”,有用吗?一切的一切都是以编码实现为前提的,代码是我们前进的基石。这是一个英雄辈出的年代,我们每个人都希望自己被顶礼膜拜,可是这需要资本和实力,而我们的实力体现了我们处理技术问题的能力。

无论你将来的职业发展方向是架构师、设计师、分析师、管理者,还是其他职位,只要还与软件打交道,就有必要打好能亲手写出一手好代码的技术基础。

一个程序员,如果没有亲手写过几万行代码,没有做过几个好的项目,不能说是一个合格的程序员。

14.6 有目的地去学习

一定一定不要跟着学校课程的安排进度来学习,在大学你拥有足够的自由空间去做你想做的事情。

如果你对充满创意和视觉效果的网页设计感兴趣,那么你应该深入了解前端开发的相关知识。前端技术涉及网页的外观、交互和用户体验,让你能够创造出花里胡哨而又令人印象深刻的网页;

如果你对未来从事游戏开发充满期待,那么你应该深入学习 C/C++ 基础,为自己打下坚实的编程基础。接着,你可以探索适用于游戏开发的 C# 语言,将 unity 作为游戏引擎,并深入研究游戏设计原理;

如果你想在大四实习的时候进大厂,那么大二大三请开始去了解大厂对实习生的要求,比如需要 Linux 基础,那就把需要有一台 Linux 服务器,把使用命令模式当成一种习惯;

如果你希望工作 5 年后成为一名架构师,请去了解架构师需要的基本技能,在平时工作时尝试着不同服务架构的搭建;

如果你希望以后可以自己出去创业,那在你具备一定技能时,就多出去走走与人交流,去了解一个完整的项目需要有哪些环节,需要与哪些人员沟通,出了问题需要准备哪些预案。

15.程序员成长的三阶段 15.1 第一阶段

学会了一门编程语言的基本语法,对一些高级概念有了一定理解,比如指针、面向对象、多线程等等。此外已经学会了基本的数据库操作,增删改查运用娴熟,自我感觉已经掌握了该语言的全部精髓,比较喜欢追求最近流行的新技术,工作中的所有需求习惯通过添加 if else for 来实现,一切以功能实现为目的,比较少的考虑性能方面,注释文档一般能不写就不写,编程习惯如变量的命名还没有自己的风格。

15.2 第二阶段

慢慢感觉到了优化的重要性,开始在第一阶段的基础上了解一些设计模式、算法、数据库优化,有了写注释和文档的习惯,对一些框架会去查找源代码,看看其写法及实现方式。技术上会经常去翻阅海外的技术博客及官方文档。会经常在一些博客论坛总结自己的技术,也会用 Github 分享自己的小项目。

15.3 第三阶段

已经可以独立带领团队,对项目已经有自己的整体规划,在业务需求出来后能全盘考虑,技术上不追求新潮了,而是根据业务制定出合适稳定的技术方案。对一些有并发需求的业务有相应的预案,对不合理的需求会提出自己的观点,寻求最佳解决方案。

15.4 程序员出身的大佬

当然除了这三个阶段外,很多开发者会跳出这个圈子,以自己的技术特长及社会资源打造自己的事业。比如以下几位大佬都是程序员出身:

扎克伯格:社交网站 Facebook(脸书)的创始人兼首席执行官。

image-20230901015312439

周鸿祎:360 公司创始人、董事长兼 CEO。

image-20230901015256421

雷军:小米科技有限责任公司董事长兼首席执行官,北京金山软件有限公司董事长,小米智能技术有限公司法定代表人、执行董事、经理 。

image-20230901015242523

张小龙:腾讯公司高级副总裁、Foxmail 创始人、微信创始人。

image-20230901015223776

张一鸣:字节跳动创始人,旗下产品有 抖音、今日头条、西瓜视频 等。

image-20230901015148521

16.计算机基础知识

计算机俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算、逻辑计算,还具有存储记忆功能。

计算机由 硬件 与 软件 组成:

硬件:看得见摸得着的物理部件;软件:可以指挥硬件工作的指令。

软件的分类:

系统软件:Windows、Linux、Android、Harmony(鸿蒙) 等;应用软件:微信、QQ、王者荣耀、哔哩哔哩 等。

整体图示:

image-20230416190922129

17.在大学 16.1 社团&学生会&团委会

我个人是推荐参加的,但建议只参加 1 ~ 2 个社团, 参加娱乐性质的社团要把握好度,留下更多的时间给自己成长。

16.2 编程类比赛

如果有机会可以参加一些编程类的比赛,建议在大一下参加蓝桥杯,大二参加服务外包创新大赛、计算机程序设计大赛。

关于 ACM 算法竞赛:计算机界奥林匹克,门槛很高,含金量也非常非常高,需要付出长时间准备,适合于有较强数理基础的同学参加。

当然,对大部分人而言,我都不建议将精力全部投入到比赛中。比赛提升的是算法和代码能力,但是找工作需要的是综合技术实力。获奖是锦上添花,只有你技术满足要求了,获奖才是被认可的。

16.3 考证 证是否需要计算机二级不需要软考不需要四级必须过六级能过则过驾照可以有 16.4 考研与就业 要点考研就业学历有一定优势,在看中学历的企业中优势明显三年工作经验技术经验学校难学到实战经验,发论文为主,实战较少,技术很难成长三年企业级实践开发经验经济花钱上学,经济很难独立挣钱工作,经济积累眼界好的导师带着可以拓宽学术眼界围绕公司业务的学习和成长,好的公司全是优秀的同事一起进步,拓展行业眼界。成长读研孤独,磨练心性在公司的推动下,技术成长更多。机会失败错过秋招机会(1年的代价)工作不合适可以选择合适的成功率考研成功率较低工作灵活性更高年龄研究生毕业后,年纪不小。考虑成家立业,压力大奋斗时间更长,机会更多未来工作寿命更长,工作稳定性更高学历低,面临失业,青春饭 18.编程相关的常见工作岗位 18.1 开发类 🍀 客户端开发 Windows C++ 客户端开发工程师Windows C# 客户端开发工程师ios 开发工程师Web 前端工程师微信小程序工程师Android 开发工程师 🍀 服务端开发 C++ 后台开发工程师Java 后台开发工程师Python 开发工程师PHP 开发工程师 🍀 运维 运维工程师运维开发工程师系统开发工程师 🍀 大数据与人工智能 数据挖掘工程师自然语言处理工程师智能驾驶系统工程师人工智能算法工程师语音/图像识别工程师 🍀 算法 算法工程师数据挖掘工程师 🍀 游戏 C++ 游戏客户端研发工程师Unity 3D 研发工程师C++ 游戏引擎研发工程师C++ 游戏服务器研发工程师 🍀 数据库 数据库研发工程师DBA 数据库管理员 🍀 嵌入式 嵌入式 C 开发工程师驱动开发工程师 🍀 安全 网络安全工程师 18.2 测试类 测试工程师测试开发工程师 18.3 非技术类 产品经理产品运营产品销售(售前工程师、售后工程师)技术支持


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有