从宏观方面来看,参加中级软件设计师的考试是一次非常重要的经历。在这个过程中,我学习了很多新的技能和知识,同时也与其他同事进行交流讨论和学习。
首先,我学习了很多软件设计的基础知识,包括设计模式、架构设计、系统设计等。这些知识帮助我更好地理解了软件设计的本质和内涵,也让我更加熟悉软件开发的整个流程。
其次,我还学习或复习了很多技能,包括UML建模、数据库设计、代码重构、性能优化等。这些技能让我能够更加高效地完成工作,也让我更加熟练地使用各种软件开发工具。
此外,在这个过程中,我还在备考过程中对如何合理地分配时间和资源,如何有效地组织和管理团队,如何与学习小组成员进行有效的沟通和协作等使用到了一些高效的方法。
最后,备考时的每天都是珍贵且富有激情的,渐渐体会到学习的乐趣,考试还是比较顺利的,期待一个好的结果。
我在学习软考前,首先制定了一个完整的学习计划,含括了J2SE视频、软考视频、32小时通关、课本专项学习、设计模式、排序和算法的学习以及做历年真题,在时间上进行了宏观和微观的计划:从月到周到天,对完成整体目标进行了划分,逐一进行击破,这是很有必要的!
从微观方面来看,我遇到了很多困难和挑战,但也收获了很多成长和进步。
回顾基础概念,查漏补缺
软考中的知识整体看来是计算机专业自学考试的一个集合,大部分知识内容我们都接触过,所以侧重点因人而定,知之为知之,不知为不知,是知也!
三遍读书法、思维导图、小组讨论、问题先行
1、针对涉及到的书籍(计算机组成原理、操作系统原理、编译原理、计算机网络原理、数据库系统原理)进行了整体及每章思维导图的迭代输出
2、对五本书做出了结构化
3、视频(J2SE+软考)
资源如下:
J2SE视频:J2SE视频
软考视频:软考视频
首先对视频有一个大致的了解,之后进行计划排期,最后稳步执行,针对不熟悉的知识反复刻意的练习。
熟悉题型,宏观把控知识结构
32小时通关的课后题,课后题将每章的重点及难点题型进行了总结,熟悉题型顺便查漏补缺,这个阶段一定要不懂就问,不放过任何一个不会的点!
小组讨论、分享(教是最好的学!)、问题先行、二维表总结(结构化)
我发现在学习过程中,很多时候我并不是真正地理解了知识点,而是模糊地记住了一些概念和定义。这时候,我就需要通过实践和思考来加深对知识点的理解和掌握。通过这个过程,我也更加深刻地意识到了“理论联系实际”的重要性。
理解软件设计的本质和内涵,学习前人总结出的精华,
对排序以及算法进行学习,给其他人输出,对于23种设计模式进行分类学习并理解各自的特点,都要落实到图(UML图)和代码上
二维表结构化、分享给他人(学习金字塔)、小组讨论、问题是最好的老师
求最大子数组的和
给你一个整数数组 ,请你找出一个具有的连续子数组最大和(子数组最少包含一个元素),返回其最大和。
注意:子数组是数组中的一个连续部分。
nums = [-2,1,-3,4,-1,2,1,-5,4]
public class Greedy_tanxin {
public static int maxSubArray(int[] nums) {
int sum = 0; // 记录当前连续子数组的和
int maxSum = nums[0]; // 记录最大子数组和,初始化为第一个元素
for (int i = 0; i < nums.length; i++) {
sum =sum+ nums[i]; // 将当前元素加入连续子数组
if (sum > maxSum) { // 如果当前连续子数组和大于最大子数组和,则更新最大子数组和
maxSum = sum;
System.out.println("maxSum: " + maxSum);
}
if (sum < 0) { // 如果当前连续子数组和小于0,则将当前连续子数组清空,从下一个元素开始重新构建连续子数组
sum = 0;
}
}
return maxSum;
}
public static void main(String[] args) {
int[] arr = {-2,1,-3,4,-1,2,1,-7,4};
int max_sum=maxSubArray(arr);
System.out.println("最后结果为: "+max_sum);
}
}
其中部分排序和算法的代码已上传CSDN资源供大家学习,有需要的同学可以自取,链接如下:
部分排序和算法代码资源
我也总结了相应的博客,欢迎大家前来访问哦
八大排序算法-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序、基数排序(上)
八大排序算法-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序、基数排序(下)
其中对于各个设计模式之间的区别和联系不是很明确,并且设计模式的使用场景会混淆。
这一点,大家可以根据不同的设计模式自己想一个符合的小故事进行结构化
找到考试的感觉,通过昨天补充漏掉的知识点,熟悉各种题型
认真对待每一套真题,把每次做真题都要当作一次考试。
每做完一套题,必须认真分析题,记录自己错过的题(尤其是哪些反复错过的题)以及它所涉及的知识点,还有难点和易错点,结合书本查漏补缺,针对错题,易错点,难点强化练习,突破难点,找回自信,逐步突破每个难点,让软考变得容易。其实分析题比做题更重要。并且把每次做的答案保留下来,通过数据来分析自己经常出错的地方。分析最近几年的考试的类型,尤其是下午题的设计模式、算法。
建议大家做真题的顺序都是从旧到新,挨着来,一直做到最新的,目的在于体会题型的变化。这样能体会到题型的变化,不用怕专项复习的时候做过了,重新再做一遍一样会有新的收获。
二维表结构化、给他人讲题(学习金字塔)、小组讨论、问题是最好的老师、总结并分享解题技巧
小组主要讨论一些非理论的,共性大的错误,分享解题技巧。
用到的软件有APP:希赛软考助手、软考真题;小程序:51cto题库、软考刷题王。
每个程序都有自己的特点,我用的最多的还是希赛软考助手,每道题下面有老师回复同学的解题思路或问题,站在巨人肩膀上!
这一阶段必须要将答案写下来,准备一个笔记本进行总结,或记录到文档里。
之前考过了数据结构导论,对于图、表这块学的还可以,在学软考的时候没有全面的复习,漏掉了一些知识点,做真题时也有没有遇到的题型,导致在考下午题的时候,第四题算法题考到了一个邻接表的问题,不出意外的话,一定会出意外!所以复习要全面一些。
我们需要超越自己的舒适区,去尝试新的事物和挑战自己的能力。这样才能不断地提升自己的能力和水平,也才能更好地适应未来的变化和挑战。
1、计划一定要提前做,可以使用表格或甘特图的形式,以每月每周为大目标,每周细致到每天和每小时
2、使用PDCA的方法,根据上一周期检查出的问题针对性改进完善下周期的计划,良性的循环
3、使用番茄时间工作法,每25分钟一番茄,休息5分钟,科学有效!
1、三遍读书法
2、番茄时间工作法
3、PDCA循环
4、小组学习 + 问题是最好的老师!+ 教是最好的学!(学习金字塔)
5、多维度结构化:形式为二维表或思维导图,从不同里找相同点,从相同点里找不同点,结合上之前学过的知识
6、思想上移,行动下移:行动下移体现在如学习设计模式和算法时,落实到代码和UML图上
科学的学习方法+自信+脚踏实地=成功!