- 作者:老汪软件技巧
- 发表时间:2024-12-30 04:03
- 浏览量:
本文献给已经下定决心参加软考的读者,提供一个轻松有序,且能更好地和工作结合的复习方法
杭州软考的考点在下沙大学城,距离主城区特别的远,甚至隔一条街就到嘉兴海宁了,高德导航动不动就提示 “您已到达嘉兴市”,稍微拐个弯,又提示 “进入杭州市”。
因此我直接在下沙订了酒店,周六就到了下沙,方便周日一大早去参加软考。
酒店就定在嘉兴海宁的新晋打卡地--澜公园,周六我还顺便带老婆一起逛逛了下沙奥特莱斯,收获颇丰。所以那个周末对我来说与其说是考试,倒更像是一次有趣的下沙旅行。
澜公园一景
分数是在 12 月 11 日公布的,没有意外地通过了。“没有意外” 是因为软考的考试时间比较充裕。除了主观的论文外,客观题我都可以在做完后利用剩余时间,统计下有把握的分数,发现都能有50分(软考每科45分及格),因此考完我就跟老婆和朋友说 “我通过了!”, 并且周日晚上吃了顿好的。
幸好最后结果没有打脸, 不然就变成 “半场开香槟” 的笑话了:
复习时间安排
整个软考分为三个部分:
下午考2个小时:论文写作
分享下我对每一部分的复习时间安排。
选择题--利用好碎片时间
互联网行业工作繁忙,不可能像学生时代一样全职备考了,因此利用好平时的碎片时间很重要。
特别是选择题,上下班路上, 吃饭排队时刷一刷,不会的看看答案其实是比较轻松的。
同事给我推荐了 “软考通” APP,通过 “刷题练习”,可以刷历年的全部选择题真题,总共 759 道题。
我给自己的规划是在国庆节结束前刷完历年全部选择题,看起来很多,其实分摊到每一周只需要刷 150 题就可以了:
时间刷题数
9.2~9.8
150
9.9~9.15
150
9.16~9.22
150
9.23~9.30
150
国庆节假期
剩下的所有题目(159题)
每周150题看起来很多,其实实践起来压力不大,因为记忆型的题目偏多,外加大家作为程序员也算有点基础,基本上每天上下班路上点点就刷完了。
除了刷题外,每天晚上我也会总结下当天刷到的关键知识点,对于一些不太看得懂的题目,我也会去网上找找别人的解析,或者问问 AI,最后汇总成如下的一篇刷题笔记:
本文大家多多点赞,反馈好的话我把这篇笔记也发出来
国庆节距离考试还有一个月呢,为什么这么早就把题目刷完?留下的一个月时间我们可以把错题再多刷几遍,加深印象。
在刷历年真题的时候,大家可能和我一样有个困惑:之前考过的题目还会考吗?如果不考的话是不是白刷了呢?
参加完了24年下半年的考试后,我再也不怀疑了,感觉软考的出题老师比较懒,确实会有一些新题,但也会有大量的老题反复考,我们只要能把握住这些能把握住的老题,就足够及格了。
最后我的选择题分数也非常高,53分。
案例分析--周末多看多练
案例分析相比选择题,更需要体系化的知识,所以我把它放到周末用整块时间来学习。
9月份可以先看一些真题讲解视频,熟悉以下题目的套路,我是蹭的同事的希赛网的案例分析专题,这个是需要花钱的。不过我后来找找,发现 B 站上也很多免费的案例分析讲解,比如 青石竹屋的案例分析讲解。如果只看案例分析的话,内容不是很多,每周末看两个小时,一个月就可以学习完毕。
国庆节假期可以自己再练一练最近三年的案例分析真题,自己写完后对照下答案,对比下有什么不足。案例分析真题也可以从软考通上找到,或者去网络上搜索,非常多。
时间安排如下:
时间安排
9月
学习案例分析讲解视频
国庆节
刷近三年真题
这几年案例分析的变化很大,越来越注重实践和积累,比如 20 年考了 Docker 命令,今年还考了 Elastic Search 的分词类型。所以后面我再推荐一本课外书,帮大家快速提升积累,提升胜率。
为什么我案例分析的安排也只到国庆节呢?因为后面的周末要安排给更重要的论文练习和模拟考试。
论文--一定自己写几篇
论文我一直放到最后一个月才开始复习,因为我觉得,只有先铺垫好基础知识,写起来才能更加得心应手。
可以十一假期中先看一些论文讲解视频,我蹭的是同事付费的希赛论文专题视频,B 站上也有免费的讲解视频,比如 论文-考情分析和注意事项,核心就是了解一个结构:
接下来就是自己写几篇了,我了解的很多考友,从来没自己写过,就准备依靠考前背那么一两篇,那是万万不可的。这样的论文基本都挂了,只有一个特别天赋异禀的通过了。
我在10月13日,也就是十一假期后的第一个周末,开始了自己的第一篇论文写作,可以从老师讲解过的真题中选一个进行练习。第一篇可以先开卷写作,不要给自己限时。
我的第一篇论文写了整整一天,我选择练习的真题是 “基于ABSD的软考开发”,我没有立马开始写作,而是先把ABSD相关的知识整理成了一个思维导图:
之后对照着论文结构,结合自己的项目实践,一点一点地将论文填充完整,第一篇论文我宁愿死板一点,和视频中讲解的论文结构保持完全一致。
第一篇论文出来后,其中的很多部分其实都是可以复用的,比如项目背景和论文结论,每次需要改动的也就是 相关问题回应 和 主题内容 两个部分。
之后距离考试其实就只有三周了,这三周中建议两周进行模考,一周再进行一次论文练习。大家可以看自己的时间进行安排,我是先进行了两次模考,然后最后一周再进行的论文练习。
最后一周练习一些自己觉得最通用的论文题目,比如 “软件架构风格”,“基于SOA的软件开发” 等等。熟练后,甚至都不需要写完整的论文,直接列列大纲就算练过了。考前把这些大纲带着复习下就行。下面是我对一些题目列的简单大纲, 用这种方法,一天练习五六题不在话下:
这几年论文题目的变化也比较大,类似于 “基于ABSD的软件开发”,或者 “基于构件的软件开发” 这种偏背书的题目越来越少,更多地是从实践出发,比如 “微服务架构”, “分布式事务”, “云原生架构” 等等。所以虽然我列很多的知识思维导图,考试中更多地还是用在了选择题,论文还是积累更加重要。所以后面我再推荐一本课外书,帮大家快速提升积累。
模拟考试--心里有底,方能不慌
孙子兵法云 “先胜后战”,在上真正考场之前,我们通过模拟考试就已经确认自己能过,才能做到最好的心态。
所以我给自己安排了两次模拟考试,分别在考试前的第三个周末和第四个周末,跟真正的考试时间保持严格一致。
模拟考试题目从哪里来呢?可以希赛网考前的两次模考大赛中获取 模考大赛地址 ,这个是免费的,只是注册后总是会有希赛的人打电话骚扰你,不接就行了。也不要指望模考能押到题,就是给你找个感觉。如果错过了模考大赛的话,也可以直接取历年真题。
不管模考有没有有没有通过,我们对考试的时间都有了更好的把握。整个软考的时间非常充裕的,我们充足的时间在做完题目后再进行检查,检查后还可以提前交卷。
我在模考的时候,还没来得及二刷选择题历年错题。希赛的模考中也有大量历年真题,很多题目我之前做错,模考还错了。于是我痛定思痛,一定要把错题再刷一遍。最后真正考试的选择题分数比我两次模考都要高,得了 53 分。
整体复习时间安排表
总结一下上文的内容,整体复习时间安排如下:
时间选择题安排案例分析安排论文安排
9月-第一周
150题
看视频
9月-第二周
150题
看视频
9月-第三周
150题
看视频
9月-第四周
150题
看视频
国庆节假期
剩余真题
刷近三年真题
看视频
10月-第二周
刷错题
第一篇论文
10月-第三周
刷错题; 模拟考试
模拟考试
模拟考试
10月-第四周
刷错题; 模拟考试
模拟考试
模拟考试
11月-第一周
刷错题
常见论文练习
11月-第二周
进入考场
进入考场
进入考场
看课外书多拿20分
文末再分享一个意外多拿20分经历,可能没这分数,我这次也过不了。
我平时喜欢看课外书,就想在考前看一本架构师相关的课外书玩一玩, 增强自己工作能力的同时,也能对考试有点帮助。
不太想看教材,也不建议大家看,因为教材里很多的技术非常过时,和实践脱节,对工作没啥帮助。而且最近考试题的变化方向也是越来越与实践结合,而不是考察教材里背诵的知识,所以看教材就更加没有意义里。
我最后选择了周志明写的《凤凰架构》,一方面是这本书在豆瓣上有高达 9.3 分的高分,另一方之前读过的周志明的其他作品(《深入理解Java虚拟机》)和文章,给我的总体感觉是比较落地和踏实。不像很多其他架构师比较虚,总是说一堆听不懂的概念。
书的内容非常丰富和扎实,和实践连接得也很紧密。考前我只读到了四分之一,居然就命中了一道案例分析题,和论文题。可见出题越来越注重和实践的关系,而不仅仅是背诵教材。
有一道案例分析题考的 Cache Aside 模式缓存的读写步骤。大体就是把 Cache Aside 的读写流程中挖掉几个空,让你填写。最后再问 Cache Aside 可能导致数据不一致的情况与解决方法。
这些在《凤凰架构》的第 4 章 透明多级分流系统中都有详细的阐述。对于 Cache Aside 的操作流程,我估计大多数人和我一样,在看书之前也大概了解,但是对里面的细节可能记得不太清楚。比如写操作流程中到底是失效缓存,还是更新缓存。到底先更新数据源,还是先失效缓存,等等。如果细节记得不清楚,考到这道题就 G 了。好在 《凤凰架构》中周志明详细阐述了里面的细节,以及这么做的原因,而不像其他书一样只是把知识灌输给你,因此记得更加深刻,遇到这个题目轻松拿下。
另外就是论文题,24年下半年的四选一题目中,对于大多像我一样的业务开发者,就只能选择 “基于SOA的软件开发”,但是SOA相关的知识点我记得不太清了,而且除了传统企业,很少有项目会使用 SOA,我又不想瞎编。我又看了看剩下的题目,还有有个第四题,是 “分布式事务的应用”,题目中要求列举四种分布式事务的实现方式,这就把很多考友给难住了,因为我们大多在业务中只用过 TCC 事务。好在我刚在 《凤凰架构》第三章 事务处理中看到过对各种分布式事务实现方式的讲解,包括两阶段提交,可靠事件队列,TCC和Sage事务。靠着这个印象,论文也很顺利地完成了。虽然最后的分数 48 分,也算不是很高,但是通过就行了。
所以非常推荐大家在软考复习的两个多月的时间,利用每天晚上的一点课余时间,把这本书给刷了,通过考试的同时,还能大大提升工作能力和架构视野。
附录:软考考前速记知识整理
周日进考场前,一般还会有那么半小时时间背一点东西,我周六陪老婆逛完下沙奥特莱斯,稍微整理了一个小炒留考前看一看,这里也分享给大家。
当然,这只是我个人觉得需要考前再看看的知识,大家也可以根据个人需要修改。
软件架构风格调用/返回风格独立构件风格虚拟机风格以数据为中心(仓库)软件工程ABSD从不同的视角检查,得到不同的视图1六个阶段需求评审架构设计架构文档化架构复审:识别潜在风险,及早发现架构中的缺陷架构实现架构演化UML 图活动图和流程图用例图
用例关系(含义和名称差别比较大,注意记忆):
总结:
类图
结构化开发与面向对象工具辨析需求分析数据字典结构化需求分析:数据字典为核心
对比:
含义结构化需求分析面向对象需求分析结构化建模工具面向对象建模工具
数据结构
数据模型
对象模型
ER图
类图,对象图
控制结构
行为模型
动态模型
状态转换图
顺序图,通信图,状态图,活动图
系统功能
功能模型
功能模型
数据流图
用例图,数据流图
分析与设计(概要与详细设计)阶段结构化工具面向对象工具
分析/概要设计
模块结构图/模块图,层次图,HIPO图
顶层架构图,用例与用例图,领域概念模型
设计/详细设计
程序流程图,伪代码,盒图
包图(软件体系结构图),交互图(用例实现图),类图,状态图,活动图
软件架构评估ATAM阶段质量场景的6个要素核心三要素风险点和非风险点,敏感点和权衡点数据库数据库设计过程
锁的进化阶段是否加写锁写锁释放时机是否加读锁读锁释放时机解决的问题隔离级别
一级封锁协议
是
事务结束
否
丢失更新/脏写
读未提交
二级
是
事务结束
是
读取完毕后
脏读
读已提交
三级
是
事务结束
是
事务结束
可重复读
可重复读
两阶段锁(扩张+收缩)
是
事务结束
是
事务结束
幻读
可串行化
总结:写锁是基本底线,并写要持有到事务结束。读锁从没有 -> 持有到读取完毕->持有到事务结束->两阶段锁
反规范化手段RedisRedis和MemCache对比MemCacheRedis
数据类型
简单key/value结构
string,list,set,hash和zset等丰富的数据结构
持久性
不支持
支持,aof, rdb
分布式存储
哈希分片
主从,Sentinel和Cluster等多种分布式存储方式
多线程
支持
Redis5.0及以前版本不支持
事务支持
不支持
有限支持
数据容灾
不支持
支持,aof, rdb
Redis 淘汰策略
软件架构演进两层,三层架构遗留系统演化策略
软件安全安全模型信息安全的5个基本要素