如何自学c++积累项目经验,好纠结。

在广度上,可以选择一些相对简单的小程序来做:

1.网络通讯(socket communication)——控制台版的聊天工具,打开两个控制台,可以像QQ一样互相发文字。它涉及简单的套接字通信。

2.网络通信(网站/CGI)-写一个小网页(html),在这里你可以输入一个名字。提交表单后,后台(c++/CGI)根据名字计算出一个个性值并显示出来(估计c++的代码量应该在20行以内)。你需要知道如何编写简单的html表单,安装apache或nginx,以及如何让它们调用你的CGI程序。

3.小游戏(Design/opengl/MFC)-学习c++如何制作图形界面(如OpenGL、MFC等。),并写一个相对简单的小游戏,比如Snake(我用c++11和opengl写了一个基本的游戏,然后进行了简化,最后只有150行。

4.压缩工具(算法/文件操作)——自己写个压缩工具压缩红楼梦。txt,而且你需要了解霍夫曼压缩算法。

5.我自己也想不通。。。。

深度方面,以上每个都可以深挖,可以选择一个(或多个)深挖:

1.网络通信(套接字通信)-高级版本,一个控制台作为服务器,多个控制台作为客户端。客户端可以分别向其中一个客户端广播或发送消息。涉及到CS(客户端-服务器)模式和线程的建立。当客户端较多时,可能需要使用socket的高级功能,比如选择模式等等。。。。

2.网络通讯(网站/CGI)-制作留言板,将留言内容保存在数据库中。你需要安装mysql这样的数据库,并且知道c++是如何通过odbc接口和sql语句操作数据库的。

3.小游戏(design/OpenGL/MFC)——一方面,游戏的逻辑核心与界面分离。使用printf实现主机版的简单界面,切换界面时游戏逻辑的核心代码根本不需要修改。检查您的设计。另一方面,如何更新opengl或者MFC的界面,使界面不闪烁?如何尽可能少的更新界面,让自己不用每次都画东西?另一方面,保存和恢复游戏状态,记录每场比赛的比分等。

4.压缩工具(算法/文件操作)-如何压缩一个文件夹?知道有没有其他更高效的压缩算法?

其实还有一种方法,就是在github上找一些开源项目,贡献出来。我个人认为这是一个长期目标...一般在使用开源项目的时候,会发现bug或者不足,所以会有这样的动力...

将知识扩展到更深的层次:

如果需要去面试的话,每一个都需要深挖一点,其中一个要深挖。想象一下,如果有人告诉你,别人做过其中的一件事,你会有什么疑问。你觉得有什么可以扩展的吗?你不需要完全知道答案,但是你心里要有个数。

比如你的聊天工具用户量真的太大,一个服务器撑不住了怎么办?(比如回答:制作多个服务器,根据哈希值将客户端映射到不同的服务器。)哈希表大小一般是固定的,想动态增加服务器数量怎么办(一致哈希问题)。如果需要存储聊天记录,你会怎么存储?同样,聊天记录太多怎么办?

比如CGI每次页面刷新调用一次start程序,开销很大。有什么方法可以只启动一次程序来处理多个页面请求?(FastCGI .)c++除了odbc还有哪些访问数据库的方式?

比如玩游戏的时候,有没有纠结的设计问题?你用了什么设计模式吗?接口还有哪些其他工具或库?

我自己也不完全知道以上问题的答案。

纯属个人观点,仅供参考。