昨天结束了软考,为时两个月的软考学习也告以段落。回顾这两个月的学习旅程,把所有的编程基础系统学习了两三遍,收获很大。学习不就是这样一个反反复复的过程么?下面分享我对软考知识的个人见解:
【总览知识点】
学习之前有一个宏观把控很重要,它保证了我们在学习过程中不至于迷失方向,同时也让我们对知识点的掌握情况作出客观评价,在复习的过程中能够很快抓到自己薄弱环节,做到有针对性的复习:
总览知识点内容,从硬件出发,让我们了解硬件工作基础;然后是编译原理,我们懂得了从我们编写的高级语言代码如何才能转化为计算机所能识别的语言;操作系统更多关注的是如何提高计算机处理速度,让有限的空间做功更加高效;软件工程则带我们领略了软件开发过程与规范;最后是安全,增强我们软件的安全程度势不可挡。
【开发环境】
我们以静态的角度,从硬件基础出发,明白了陪伴我们左右的电脑是基本工作原理。
这块知识重点是CPU的组成与工作原理,存储结构(尤其是对cache的掌握),流水结构和对二进制的计算。
操作系统结合硬件让我们从动态的角度理解了程序是如何在内存,辅存之间得到更好的调度、进程调度、文件管理;同时也要明白死锁的产生与防护,pv操作的基本工作原理。
【程序基础】
编译原理无疑是这里面最让我们陌生的一部分,但我们只要以编译过程为主线进行分析,这些都将不是问题:
词法分析:将源程序识别出一个个单词符号,根据语言的词法规则进行分析。
语法分析:词法分析基础上将单词分成程序,语句,表达式各类进行分析。
语义分析:对结构上正确的源程序进行上下文审查,为代码生成阶段收集类型信息。
中间代码:使程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现中间代码。
代码优化:在不改变程序运行效果的前提下,对被编译的程序进行等价变换,使之能生成更加高效的目标代码。
目标代码:最终机器可以识别的机器代码
其他知识诸如文法,有限自动机等知识是为实现上面步骤而存在的。
算法是重中之重,我们要清晰的理解分治、动态规划与贪心的含义,搞清楚核心思想的前提下了解代码流程,对主要代码与算法流程对应起来,这样学习起来就不是很困难了。对这部分的感触是,第一遍我们一定要自己去理解算法的思想与精髓,这样给自己的印象是比较深刻的。不明白可以自己举例子去实现,往往让数据跟着代码走我们就不会惧怕了,尤其是在循环比较多的情况下,这个方法还是很有效的。
面向对象着重理解封装,继承,多态的概念,对比面向对象的开发方法与其他开发方法的区别,就能对面向对象有一个自己的理解了。
【软件工程】
软件工程设计软件开发的整个生命周期,每一步都至关重要。熟练掌握软件开发的生命周期,了解每一阶段所要完成的任务,由哪些人完成,需要哪些完成开发文档。
在大题部分为数据流图和E-R图,这部分根据说明中文字来作答。首先我们要学会抽象出实体,一般为名词。然后根据说明查找实体之间联系。特别注意的是主键和外键的锁定,能唯一确定该实体的属性是主属性,外键是外部实体的主键。
设计模式是我们以后经常用到的,但考试内容并不会考察太深,只要我们知道什么时候定义对象,接口的使用,传参如何进行就可以了。
【总结】
软考学习结束了,但我们的编程学习又该踏上新的征程,总结经验,不断前行,加油。