自学c++怎么积累项目经验,纠结死了

 我来答
百度网友e096309
2017-02-15 · TA获得超过1328个赞
知道小有建树答主
回答量:501
采纳率:96%
帮助的人:428万
展开全部
往广度来说,可以挑一些比较简单的小程序来做:
1. 网络通信(socket通信) - 控制台版的聊天工具,打开两个控制台,可以像QQ一样互相发文字。涉及简单的socket通信。
2. 网络通信(网站/CGI) - 写一个小网页(html),可以输入姓名,提交表单之后,后台(c++/CGI)根据姓名计算一个人品值显示出来(估计c++代码量应该在20行以内吧)。(需要了解如何写简单的html表单,安装apache或者nginx,并了解如何让它们调用你的CGI程序)
3. 小游戏(设计/opengl/MFC) - 学一下c++如何做图形界面(比如opengl,MFC神马的),写一下比较简单的小游戏比如贪吃蛇(我用c++11和opengl写过一个最基本的可以玩的,写完之后又精简了一通,最后只有150行),稍微难一点的游戏比如俄罗斯方块(二维数组跟界面方块坐标的对应挺纠结的,这个我写的很复杂而且忘了统计行数)。
4. 压缩工具(算法/文件操作) - 自己写一个压缩工具,把一篇红楼梦.txt压缩,需要看懂哈夫曼(霍夫曼)压缩算法。
5. 我自己想不粗来了。。。。

往深度说,上面每一个都可以深挖,你可以挑一个(或者多个)深挖一下:
1. 网络通信(socket通信) - 进阶版,开一个控制台当服务器,开很多个控制台当客户端,客户端可以发广播,也可以单独给其中一个客户端发消息。涉及CS(Client-Server)模式,线程的建立。当客户端比较多,可能需要改用socket的高级功能比如select模式等等。。。。
2. 网络通信(网站/CGI) - 做个留言板,把留言内容存到数据库。需要安装类似mysql等数据库,知道c++如何通过odbc接口和sql语句操作数据库。
3. 小游戏(设计/opengl/MFC) - 一方面,把游戏逻辑核心与界面分离。用printf实现控制台版的简单界面,并且切换界面时游戏逻辑核心代码完全不需要修改。考察你的设计。另一方面,如何更新opengl或MFC的界面,使得界面不闪烁?如何尽可能少地更新界面,从而不必每次都把所有的内容都画一遍?再一方面,保存和恢复游戏状态,记录每次游戏的得分等。
4. 压缩工具(算法/文件操作) - 如何压缩一个文件夹?了解还有没有其他更高效的压缩算法?

其实还有一种方式,去github上找一些开源项目并给它们做贡献,个人觉得这是比较长期的目标……一般在使用开源项目的时候发现bug或者不足,才会有这样的动机……吧。

往更深层次的扩展知识:
如果需要去面试,你需要把其中的每个都稍微的往深挖一下,其中要有一个挖的很深,想象一下如果别人告诉你别人做了其中的一个东西,你会对什么方面提出质疑?会觉得还有什么扩展性的东西可以做的?你自己不需要完全知道答案,但心中要有个数。
比如问你聊天工具如果用户数量真的太多了,一个服务器撑不住怎么办?(举例回答:做多台服务器,把客户端按哈希值映射到不同服务器上。)哈希表大小一般是固定的,如果要动态增加服务器数量怎么办(一致性哈希问题)。如果需要存储聊天记录,你会怎么存储?一样的如果聊天记录数量太多怎么处理?
再比如CGI调用方式是每刷新一次页面启动一次程序,启动一次程序的开销很大,有没有什么办法只启动一次程序处理多次次页面请求?(FastCGI。)c++访问数据库的方式除了odbc还有哪些?
再再比如做游戏的时候有没有什么比较纠结的设计问题?有没有用到什么设计模式?做界面还有哪些工具或者库?

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

纯属个人意见,仅供参考。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式