第7篇:注重基础知识的原理原则

教学几年以来,接触过很多同学,一些同学经常这样问我:

"有没有实战案例,我想从实战开始, 这样我能学的快些"

"基础知识太无聊了,有没有实战,一边做一遍练习。"

"我想做一款游戏出来赚钱,没有那么多时间耗。"

我的回答往往是:高楼万丈平地起。

要想写出好的程序一定要注重基础的原理原则,因为任何复杂的逻辑和游戏都是由一个一个基础知识组成的。

这也就能解释为什么腾讯、网易面试的时候经常问基础问题。 

  1. 哪些知识是程序员必备的基础
    编程语言的基础机制很重要,每个编程语言都有自己的核心机制,例如 C# 类,对象,实例,this, 委托,事件,重写,虚函数,装饰注解等。
    这些东西的原理原则要很清楚,写代码时才能用正确的代码写出来。
    又如JS没有类,如何实现面向对象,new 做了那些事情,this如何传递, prototype机制,__proto__机制。

  2. 程序运行时的基本原理原则
    程序运行的时候,会有一些基本的原理原则,这些必须要清楚。
    比如函数代码存放在代码段,全局变量存放在数据段,new 的对象存放在堆,函数参数,局部变量存放在栈。
    函数调用如何跳转,跳转过去后return语句如何知道返回到程序执行的下一行代码。
    什么是内存碎片,是怎么造成的,如何解决,什么是内存泄露等,如果是垃圾回收的编程语言,垃圾回收器如何工作等。

  3. 常用的经典数据存储结构
    数据结构是用来存放与管理数据用的,管理存储数据对于程序来说很重要,如何存储管理数据就需要有数据结构, 动态数组,链表, 树, 图,Hash表, 字典等。
    他们的原理是什么,内部是怎么实现的, 如何很好的使用他们,增删改查的性能如何,分别有什么优缺点,用在什么地方。
    OS基础的原理原则
    进程是什么,OS 是如何分配CPU来调度线程,线程调度有哪些开销。同步IO是如何实现的,异步IO是如何实现的。Sleep函数是如何实现的,CPU占用率是什么意思。TCP,UDP, IOCP, epoll等。
    行业相关的常用算法和库
    http协议, websocket协议,JSON,XML协议, protobuf以及实现他们的一些库。
    比如我们做游戏也有很多库,比如 AStar寻路等。基本上现在你要的一些功能和需求,都能找到对应开源的实现。github, sourcesforge, 都可以在上面搜索到主要的开源的库和代码。
    作为系统分析师用什么技术,这个技术实现的库都需要对这些比较熟悉,你才能完整的做出系统设计的方案。
    良好的代码编写规范与常用设计模式
    编写代码一开始要有良好的编码规范,命名规范,表达式格式规范,项目组织文件目录规范。
    能实现主流的设计模式,比如单例,我们要全局唯一实例的时候,很快就能写出来。基类管理子类实例, 观察者模式等。
    项目设计如MVC, ECS等。 

  4. 所在行业经典的解决方案都要实现一遍
    我们做游戏的要把游戏行业经典的方案都自己实现一次,或了解实现它的库。
    比如地图编辑器如何制作,热更新的基本的原理原则与实现;资源管理如何设计与更新;游戏项目的框架设计。
    实现的时候要注意总结里面的逻辑,前因后果,为什么要这么做。
    在分析的过程中总结别人的实现思路, 总结处理问题的方式方法。
    学会分析问题与解决问题,等你解决了这一系列的问题的时候要学会提炼,提炼出问题的一般方法。
    很多同学问我,背包系统如何实现?这个太难了! 我问他难在哪里?!不就是一些UI界面么? 他说没有这么简单吧,数据如何存放? 我说你根据展示的业务逻辑选取特定的数据结构管理就可以了。
    他说如果内容很多怎么办? 我说你先设计,看是否全部可以加载完成,系统资源允许,如果不允许太多,可以分批显示与加载。
    他又问drawcall 过高怎么办? 我说背包drawcall主要是UI,把背包的图片放图集,drawcall高可能是文字打乱了UI的drawcall等。分析出来原因,打图集,调整绘制顺序减低drawcall。
    这个里面所有的东西,单独拎出来都是一个一个的基础知识点,和分析问题的一般方法,找出问题,分析问题,解决手段。 真正搞懂了这些,任何复杂问题都可以迎刃而解。

  5. 注重解决方法与思路的提炼
    我们每实现一个经典问题,学习一个库,框架,做一个项目,要学会总结里面用的思想方法和思维方式。
    这个问题别人的实现是如何分析的,如何化繁为简的,巧妙的地方在哪里?他是如何想到的? 要把这些分析问题,解决问题的一般思维和方法提炼出来,放入自己的脑袋里面。
    其实我们面临的都是未知的问题,虽然不完全一样,但是解决方案和思维都相通的。
    平常注重思维提炼,久而久之才能形成解决问题的思维方式条件反射。
    再结合你的扎实的基础,任何问题在你这里都能得到很好的分析和解决。
    如果自己解决不了的也可以知道如何找人和用商业的方式解决,甚至创业管理公司也都是类似的。

    人生道路千万条,最后都终归一处。地球河流无数条,最终都汇入大海。
    最后说一个笑话。 别人问我“老师,我找到了工作,但是别人只给5000,我要不要去呢?”我说去啊,他问为什么?我说因为你的程序啊。
    想要拿高薪,做成一些事情,需要脚踏实地的解决问题和不断学习。
    今天就分享到这里了。希望大家有收获。
评论

 

关注公众号

可用手机学习

获取最新课程