无论做什么项目,在写简历时,最好要整理出项目中的技术点,思考如何跟面试官介绍你的项目,要经得起面试官的提问。项目的话,可以考虑做下面的这几个:
如果你想给自己的简历增加C+ +项目经验,以下提供一些方向指南:
1.开源项目贡献:参与C+ +开源项目是一个很好的方式,可以展示你的技术能力和合作能力。你可以选择一知名的C+ +开源项目,阅读源代码,修复bug ,实现新功能或者改进性能,然后向项目贡献你的代码。这样不仅能够积累项目经验,还能与其他开发者进行交流和学习。
2.个人项目:你可以考虑开发-些个人项目来展示你的C+ +能力。这些项目可以是小型的工具库或者应用程序,解决实际问题或者展示某个领域的技术。确保你的项目具有-定的可扩展性和复杂性,以展示你的技术深度和项目管理能力9。
3.实习和兼职:找与C+ +相关的实习和兼职机会可以为你提供实际项目经验。即使是小规模的项目,也能让你接触到实际开发环境和团队合作,积累相关经验。
4.参加编程比赛:参加一些C+ +编程比赛可以锻炼和展示你的技术能力。你可以选择一些与C+ +相关的比赛,通过解决竞赛问题来展示你的算法和编码能力。参与比赛不仅可以提升你的技术水平,还可以在简历上增加有竞争力的项目经验。
5.学术研究项目:如果你之前一直从事理论研究,你可以考虑将你的C+ +知识应用到相关的学术研究项目中。例如,实现某种算法或者模型的C+ +版本,进行性能优化或者扩展功能等。这样可以展示你在C+ +领域的研究能力和实际应用能力。
我自己学C++,填了一个坑又一个坑,深知新手学习C/C++的重要性和疑难问题,因此特地给C/C++开发的同学精心准备了一份优惠优质学习卡——零声白金卡(https://xxetb.xet.tech/s/3wrN44购买地址),6个项目分别是:基础架构-KV存储项目、spdk文件系统实现项目、Linux内核内存管理实战案例分析、golang云原生、FFmpeg+SDL播放器开发实站QtMP3音乐播放器搜索引擎实战,提供项目源码下载,同时这份资料也包括 C/C++学习路线、简历指导和求职技巧等。
一、KV存储项目
1、kv存储的架构设计
2、网络同步与事务序列化
3、KV存储的性能测试
PS:项目提供源码下载
二、spdk文件系统实现项目
1、spdk blob文件系统设计分析
2、文件系统引入线程与json配置解析
3、文件系统四层架构设计与构建git版本管理
4、从blob读写到文件系统的原语操作实现
5、syscall的hook实现
6、基数树对文件系统内存管理
7、文件系统hook api的设计与实现
8、文件系统posix api的兼容问题与文件夹设计
PS:项目提供源码下载
三、Linux内核内存管理实战案例分析
1、自旋锁项目实战分析
2、RCU项目实战分析
3、分配物理页实战分析
4、vmalloc案例实战分析
5、kmalloc案例实战分析
6、kzalloc&kcallolc案例实战分析
7、创建slab缓存案例实战分析
PS:项目提供源码下载
四、FFmpeg+SDL播放器开发实战
1、FFMpeg+SDL开发环境搭建
2、播放器框架和解复用模块开发
3、包队列帧队列模块设计
4、解码线程模块实现
5、声音输出模块实现
6、视频画面渲染
7、音视频同步和作业讲解
PS:项目提供源码下载
五、Qt项目实战专栏
- 1、MP3音乐播放器搜索引擎设计与实现
- 2、数据库数据表设计与实现_歌曲搜索
- 3、HTTP下载音乐_数据解析Json_显示歌词
- 4、上一曲_播放暂停_下一曲_循环播放实现
- 5、音乐搜索引擎关于_皮肤更换_系统托盘
PS:项目提供源码下载
六、附录(C/C++学习路线)
腾讯官方认证,按照大厂标准授课 ,整个提升方向分为以下7大块:
基础精讲:数据结构、c++新特性、设计模式、Linux工程管理。
- 1:网络必须技术点:TCP/IP, select, poll, epoll, Reactor, libevent, 百万并发, websocket, HTTPS。
- 2:基础组件开发:线程池, 内存池, 连接池, 分布式锁, 无锁队列.
- 3:第三方组件:redis, mysql, nginx, mangodb, rocksDB, TiDB, etcd, grpc, kafka, Kong网关。
- 4:项目:图床项目(图片分享), IM即时通讯, 协程。
- 5:源码分析:redis , nginx skynet等
- 6:面试加分项:Rust, DPDK, 内核, docker, kubernetes, gpu高性能计算
具体技术点:这里详细谈下C++ 的学习路线,按照这个路线去学习C++,每个阶段都帮你规划好了学习时间,只要你努力且认真的去学了, 保证帮你既高效又扎实的学好C++:
1.精进基石
①数据结构与算法
- 红黑树(应用场景、进程调度cfs、内存管理、左旋与右旋等)
- B树和B+树(定义证明、插入、删除、遍历、查找、指针等)
- Hash与BloomFilter,bitmap(函数实现、应用场景、布隆过滤器等)
②设计模式
- 创建型设计模式(单例、策略、观察者、原型等设计模式)
- 结构型设计模式(适配器、代理、责任链、状态桥接、组合模式)
③c++新特性
④Linux工程管理
- Makefile/cmake/configure(工作ipcs原理、文件编译、cmake的写法等)
- 分布式版本控制git(工作流程、分支管理、服务器搭建等)
- Linux系统运行时参数命令(ipcs、uptime、iostat、sar、mpstat等)
2.高性能网络设计
①异步网络库zvnet
- 网络io与io多路复用epoll,kqueue(项目)
- 事件驱动reactor的原理与实现(项目)
- http服务器的实现(项目)
②网络原理
- 服务器百万并发实现(实操)
- redis,memcached,nginx网络组件(理论)
- posix API与网络协议栈(理论)
- UDP的可靠传输协议QUIC(项目)
③协程框架NtyCo的实现
- 协程设计原理与汇编实现(项目)
- 协程调度器实现与性能测试(项目)
④基于dpdk的用户态协议栈的实现
- 用户态协议栈设计实现(项目)
- 应用层posix api的具体实现(项目)
- 手把手设计实现epoll(项目)
⑤高性能异步io机制 io_uring
- 与epoll媲美的io_uring(项目)
- io_uring的使用场景(理论)
3.基础组件设计
①池式组件
- 手写线程池与性能分析(项目)
- 内存池的实现与场景分析(项目)
- MySQL连接池的实现(项目)
②高性能组件
- 原子操作CAS与锁实现(项目)
- 无锁消息队列实现RingBuffer(项目)
- 定时器方案红黑树,时间轮,最小堆(项目)
- 手写死锁检测组件(项目)
- 手写内存泄漏检测组件(项目)
- 手把手实现分布式锁(项目)
③开源组件
- 异步日志方案log4cpp(项目)
- 应用层协议设计ProtoBuf/Thrift(项目)
4.中间件开发
①redis
- redis相关命令详解及其原理
- redis协议与异步方式
- 存储原理与数据模型
- 主从同步与对象模型
②MySQL
- SQL语句,索引,视图,存储过程,触发器
- MySQL索引原理以及SQL优化
- MySQL事务原理分析
- MySQL缓存策略
③Kafka
- Kafka使用场景与设计原理
- Kafka存储机制
④微服务之间通信基石gRPC
- gRPC的内部组件关联
- 基础http2的gRPC通信协议
⑤nginx
- nginx反向代理与系统参数配置conf原理(实操)
- nginx过滤器模块实现(项目)
- nginx handler模块实现(项目)
5.开源框架
①游戏服务器开发skynet
- sky net设计原理
- sky net网络层封装以及lua/c接口编程
- sky net重要组件以及手撕游戏项目
②分布式API网关
- 高性能web网关 Openresty
- Kong动态负载均衡与服务发现
③高性能存储spdk的文件系统实现(项目)
- spdk的工作原理与文件系统架构分析
- 文件系统的posix api实现
- 文件系统的性能测试
④高性能计算CUDA
- gpu并行计算cuda的开发流程
- 音视频编解码中的并行计算
⑤并行计算与异步网络引擎workflow
- workflow的应用场景
- workflow的组件实现
⑥物联网通信协议mqtt的实现框架mosquitto
- mqtt的高效使用场景
- mqtt的broker
6.云原生
①docker
- docker风光下的内核功能
- docker容器管理与镜像操作
- docker网络管理(项目)
- docker云与容器编排(项目)
②kubernetes
- k8s环境搭建
- pod与service的用法
- k8s集群管理(项目)
- k8s二次开发与k8s API(项目)
7.性能分析
①性能与测试工具
- 测试框架gtest以及内存泄漏检测
- 性能工具与性能分析
- 火焰图的生成原理与构建方式
②观测技术bpf与ebpf
- 内核bpf的实现原理
- bpf对内核功能的观测
③内核源码机制
- 进程调度机制
- 内核内存管理运行机制
- 文件系统组件
8.分布式架构
①分布式数据库
- kv存储rocksDB的使用场景
- TIDB存储引擎的原理
- TIDB集群方案与replication原理
②分布式文件系统
- 内核级支持的分布式存储Ceph
- 分布式ceph存储集群部署
③分布式协同
- 注册服务中心Etcd
- 协同时间 用户态文件系统 fuse(项目)
- 快播核心技术揭秘 P2P框架的实现
9、项目实操
1.dkvstore实现
- KV存储的架构设计
- 网络同步与事务序列化
- KV存储的性能测试
2.图床共享云存储
- fastdfs架构分析和配置
- 文件传输和接口设计
- 产品上云公网发布/测试用例
3.微服务即时通讯
- IM即时通讯项目框架分析和部署
- IM消息服务器/文件传输服务器
- 消息服务器/路由服务器
- 数据库代理服务器设计
- 文件服务器和docker部署
- 产品上云公网发布/公网测试上线
项目这一个板块是由零声的讲师所总结的,自己在学习的课程中可以结合上述的详细技术细节点与自己过往工作的项目经验相结合学习提升。
适宜的工程师人群(共分为8大群体)
- 1.从事业务开发多年,对底层原理理解不够深入的在职工程师
- 2.从事嵌入式方向开发,想转入互联网开发的在职工程师
- 3. 从事Qt/MFC等桌面开发的,薪资多年涨幅不大的在职工程师
- 4.从事非开发岗位(算法岗,运维岗,测试岗),想转后台开发岗位的在职工程师
- 5.工作中技术没有挑战,工作中接触不到新技术的在职工程师
- 6.自己研究学习速度较慢,不能系统构建知识体系的开发人员
- 7.了解很多技术名词,但是深入细问又不理解的工程师
- 8.计算机相关专业想进入大厂的在校生(本科及以上学历,有c/c++基础)
课程优势:
- 1.简历梳理技术点凸显项目技术梳理
- 2.模拟面试技术表述
- 3.薪资谈判福利争取
- 4.offer 选择职业规划技术前景
往期学员学习过程的心得总结:
- 1.学习要有主动性。无论是开始的自学,还是后面的培训学习,学习的主观能动性一定要有,特别是报班学习之后,不要觉得万事有老师,外部的辅导条件能够让你有更好的学习效率和氛围,但是最终需要掌握技能的还是你自己的,所以学习的过程不要懈怠。
- 2.学完技术内容之后,要形成自己的技术栈体系。我在学完之后,就根据我自己的技术内容花了三天时间整理一份 c/c++后端开发需要掌握的技术体系路线图,来帮助自己梳理自己所学的技术点。
- 3.善于总结自己的学习过程。每当自己学完一个小块的知识点之后,最好是将自己对它的理解整理成博客文章,这样既能自我梳理自己的学习成果,又能作为自己在面试工作时向面试官展现的一个亮点。
- 4.一定要复盘自己的面试过程。在我学习之后的面试过程,并不是一帆风顺。但是我在老师的建议下,不管成功的还是失败的面试过程,场场复盘!找出自己回答的不好的地方做备注修改,这样一次次下来,对于面试,我也是越来越胸有成竹。
- 5.学习方式,不管黑猫白猫,抓住老鼠的就是好猫。对于也想从事或是转行到 c/c++后端开发岗的兄弟,如果考虑报班培训的话,可以推荐大家了解一下我之前学习过的课程,整个课程体系对标的是腾讯的 T9 级别。
学习成果检验
最后:
给校招的小伙伴一句话:第一份工作不亚于一次高考,珍惜校招,社招的竞争是你目前想象不到的。能去大厂觉不妥协,IT行业第一份工作背景越好,起点越高,后续发展空间越好!
给那些1-3年的安于现状的伙伴一句话:
不要抱怨市场,不要安于现状,在低端,往中端领域看,在中端往高端领域看。认知以及对自身的要求,都会有所改变。
给那些担心35岁的伙伴一句话:
决定上限的不是年纪,而是技术。 最后:希望学习路线对你有所帮助,希望码农的我们越来越好!