阿秀做过的几个项目,拿去跟面试官对线

简介: 笔记

大家好,我是阿秀。

据我粗略估计,问我“有没有什么好的C++项目推荐“这个问题出现的频率仅次于“问我帅不帅“。

「C++」是一门贴近底层的语言,不像「Java」那样能够快速搭建一个业务系统,比如「XX」秒杀系统、「XX」电商系统这种看着“高大上“的项目,「C++」一般只能用来做一些“轮子”。

:一般指我们封装好的组件、库等底层组件。

我这两天花时间整理了一下,推荐几个个人觉得还不错的C++项目,难度由易到难、逐渐增大。


1、手把手教你从零开始实现一个JSON


『Json』是一种用于数据交换的文本格式,可用于任何编程语言。一般来说一个动态网页想从服务器获得数据时,服务器首先从数据库查找数据,然后将数据转换成JSON文本格式再进行网络传输的。

Json格式如下:

{
"title": "Design Patterns",
"subtitle": "Elements of Reusable Object-Oriented Software",
"author": [
  "Erich Gamma",
  "Richard Helm",
  "Ralph Johnson",
  "John Vlissides"
],
"year": 2009,
"weight": 1.8,
"hardcover": true,
"publisher": {
  "Company": "Pearson Education",
  "Country": "India"
},
"website": null
}

这个项目还可以,是从 0 开始一步一步教你做的。项目作者是腾讯『T4』大佬, 曾参与《天涯明月刀》、《斗战神》、《爱丽丝:疯狂回归》等游戏项目的制作,而且也是《C++ Primer 中文版(第五版)》的审校人之一…反正是一个大佬就是了

链接:https://github.com/miloyip/json-tutorial


2、实现属于你自己的 STL


一个合格的C++程序员是必须要会STL的,其中的容器、算法在刷各种OJ平台上的题的时候简直是无往而不利,堪称一大利器。我知道有很多同学都有想过写一个属于自己的STL,你猜对了,我也想过,但没行动过

『MyTinySTL』这个项目把你我想的做了,它是基于C++11tinySTL,其中实现了大部分STL中的容器与函数 ,所以你也是完全可以照着它来实现自己的STL的,做完就变成你的项目了。

链接:https://github.com/Alinshans/MyTinySTL


3、烂大街的HTTP服务器


这个似乎成了『Linux C/C++』技术栈人手一个的项目了?

虽然这个项目烂大街了,看着也挺简单的,不过能玩的花样还是不少的,比如加入代理功能、添加支持CGI功能或者加入日志记录等。

它越简单,你可以做的改进就越多。相应的,在面试的时候,你就可以跟面试官聊你的改进和你添加的功能也就越多,面试官是很愿意看到你的自己在做一个项目时的思考和改进的。偷偷跟你说,这种在前人项目基础上的改进是很加面试分的。

这里我推荐牛客大佬健康成长天线宝宝啊的『HTTP』的服务器,这位大佬在阿里云做平台开发。他在牛客上写的C++求职/基础架构路线的文章非常不错,真心推荐那些想要走C++路线的同学去牛客网看看他的帖子。

健康成长天线宝宝啊个人主页:https://www.nowcoder.com/profile/2765647?noredirect=true

健康成长天线宝宝啊项目链接:https://github.com/linyacool/WebServer

不瞒大家说,我在秋招的时候也做了一个『HTTP』服务器,是在看完游双老师的《Linux高性能服务端编程》,在『TinyHttpd』的基础上加以改良的。这里也推荐下自己的破产版HTTP服务器项目,主要加入了CGI功能,也支持get/post两种请求方式,采用双管道方式进行通信。

阿秀个人项目链接:https://github.com/forthespada/MyPoorWebServer


4、实现一个多线程网络服务器


这个是我在github上发现的,这里直接搬运一下该项目的说明吧。

本项目为C++11编写的基于『epoll』的多线程网络服务器框架,应用层实现了简单的HTTP服务器HttpServer和一个回显服务器EchoServer,其中『HTTP』服务器实现了HTTP的解析和get方法请求,目前支持静态资源访问,支持HTTP长连接;该框架不限于这两类服务器,用户可根据需要编写应用层服务。

通过该项目你可以了解到部分C++11的语法和编码规范、学习巩固网络编程、网络IO模型、多线程、git使用、Linux命令、性能分析、TCP/IP、HTTP协议等知识。

链接:https://github.com/chenshuaihao/NetServer


5、从0开始手把手教你做的服务器框架


说实话,这个算是比较难的C++项目了,是我在B站发现的一个可以跟着学的项目,我看了底下的评论,相当不错。

这是一个『C++』高性能分布式服务器框架 的项目,我已经确认过了,是新手不要尝试的那种难度。

