星球同学提问
甘哥你好,我是双非本,2硕,目前研1,打算研一下或研二上去找第一段实习,今天想跟你请教一下项目具体该如何准备。
从开学到现在我把通用基础大概学了一遍,然后写了一个内存池的小项目,这个项目网上资源也比较多了,我在写的时候大概就是先看一下框架图,了解框架后基本就是对着源码抄,这样一方面效率比较低,另一方面感觉自己在抄的过程中也没学到太多东西。
最近我想再做一个大项目放在简历上,所以想请教一下以什么样的思路去准备项目是比较正确的,是否需要自己手动把完全的项目搓出来,以及想问一下一个项目从开始学习,一直到写到简历上,大概的流程是怎样的,感谢甘哥解答。
阿甘回答
对于你的疑问,可以去《职业规划》知识库:
https://www.yuque.com/u41022237/bclo90/ttxnh88k7so0w9f8?singleDoc# 《职业规划》
看看一下文章内容:
拿到一个学习项目,怎么快速掌握
面试的时候项目怎么聊,才能发挥最大的价值
编程项目怎么学习
拿到一个学习项目,怎么快速掌握
很多学员在学项目的时候,面对一份庞然的代码都感觉无从下手,不知道怎么掌握。
我认为可以分为如下几步,一步步来,捉个击破。
第一步:把项目跑起来,看看什么效果
第二步:理解清楚项目的架构,进行模块划分
第三步:模块化学习,重点是理解清楚设计逻辑
项目运行起来,看效果
如果是那种前后端的项目大家运行起来,项目效果一目了然,可以很清楚的知道都有什么功能。
但是cpp更多的岗位都是底层的,更多的是对外封装接口,供应用使用的。 这个时候怎么看,其实这种一般在开发的时候,都会有写对应的test测试程序的。我们可以执行对应的测试程序,然后输入 不同的命令,看看效果是怎么样的。
理解清楚项目的架构,进行模块的划分
不管是公司的还是开源的项目,一般都是有架构图。可以搜集下对应的架构图,了解下项目的基本框架。
再结合你你看的项目效果,划分出主要的功能模块。进行功能的划分
模块化学习,重点是理解清楚设计逻辑
说到代码逻辑的学习,有的人,可能首先会说从main函数开始看。
当然对待这种方法,我不可否认它存在的一定道理。比如针对一个小型项目,
可能就是一些函数的调用,顺序结构,这个从main函数,一步步看下去当然没有问题。
但是一个大的项目必然是多线程调用,以及一些事件信号异步的回调等等,这个时候如果你从main函数开始追,估计一会你就困的睁不开眼了。
所以这个时候,我认为最好的方式,就是根据你上面写的模块划分。选择你感兴趣的模块捉个击破。
为什么会推荐这种看法的,其实可以从一下几点分析:
(1)该模块代码产生的原因,项目的理解
(2)简历的书写
其实一个大项目,无非就是一个个小项目组合起来的吧。随着时间的推移,需求变多,导致开发的模块变多,最终称为大家所说的屎山代码。所以这个功能模块产生,可以理解成就是把该功能实现的逻辑堆砌在此项目上了。
推荐大家这么看,还有就是大家现在看项目肯定是为了写在简历上加分的,在简历写的时候也是写你实现了什么功能,功能有什么难点。所以,看也是模块的看,毕竟看懂了就可以立即写的简历上了。
咱们星球的项目的话,其实我认为完全没必要看代码了,这些都帮你们抽离转换成文字了,所以感觉没必要自己再去看了。写成高质量的文档了,什么时候高质量的文档,就是努力能一份,单纯看文档,大家就完全可以理解这项目,可以达到和面试官拉扯的水平。这也是最近一直在干的事情,节省大家的时间,减少大家的学习成本。
还有就是面试的时候没人感兴趣你的代码,以及项目展示的,除非你强烈主动要求,看代码也是为了理解清楚项目的逻辑 我认为单纯站在面试角度,代码都没必要看,更何况敲了。看别人项目代码,浪费这时间毫无作用。想看就多看看开源的,安卓源码,Linux内核的。别人的项目你拿来面试。别人也不是大拿,写的一堆屎对你有学习意义吗。为啥不看这些好的啊,经历了时间检验的。
面试的时候项目怎么聊,才能发挥最大的价值
最近很多同学在面试的时候,问项目的时候,不知道怎么聊,才能发挥出项目的最大值,回答到期待的面试官期待的得分点。
这里咱们主要聊聊cpp / c++相关的项目,cpp / c++其实主要岗位就是嵌入式开发,底层相关岗位。
专业领域性非常强,不同的方向,发现除了都用cpp / c++语言以外,技术栈天差地别。
对于像这种领域性比较强的项目,说想和面试官完全聊明白是很难的。因为很多面试官可能人家都不是搞网络的,或者说人家都不是搞底层网络的。(以AI智能网络诊断项目为例)其他项目也一样,比如自己实习。很可能大多数面试官不是搞你这个方向的人家都不懂。
那怎么才能发挥出这项目的价值,甚至说你实习的价值。那就要从你的简历书写,以及你的介绍,让面试官看到开发这个功能的难度,让面试官感觉到如果他来做这一块,做起来可能也会很棘手。最后的完成度可能还不如你。
让面试官感受到你这个人的开发能力,以及技术水平。让人家感觉如果把你招进来,快速学学他们这个方向的知识,也是可以快速上手干活的。
那对上面这些具体化,怎么让人家感受到你的开发能力以及技术水平呢。我们做开发的都知道,越接近底层,开发难度越大,对技术水平要求越高,所以要尽可能多的展现你对底层内核的理解能力。
那怎么让人家感受到你的开发能力呢,那就是比如你开发某个功能的时候,可以不仅仅是简单的介绍下功能的实现,也可以更多的说说你做这一块的一些前提的准备工作,方案的调研,功能的设计,让人家感受到你这个的人开发思维的一个完整性,仿佛一看就是一个开发的老手
编程项目怎么学习
星球很多同学,在做星球项目,或者做自己项目的时候,都会遇到各种坎坷,说看不懂,不理解。
那项目,一个从未接触过的项目应该怎么学习呢。
说方法之前,我们可以先对要学习的项目进行一个分类,分一下学习的两个境界。我认为可以整体分两类:
(1)一类是,自己学习,用于提升自己,用于跳槽,找工作给简历加分的 (个人项目)
(2)一类是,工作公司的项目,自己实际工作中的
对于个人项目,拿来面试。面试主要考察什么呢,你这个人设计能力的完善性,即你项目的某个功能,对于极端场景是否有考虑到。那这对于一个项目,熟悉到什么程度算可以了呢。主要就是项目的架构,项目功能的实现思路。对代码细节,写法没必要细究。
原因:
(1)相同的功能实现,不同的人可能就会有不同的写法,以及相同的人不同时期也会有不同的写法;
(2)面试重点是思维逻辑的交流,让人家可以听懂,可以认可,能够产生共鸣;毕竟人家也没看过你的代码,语法、写法人家也不知道,你说的这么细,反而让人家听不懂,效果还很差;
(3)这也是一直强调的,在学项目的时候也要注重文档的梳理编写。能够让一个搞python的,搞java的可以看懂,快速写出来。别说一堆自己项目自己命名,这确实详细,但是谁也看不懂,听不懂,那效果很差
公司的项目,我们进公司,主要是要解决项目bug,优化项目代码的,开发新功能的。解决项目的代码bug,肯定要能够精确定位,要对代码细节,调用过程了解,需要熟悉项目代码。
知道了对于不同场景下,项目的学习程度。那么再聊聊项目应该怎么学习。
相信很多同学,都再网上听过很多前辈分享的各种源码阅读方法。比如main函数开始追、分功能模块看、按住一个功能调用过程追等等。
在这里,主要想给大家强调的方法是什么呢?
借助AI,优先借助AI。
现在AI能力,确实足够强大了,比如gpt5、claude 4.5等等。并且像个人项目一般最多也就几万行,或者就算公司项目上亿行代码,但是到你部门负责的可能也就几万行,数十万行,代码量都不大。可以先让AI对你的项目代码分析分析,架构、功能,实现逻辑等等。先通过它帮助你了解百分之七八十,再自己慢慢解决剩下的百分之二十,效率会高很多,很给力。
可能有的同学,在知名公司工作,说公司内部模型,没有这最先进的,其实用你们公司目前内供的,我认为目前也是可以帮助你进行分析的。
(为什么会给大家强调这个呢,主要还是通过大家问我的一些技术问题项目问题发现,这些问题直接喂给AI基本就可以快速出方案进行解决,远远没必要在那里抓脑瞎。给大家写这个,就是让大家有用AI的意识,优先考虑,现在模型能力是够的了)
知识星球介绍(公认的cpp c++学习地)
星球名字:奔跑中的cpp / c++
专注cpp/c++相关求职领域的辅导
加入星球福利,后续如果有其他活动、服务,不收费,不收费,可以合理赚钱就收取下星球费用,但是不割韭菜,保持初心
感兴趣的微信扫下面的码,然后下载知识星球app登录即可
(1)高质量的项目合集






同时如果项目,遇到任何困惑也会第一时间进行解答的
(2)高质量精确性八股资料


(3)详细的学习路线
(4)活跃的学习氛围,星球打卡不只是一个形式,而是每天观看,针对同学们的学习情况提出合理化的建议,同时也有高质量的星球微信内部群


(5)星球提问简历修改,提供意见的同时,还会给安排一对一腾讯会议辅导

(6)星球同学offer情况,以及对应学习情况,给大家提供参考
(7)全网最全cpp相关面经整理

(8)编程实战能力提升平台(大家都可以使用的,免费的)
访问网址 cppagancoding.top
星球同学的评价
(9)每周也会进行直播答疑,同时有时也会给星球内部同学开一些知识、路线分享会。
具体可以看B站放的视频,up名字:cpp辅导的阿甘
(10)奖励金激励,会根据大家打卡学习/ 面经打卡整理情况,每个月每个季度发放奖励金。有的人陆陆续续已经获得了数千月的奖励金,是加入星球费用的数十倍了

等等,可能还有一些其他服务,目前没想起来的,以及后续也会增加的服务