该项目主要有 13 大模块组成,分别是日志模块、配置模块、线程模块、协程模块、协程调度模块、IO协程调度模块、Hook模块、Socket模块、ByteArray序列化模块、TcpServer模块、Stream模块、HTTP模块、Servlet模块。

B站视频教程:https://www.bilibili.com/video/av53602631?from=search&seid=9029288577396826503

服务器框架链接:https://github.com/sylar-yin/sylar


6、做个操作系统内核吧


《深入理解计算机系统》这本书大家应该都听说过吧,被誉为“跟金子一样珍贵的计算机基础书籍”,如果你还没看过,赶快去买一本补补功课。

这本书也是美国麻省理工学院推荐的计算机书籍之一,课后的一些lab也会布置给上课的学生。你完全可以实现其中一些不错的小lab来作为自己的『C++』项目,而且试想一下,面试官问你的项目背景是什么的时候,你直接告诉他“这是美国麻省理工学院的计算机专业学生的结课大作业”,难道没有分量吗?不能装逼吗?

建议先看一下B站『MIT 6.828』视频,再去动手亲自实践。

《CSAPP》课后lab链接:https://github.com/woai3c/MIT6.828


结语

完了,拜了个拜!


相关文章
|
7月前
|
算法 测试技术 数据处理
【C/C++ 面试技巧】如何在简单的项目里突出自己的价值?
【C/C++ 面试技巧】如何在简单的项目里突出自己的价值?
187 1
|
4月前
|
JavaScript 前端开发 应用服务中间件
【Vue面试题三十】、vue项目本地开发完成后部署到服务器后报404是什么原因呢?
这篇文章分析了Vue项目在服务器部署后出现404错误的原因,主要是由于history路由模式下服务器缺少对单页应用的支持,并提供了通过修改nginx配置使用`try_files`指令重定向所有请求到`index.html`的解决方案。
【Vue面试题三十】、vue项目本地开发完成后部署到服务器后报404是什么原因呢?
|
3月前
|
NoSQL Java Redis
面试官:项目中如何实现分布式锁?
面试官:项目中如何实现分布式锁?
102 6
面试官:项目中如何实现分布式锁?
|
7月前
|
数据采集 数据挖掘 关系型数据库
2024年5分钟就能完成的5个Python小项目,赶紧拿去玩玩吧(2),2024年最新腾讯面试题
2024年5分钟就能完成的5个Python小项目,赶紧拿去玩玩吧(2),2024年最新腾讯面试题
2024年5分钟就能完成的5个Python小项目,赶紧拿去玩玩吧(2),2024年最新腾讯面试题
|
2月前
|
JavaScript 前端开发
vue尚品汇商城项目-day01【8.路由跳转与传参相关面试题】
vue尚品汇商城项目-day01【8.路由跳转与传参相关面试题】
44 0
vue尚品汇商城项目-day01【8.路由跳转与传参相关面试题】
|
4月前
|
JavaScript 安全 前端开发
【Vue面试题二十九】、Vue项目中你是如何解决跨域的呢?
这篇文章介绍了Vue项目中解决跨域问题的方法,包括使用CORS设置HTTP头、通过Proxy代理服务器进行请求转发,以及在vue.config.js中配置代理对象的策略。
【Vue面试题二十九】、Vue项目中你是如何解决跨域的呢?
|
7月前
|
前端开发
Github项目分享——免费的画图工具drow,最新前端面试题整理
Github项目分享——免费的画图工具drow,最新前端面试题整理
|
4月前
|
JavaScript 前端开发 API
【Vue面试题三十一】、你是怎么处理vue项目中的错误的?
这篇文章讨论了Vue项目中错误的处理方式,包括后端接口错误和代码逻辑错误的处理策略。文章详细介绍了如何使用axios的拦截器处理后端接口错误,以及Vue提供的全局错误处理函数`errorHandler`和生命周期钩子`errorCaptured`来处理代码中的逻辑错误。此外,还分析了Vue错误处理的源码,解释了`handleError`、`globalHandleError`、`invokeWithErrorHandling`和`logError`函数的作用和处理流程。
【Vue面试题三十一】、你是怎么处理vue项目中的错误的?
|
4月前
|
JSON JavaScript 前端开发
【Vue面试题二十四】、Vue项目中有封装过axios吗?主要是封装哪方面的?
这篇文章讨论了在Vue项目中封装axios的最佳实践,包括设置接口请求前缀、请求头、状态码、请求方法的封装,以及如何使用请求和响应拦截器来处理token和响应状态,从而简化HTTP请求的配置和错误处理,提高代码的可维护性。
【Vue面试题二十四】、Vue项目中有封装过axios吗?主要是封装哪方面的?
|
4月前
|
缓存 NoSQL 物联网
这些年背过的面试题——个人项目篇
本文是技术人面试系列个人项目篇,作者总结了一些自己的实战项目经验,一文带你详细了解,欢迎收藏!

相关实验场景

更多