本节目录
1.需求分析
在决定要和其它人一样学会代码知识之前,我们应当先停下来问自己几个问题。
1.是什么契机(诉求)使我认为需要学会打代码?
- 答案可能为:
- 工作需求,包括提升当前岗位能力深度、广度,或者是转行
- 学业需求,包括升学求学、专业课需求
- 专业需求,这里的专业是指某一个涉及到专业知识的具体目的,包括提高工作效率而想要开发一个优化流程的软件
- 兴趣使然,包括个人主页搭建、自用网络爬虫
2.当前我对于这个行业(知识体系)的了解程度为多少?
- 答案可能为:
- 我已
神化有一定年份的专业积累 - 我有一定的基础,可以不费力地听懂专业术语,并大致了解相关体系
- 我会使用电脑,但对代码一窍不通
- 我并不能流畅地使用电脑,包括软件安装使用、打字都存在一定问题
- 我已
在明白自己的需求和自己当前能力后,就能做到最基础的锚定方向,这也是由于当我们在说代码时,即便底层原理相同,但很可能在说的并不是同一个内容,学习路线侧重点也并不相同,例如游戏引擎开发和网页开发,有原理相通之处可以触类旁通,但不能一概而论。
而更进一步,我们要细化待解决的问题,以及初步筛选自己所能想到的可选项。
3.我所能想到解决方案有什么?
- 答案可能为:
- 跟着愿意带我的师傅继续精进
- 发挥互联网作用寻找免费资源并进行整合梳理
- 报(线下/线上)辅导班
- 获取一个学位
4.以上方案中有哪些优点和缺陷?哪些是我无法接受的,哪些是我可以忍受的?
这里的优点与缺陷并不固定也并不绝对,需要根据自己的情况来具体分析,例如报班,有许多人会认为被专人监督十分有用,而也有人会完全受不了行程被完全控制自己无法自由调节。
以及经济情况、时间成本也是需要考虑进去的范围,一般来说,愿意钻研是好学的品质,但我们也需要考虑到人的精力有限,应当以先实现我们最初的目的优先,在有余力的情况下再不断扩展需求。
在综合考虑完上述因素后,我们能更进一步筛选出我们更倾向的实现目标的更优路线。
例如,本系列为,阶段目标为:实际工作需求导向的JAVA语言网页开发;针对对象为:会基本使用电脑软件(指关闭开启,不含代码)但编程代码知识从零开始的读者;资料来源为:多为免费网络课程资源。
需要解决两个问题:理论和实战。理论部分将参考【软考】大纲,实战部分将分为【前端】和【后端】。
2.实战路线
(1)简述
在这里,我们笼统地概述【前端】和【后端】两部分。之所以分为前端与后端,也是人为拆分的结果,在互联网发展前期,由于需求不复杂,可以由一个人来完成整个流程,我们称之为全栈,而随着需求的增多,业务复杂度上升,更倾向于多人团队协作,大家负责不同的业务线,也由此区分出了前端与后端。
前端的路径相对比较统一而且没什么争论,HTML+CSS+JS三件套,再进阶框架简化一切。前端的重点,相较于代码的简化,更注重的实则是美学的部分,如何排版、如何配色,因此经常可以看到推荐设计师想转行就做前端。
后端涉及到语言的区别,不同的语言有不同特性也有相通的地方,本系列讨论的为JAVA语言。整个JAVA的学习——甚至可以说所有语言的学习,其实就指向两部分,一个是基础语法一个是框架(即模板),中间有很长一段时间我们都会在框架上挣扎,框架并不指向一种具体的产品,产品是框架概念浓缩后的结果,近年常提到的框架是【springboot】,而【springboot】也不是一蹴而就的,是各种框架一路迭代上来的,所以不出意外数年之后经过迭代会出现更好的框架。
(2)思路习惯
1)完美思维
在刚接触入门知识时,很容易陷入完美思维,一来是刚进入学习状态时还保有精力,能够兴致高昂地接收新事物,二来入门接受新的体系概念的阶段知识并没有那么晦涩,容易给人一种不过如此的错觉,二者结合,很容易陷入狂热状态,进而完美主义。
但这种本质是提前透支精力的行为,从长期来看,很容易在一段时间后就进入到不应期,以及由于知识点开始交缠、呼应,变得晦涩难懂,正反馈减少,就容易指向拖延、放弃。
2)做笔记
这里的笔记包括了自己摘抄重点难点及分析的笔记,以及第三方机构或个人提供的资料。
成熟的机构会准备好成套资料,多为讲师课件的完整文档+源码+PPT,用好这批资料,能节省一点笔记的时间。缺点在于这部分源码很多是当前课程已经做完后的文档,而跟做的文档基本上没有。因此我会加选热心网友的博客文档,这里第一优选是博客园,不限制复制粘贴,以及博客园有很多大神,一些晦涩难懂的知识点可能就有大神恰好写了一篇“浅析”,此外是跟你天涯共此时的网友的听课笔记,真心在学的网友经常会在原有基础上增添自己的心得以辅助理解,且基本上都有从0到1的源码部分(跟做),但完整文档可能不全,因此两者可以互补。
关于自己做的笔记,坚守以下原则:
不以全为主,但一定要自己能看懂:
标准是用小白的视角去重读笔记,假设阅读你笔记的是对该内容一窍不通的人,你要如何让对方理解。不要当时觉得“我已经完全理解了根本不想做一点笔记,哎点到即止就行了”。最好在这一点上保持悲观,你觉得完全理解了很大程度有可能是因为瞬时记忆有50%原因是因为这几天/数十天一直在重复所以你有印象,而过了三个月五个月之后呢?大脑会果断把你不常用的记忆放进回收站并全部清除,这个时候你再看全是神秘符号的笔记,很可能还要重新回去补课从头再来,这是得不偿失的,而且由于中断一段时间,很可能找不到磨合的感觉,然后心态崩溃。
图像是好文明,但不要滥用:
图片最佳使用是用来描述一些结构关系,一目了然,复习时有时候看图也能一下想起来对应知识,但对于图片喜好型的人来说图片过多反而会干涉判断,不要把优势变劣势,因此能用文字的不用截图,能写源码的地方不用图片,图片做到精简化、有效化。
3)选课程
对讲师:认准老师但不要认准机构,如果你遇到一个好老师且伊带你走完了全部阶段是一种理想状态,可遇而不可求,更多的情况是某个老师在某个阶段讲得更有启发性而在其它阶段会显得稍弱一点。
对课程:一个阶段的课程很可能只看一家的讲解依旧会有看不懂的地方,多搜索多探索。建议做好每个阶段都要看两套课程/书的准备,并且有倾向性的,第一套不求全尽量听精简主讲核心的,第二套倾向于看内容覆盖面更广泛的。如何判断选择是第一套还是第二套课程,主要看时长,超过100h的且只讲了一个阶段基本可归类为第二套课程;其次看课程安排;最终仍旧需要花时间试听,花1-2小时甚至更多一点的时间用脑子判断是否能接受。
精简的第一套不至于时长过长心态过早崩溃,而且脑子里会先对核心内容留下一点印象(只要一点点就很好);看第二套的时候因为核心内容是重点所以必然会反复提到,可以起到复习的作用。而且每个创作者/老师的切入点都会有所不同,比硬撑着反复看一个人的发言要好,大脑就是这样运作的需要各种不一样的刺激。此外,第二套覆盖面广可以起到知识补全的作用,且听第二套的时候因为你有第一套的基础,整体效率和速度也会上升,心理压力会更小。
以上只是建议,并不是限制了必须看两套或两套+,一切的需求都建立在,在给定的时间内,脑子能不能接受那么多信息,以及能接受多少信息,如果第一遍完全融会贯通了,没必要死磕细节非要给自己加课,赶紧进入下一阶段,尽快走入做项目的阶段,再多的理论知识最终都要化作实际的项目成果。(注,理论阶段做的项目其实不是项目而是案例,不要走弯路在还没走到框架阶段就想着做项目,基础阶段是无法做完整项目或者说非要靠最原始原生的代码搓项目效率低且没必要)
(3)通用路线之前端
第一部分是最基础的阶段,知道三大件大概是能做什么,能学会扒一个博客网站。注意不是从0做起,而是能简单看懂别人在做什么,能复刻当然更好,但有些代码实际上用到后续框架能够更简化,且写法也会有出入,因此在基础阶段没法一比一复刻别人网站的也不用心急。
在这一阶段,推荐的课程有:
第二部分,接触框架,前端工程化——即框架简化一切,Vue简化JS,Web技术进阶Ajax,以及七七八八的像是Element、React之类的,学到了自然就懂了。
在这一阶段,推荐的课程有:
《黑马程序员JavaWeb开发教程,实现javaweb企业开发全流程(涵盖Spring+MyBatis+SpringMVC+SpringBoot等)》
(4)通用路线之后端JAVA
由于JAVA学习的人很多,因此课程也多,新技术理念出现时也有人会想是否能用JAVA实现,从而JAVA的内容变得更多。但不要想着一口气吃个胖子,技术是一步步迭代出来的,打好基础,融会贯通后才能进一步讨论前沿技术。在这里,本系列将JAVA核心学习共分为三大部分:
第一部分统称JavaSE,包括【JAVA基础】【网络编程】【MYSQL】以及一些可选项。
首先是【JAVA基础(也会有课程名叫JAVASE)】,这部分学完基本语法、面向对象、异常处理(概念部分知道是啥)、数据结构(概念部分知道是啥)、常用类(含IO流)这五大模块,进入到【网络编程】知道啥是编程意义的网络通信,进入到存数据的【MYSQL】,这是放相对永久数据的地方。到这里,理论上第一部分就完结了,你就可以写出最最最基础的小项目像是菜单之类的,但这个时候东西都是在本地运行的,很多信息甚至只能在控制台上看。而这个时候也可以给自己加塞一点【GUI编程】,这个时候能学到图形界面,是为之后的框架做准备。有很多很多课程会把【多线程】【注解反射】内容加塞在JAVASE的基本语法部分,但反正这阶段我没听懂因为我不知道这玩意为什么出现又是为了解决什么问题,而且这些实质上也是为之后联网(Web)做准备,可以扔到后面再来补,而且学到某个位置的时候你就会清楚知道是该补的时候。
第一部分最好以学懂核心知识为主,精品课最好,不要太深究“覆盖面广”,核心知识学完立马往下走,往下深入不了了再往回倒,这样效率更高——不然学无止境,本来我们就是力求几个月、小几年时间学完人类史上百年的知识,已经是浓缩版了——而且印象更深刻,例如我现在跟你说多态说IO流可能脑子里顶多一个概念,但接下来跟实际业务挂钩就会更深刻理解“噢这个概念原来是这样用,因为使用者有XX需求所以出现了它,它的出现有它必然的原因”。而且在SE部分知识点之间衔接性并不体现得过于突出,所以缝缝补补也不会出现太大的问题。
学完JavaSE的部分再去看其它语言例如C系家族、Python等等,会发现“一通百通”,即基础部分大家都有自己的特点,但也有共性。
在这一阶段,推荐的课程有:
第二部分统称JavaEE,荣幸迎来框架**,包括【JavaWeb】→【ssm(Spring框架、SpringMVC框架、MyBatis框架)】→【springboot】外加【前端(部分)】以及第一部分的多退少补。
因为要联网了,所以先告诉你在Java中联网怎么做到的,即【JavaWeb】。关于开始框架学习的部分富有争议,因为框架不断地推陈出新,旧框架有些是彻底退出直播间有些是新框架的前身,像是JavaWeb里的一些东西在SSM出现后被“淘汰”了,SSM已经被springboot“淘汰”了(用引号是因为有些不是真的淘汰而是精简了),建议根据自己的接受度来,从框架诞生的顺序来说,也即常规的教学流程是【JavaWeb】→【ssm(Spring框架、SpringMVC框架、MyBatis框架)】→【springboot】,但实际上,也有人可以直接接受【springboot】的逻辑所以可以倒着学即【javaweb的层概念(因为这是业务概念还是需要先了解)】→【springboot】→【ssm】→【JavaWeb】。但根据小编的体验,个人比较推荐顺序为【前端(基础部分)】→【JavaWeb尤其重点Maven+Servlet+JSP】→【MyBatis框架】→【Spring框架】→【按需求回顾前端中Ajax部分及Servlet和JSP部分】→【SpringMVC框架,这里通常包括SSM三框架整合】→【springboot框架】。首先,第二部分各个框架之间必须要考虑衔接性,不然一到整合脑子可能就会发懵,尤其是这一阶段可以说是一个大课,区别于第一部分零零散散的知识点,第二阶段需要你能把所有东西连起来,而且框架是别人定义了一套写法,有些必须的规则,因此书写习惯上也需要进行磨合习惯。前端和JavaWeb是打基础的不太好调整这部分位置,而前置的MySQL加上MyBatis框架和Spring框架整个可以顺下来,到了SpringMVC的时候会发现跟前端联系比较大,但这个时候可能也已经忘得差不多了建议按需要回顾再进入SpringMVC可能会丝滑一点,到SSM整合部分可以算作一个测验,如果比较丝滑基本上最大的问题基本上算解决了,再进入springboot框架就能尽可能降低出现花了很多时间去听课到最后发现啥也不会的情况出现。
在第二部分里将出现很多新名词,没关系,先接受,而重复三次之后还是觉得难以理解的,有可能就说明前置知识出现漏洞才导致新名词完全无法理解,这个时候我们就采取“退一步”策略,哪里有缺漏就往哪个方向补课,例如在第二部分我发现自己关于流的部分一知半解对于常用类更是闻所未闻,这个时候我就回到JavaSE针对性的来补这两部分,并尽量找到那种覆盖面广时长更长的参考书文档/视频教程,因为覆盖面广此时相当于字典目录页,而且你此时有一定基础知识铺垫,查漏补缺效果会更好。
在第二部分会间接或直接指向第一部分跳过而现在需要直面的课程例如【多线程】【注解反射】【并发编程】【数据结构】【JVM】,以及要实际开发一段时间才懂为什么会出现这种思想的【设计模式】。以及第二部分会牵扯到前端的部分学习,也是从【三件套(基础)到前端框架们】,但和专门的前端课程有区别,属于你要知道这是什么。
在这一阶段,推荐的课程有:
第三部分进入业务模拟,做项目。
没有什么比做项目进步更快,以及应当逐渐理解到一个大系统能运行起来比做到完美更重要(事实上完美是一种美好的期盼),而且实际程序开发的工作,简历上也需要你有做过项目来支持,有项目不一定能过面试,但没有项目,你都写不出来简历。
市面上这部分的项目多为商业类项目为主,例如外卖、点评、电商,一方面是普适性更强另一方面单位自用的系统各有各的需求以及一些保密性,关于项目的选择也是一个争议点,太大众不行太小众也不行,重点是能加入自己特色,关于这点可以看看网友的侃侃而谈,面试是个侃侃而谈你知我知都在说假话的吹牛过程。
逻辑上来说只要你会用【springboot】就可以开始做项目了,但如果没有办法适应或者说虽然跟着做都能做出来,但是一关掉教程就两眼一摸黑,脑子里全无想法一团浆糊,那就说明前面两部分肯定是哪一步出现问题,请往前补课。
在做项目的期间又衍生出需求,需求推动技术进步,因此又要直面【Linux操作系统】【微服务】等等。
在这一阶段,推荐的课程有:
(5)JAVA思维导图
思维导图比路线要详细很多但更多是查漏补缺用,不建议开局就一大片思维导图,思维导图实际上是我们有了基本认识之后回顾用的东西,而不是严格按照思维导图进行学习安排,而且每个讲师习惯不一样如果依赖太详细的思维导图可能反而会导致知识点零碎。
以下内容中:
标注【核心】的是编者认为会反复多次出现的重点,是应该先进行吸收的部分
标注【进阶】的内容,本身也属于重点内容,但在前期(即能跟做出一个完整前后端项目前)会比较抽象,比较依托于相关知识点的基础认识,即代码写多了再回来看更容易通悟,这部分先有印象为主,但后期迟早会来补课
未进行标注的,仅代表在这个以做出项目为目的的实战路线中,暂时不放在最重要的部分,但重要与否其实是比较应试的评价
- 第一部分 JavaSE
- 前置课程-习惯养成:笔记梳理,行为习惯比较推荐博客但不强制,涉及到简单的Markdown语法
- 计算机基础:不算必要因此有些讲师不会说
- 【核心】Java环境搭建:重要的第一课,配置环境简单来说计算机要能找到你的Java程序,以后还会有很多程序需要我们配环境,配环境本身不复杂,但要有这个意识,使用软件时都需要考虑环境的配置问题
- 【核心】集成开发环境安装:白话即我们打代码需要的软件,软件能帮我们进行项目管理、检查代码、提醒格式、智能代码补全等功能简化开发过程,而不是在文本文档上写代码
- 【核心】Java基础语法-变量、流程控制、运算符和表达式、方法、数组、集合框架:到这里你可能会感觉我们接下来就是在倒腾各种方法,是的,确实如此
- 【核心】Java面向对象-类和对象、封装继承多态、静态方法、抽象方法、接口、内部类、常用类(API)、泛型、字符集、正则表达式、异常处理、单元测试:进行到这一步实际上最最最基础的部分已经结束,你应该能简单的看懂基础代码(无框架情况)各个部分以及代码间存在的联系关系,但仅进行到这一步如何运用手上的代码大概率还是懵的,但面向对象已经结束的前提下实际上已经可以完成一些很简短的项目,可以用来巩固这一部分,不过需要注意不要在这里耗费太多时间去纠结细节问题,光用这种基础代码去真的实现项目是不理智的,后续会用框架简化掉
- 【进阶】Java通信-JUC多线程/高并发、IO流、反射、注解:反射很重要所有人都会这样说,接下来各种框架的底层基础就会用到反射,研究源代码的时候会有用,但这不是早期项目都跟做不出来的时候该想的事情
- GUI编程:这里会插入一个GUI主要是引入了“监听”这个概念,在后期阶段用得上,加上这个组件(?)吧现在已经(基本)不用了,所以很多讲师可能拿来举的例子会不一样,也有可能没有这一课
- 【进阶】JVM:有些可能会穿插一些虚拟机(JVM)内容,这个有点涉及底层原理,可以稍微延后来补,而且这部分很多牵扯到的其实是面试
- 【进阶】23种设计模式:是写代码多年的人们总结出来模板,看不懂可以进入第二部分再回来补,实质上是在写代码过程中会有更深体会,其实也不太推荐在SE阶段就在这里耗费太多时间,如果碰到了就听一听,像是单例、代理基本上都会在接下来框架课程讲到
- 【进阶】数据结构和算法-数组、队列、栈、链表、树、散列、堆、图+排序、查找、分治、动态规划、回溯、贪心、KMP、Prim、kruskal、最短路径:不用很深入,这个阶段做到知道概念是什么意思,思想了解了解,因为数据结构和算法本身就是一门大课,所以有些专注讲做项目的讲师可能不会还单独分出来一课给数据结构和算法,可以自己选择性先补课,或者继续向下推进,迟早有一天你会回来补课的,都可以,早学不一定比晚学好,反之亦然
- 第二部分 JavaEE
- 【核心】网络编程:也经常能看到把它放在JavaSE里,其实是承上启下的部分,但既然都说到联网了还是把它放在这里
- 【核心】加塞前端部分-HTML+CSS+JavaScript三件套、Ajax方法、jQuery框架:重点不是钻研前端而是知道基本概念,项目前后端分离但后台也要跟前端交互,必须得基本能看懂前端数据是什么,才能决定如何处理
- 【进阶】加塞前端框架部分-Node.js、Vue框架、Element、React、BootStrap:主要是做项目时选择主流框架时会用到,可以等要用的时候回来补
- 【核心】JavaWeb后端-Web的Http协议、XML文件、属性文件属性集Properties、项目管理Maven、项目管理Git+GitHub、Tomcat、Servlet、JSP、MVC三层架构、过滤器监听器、文件上传下载:正式联网
- 【核心】实用小工具-Junit单元测试、Lombok注解插件:有些讲师会在第一部分就提及有些第二部分使用的时候才提及
- 【核心】数据库-MySQL、JDBC:数据的家
- 【进阶】数据库-Redis
- 【核心】框架迭代-第一轮-SSM(MyBatis+Spring+SpringMVC)3框架学习+整合:其实按学习顺序来说我觉得不如叫MSS
- 【核心】框架迭代-第二轮-SpringBoot框架
- 【进阶】操作系统-Linux
- 【进阶】Nginx反向代理WEB服务器
- 第三部分 实战项目
- 常见类型:电商、金融、教育、直播、CRM、ERP
- 第四部分 微服务和分布式【进阶】(小编这部分本区域还未涉及,无法做评价,仅供参考,但下列基本上都是在已经能跟做出完整大型项目基础上再深入)
- Netty
- PRC框架-Dubbo
- 分布式文件系统-FastDFS
- 应用容器引擎-Docker
- SpingCloud各种组件
- 搜索引擎-ElasticSearch、Solr
- 中间件-MyCat、ActiveMQ、RabbitMQ、KafKa
- 日志分析与监控ELK-ElasticSearch、LogStash、Kibana
- 一致性服务-Zookeeper
- 第五部分 DevOps 开发运维一体化 自动化部署【进阶】(小编这部分本区域还未涉及,无法做评价,仅供参考,但下列基本上都是在已经能跟做出完整大型项目基础上再深入)
- k8s
- 系统监控与报警-prometheus
- 监控持续-Jenkins
- 容器镜像仓库-Harbor
- 代码托管平台-GitLab
- 项目工程代码质量检测-sonarqube
- 第六部分 大数据【进阶】(小编这部分本区域还未涉及,无法做评价,仅供参考,但下列基本上都是在已经能跟做出完整大型项目基础上再深入)
- Hadoop
- Hive
- Impals
- Spark
- flink
3.理论补课环节
(1)简述
市面上以找到工作为导向的编程课通常更注重实战,对于半路出家的读者来说,理论上的欠缺可能会在实战跟做时出现一些困难,有部分思想和理论许多课程实际上会默认读者熟知或请读者自行补课,且后续求职过程中,也避不开理论部分。既然补课总要来到,建议在时间自由的期间尽早解决此问题。
但需要注意的是,编程实战是很重要的一环,重要到甚至理论后补也没关系,而且理论和实战并非对立关系,有时能更快理解实战时的代码逻辑是有理论铺垫,有时理论的展开离不开代码实操经验。有精力的可以代码写累了看理论,理论看累了写代码。如果面临二选一时,可考虑实战从入门到跟做项目为主,在这期间根据需要补齐对应的理论部分。这里需要说明,过于沉迷系统性学习也是不太可取的,很多时候很多知识之间就是“不”系统的,我们可以用一个稍微大一点的框架去框定它,但是太多太细的框架反而容易框住我们自己。
本文将讨论其中一种“补课”方式:【计算机技术与软件专业技术资格(水平)考试】
优点为:被中国境内大多企业承认,且此国家级证书在评相关职称、落户时作为一个几乎必要项。
缺陷为:本证书相当于一个初级考核,能够证明参与者达到了入门水准,并不完全等同于真实水平,有许多人认为其“含金量”等同于计算机二级Office,即,有了不加分算作你的基本素质,但没有会扣分。
在【计算机技术与软件专业技术资格(水平)考试】中,下分了【初、中、高】三大类,二级目录下针对不同人群需求进一步分类,总计30个小类,其中也包括其实并不怎么涉及计算机软件的部分,本文将讨论中级的【软件设计师】。(中级的【软件设计师】对应更高一级的是高级的【系统架构设计师】)
软设有2张试卷,一张75道选择题,一张含6道选其中5道的固定题型的大题,总分75×2=150分,需每张试卷得到45分及以上才算为及格,若单科及格,成绩不保留。选择题和大题有很多衔接的地方,不建议把二者当成独立科目。
考试时间两套卷共4小时,较为充裕,正常做题速度也能余下最短半小时的检查时间,几乎不需要额外考虑做题控制时间的问题。
该考试的备考过程与一般应试考试无异,即:(必须)围绕着真题考察范围去进行学习*→(可选)每看完一章及时做真题→(至少要尽量做)写整套真题→调整到一个良好心态,考完后忘记一切荣誉与耻辱继续生活
(2)章节模块应试版
板块一
———板块一,其实建议无任何计算机基础的先板块二,以及急的也可以先跳到板块二再回来这里———
- 1.计算机系统
- 题型:【选择题】
- 分值统计:约6分
- 考察类型:
- 考察方向:
评价:
计算机整体如何运作,涉及到一点点的数学小知识但实际应用中感觉大家会直接用码农专用计算器吧。近两年偶尔(几乎不)考进制换算,其它理论部分相较以前的纸质卷要考察更细即往年没有考察过的部分,除听课之外配合着做题最好也稍微看点书,当然了,那不说人话的参考书估计也看不下去,最好是以已经考察的点往外做扩散。
认证技术的部分是常客,并且考得相对比较细,不能仅局限于以往考过的那点,最好能理解每种方式具体是在做什么。但是也不用到完全悟透的程度,毕竟这些技术本身还涉及到算法也就是数学,而这些数学的东西不是要考的方向。
浮点数对阶越考越研究生化,有些知识点其实是研究生考试专业课408里的,令人怀疑这是中级题目吗你怎么不干脆放到初级考试去呢,不好意思同志我们这里不推崇炫技。
- 2.程序设计语言
- 题型:【选择题】
- 分值统计:6分
- 考察类型:
- 考察方向:
评价:
以往还考点小逻辑题,近些年基本往纯记忆性理论靠拢,稍微有点吃场外积累的计算机“常识”。
编译器解释器之间的区别比较爱考,一定要分清并且知道它们的特点;像数值调用、编译过程基本上必考,不仅要知道每个过程的名字还要知道这个过程中的工具;从近年考试内容大致可以推出接下来考的方向,不算完全无厘头。
- 3.数据流图
- 题型:【主观题】大题一
- 分值统计:固定15分
- 考察类型:
- 考察方向:
评价:
为什么要有这个东西,很简单,即“统一语言”,这个概念会一直延续到我们学习之外。类似于给定一个规则后让全球人都能看懂的流程可视化手册,在这个阶段我们不需要焦虑这种图怎么做出来,只需要关注给一个这样的图之后我们要怎么看。顺带一说这个流程不涉及任何代码实现部分。从应试角度这个题型有固定解题办法,我给了个名称叫连连看。一般情况出题人不为难在解答前2/3的题目时几乎不用动脑,但剩下1/3……不一定,看出题人品行。但是大题一可以说是文字描述最长的而且还不能跳过,容易晕字,不建议作为做大题时第一个攻克的目标。
- 4.知识产权
- 题型:【选择题】
- 分值统计:约2分
- 考察类型:
- 考察方向:
评价:
在纸质考试时期基本上能考察的方式已经考察完了,并且这一部分基本上是作为送分题存在,但进入到机考时代有考察更细的倾向并且也确实是这样,现在倾向是更爱出一些似是而非的东西很容易掉坑里,开始吃场外有无积累知识产权小知识,不能仅限于以往的判断类型题目来对待这部分。
- 5.数据库
- 题型:【选择题】
- 分值统计:6分
- 考察类型:
- 考察方向:
评价:
数据库这个模块的抛出其实一般会放在代码基础知识之后……简单来说代码写的项目在这个项目背后都绕不开数据的存储,而数据库就是存储数据的,如果是做项目的话可能就直接往着MySQL这个软件操作数据来说了,而这个应试教育更多的精力其实放在了相对数学的方面,但底层的东西是不会变的,我们一切的目的其实是围绕着查表展开。因为查表所以需要区分行列需要划分列与列之间的关系等等,在以前会考一些类似于完形填空的题型但近几年都不考了转而是开始扣理论细节,一般不会考很超过的东西,而是在常考范围里深挖或者是挑刺。
范式判断基本必考,当然,仅指定义。
- 6.实体联系模型E-R图
- 题型:【主观题】大题二
- 分值统计:固定15分
- 考察类型:
- 考察方向:
评价:
是数据库设计实操的看图(文字)说话版,重点是要理解它其中的硬性规则,尤其是多对多联系转换成单独的关系(独立的说明)和多对一/一对一关系联系的归并,常考点几乎不变,学会了就是得分点。本质同数据流图,人类太没用了所以亡羊补牢,然而一张网没法全补齐于是设计了很多张不同但本质大同小异的网,这很小小人类。
板块二
———板块二———
- 7.1一门后端语言的基础知识
从这里开始我们就需要来正式了解“代码”啦,因为本文推荐的讲师选的JAVA加上后面大题二选一是JAVA和C++,图方便于是我就用的JAVA,虽然语言间是基本相通的但每家有每家特色,最早期建议还是只选一个,不要学杂了……当然,近几年客观题都爱考python知识,都会涉及到一点,但最好以看科普拓展的心情看待。
注意,每个语言的路线学习基本上都是基础语法+框架,我们在这个部分不需要学到框架,只需要看基础语法,从JAVASE来说我们只需要从认识JAVA到流程控制再到正式进入类与对象最后到接口,根据跟的讲师/教材不同可能里面会对一些内容进行补充删减顺序改变,因此比较建议选一个相性比较符合的讲师或教材,总之当你听到让你连接数据库/Web环节的时候就可以暂停了。
- 7.2面向对象
- 题型:【选择题】
- 分值统计:约4分
- 考察类型:
- 考察方向:
评价:
印象:这部分分值隐约有下降趋势……可能出题人还是想精力更多的放在对应的大题四?等语言基础打好了再回来看应试的考点你会发现……至少能看懂在说什么了,吃透了基本上没问题,这部分绝对不能急。
- 8.UML统一建模语言
- 题型:【选择题】
- 分值统计:约4分
- 考察类型:
- 考察方向:
评价:
先前瞻解释一下什么是UML,UML(Unified Modeling Language)全名叫统一建模语言,又称为标准建模语言,是为面向对象软件设计提供统一的、标准的、可视化的建模语言,常用图有10种。人话:人类亡羊补牢三度袭来。
考的图的类型很大程度会决定题目难度……
- 9.UML实操-多为用例图+类图,偶尔会出现别的图
- 题型:【主观题】大题三
- 分值统计:固定15分
- 考察类型:
- 考察方向:
评价:
相较大题二,我会认为大题三更友好一点……我一开始是这么想的,直到我终于认真面对试题二,发现试题二近些年出题方向都很工整也有规律可循,但试题三这边经常有怪题,模棱两可的部分非常多,强行逻辑的部分也非常多,甚至可以说能感觉到出题人就是不想你在这部分拿分,你甚至分不清这到底是因为出题人水平还是别的什么……所以如果保持悲观的话最好在这道题上放下一些期待,而把精力给到代码题大题六。
UML10种类型图中优先聚焦用例图和类图的识图,其它类型图一般也不难(当然了不一定)最基础的要能看懂。
- 10.设计模式
- 题型:【选择题】
- 分值统计:约4分
- 考察类型:
- 考察方向:
评价:
请注意,如果一直逃避代码,到这一部分大大大概率是会完全懵的,靠死记硬背那么将迎来非常地狱的时期,因为我们要面对26种模板以及各种变化的考题,如果不理解就会很头疼,但一旦理解了就会觉得:就这?所以如果之前的代码知识打好基础了,这一部分就不会那么折磨。设计模式人话版就是因为各种情况各种需求大差不差,并且更注重拓展性,于是就有人开始公式答题了,代公式就是快,然后人类搞出来了26种模板,其实设计模式更多是工作几年之后才能理解到其中好处的东西,但远的我们不提,应试需求我们只需要浅浅认识它不需要生产它。
只要你真题都眼熟了,你能很明确的感觉到有那么几种设计模式的定义你是必背的。
- 11.设计模式实操
- 题型:【主观题】大题五/六
- 分值统计:固定15分
- 考察类型:
- 考察方向:
评价:
和真正写代码时候的逻辑其实稍微有一点出入,因为自己抄代码是从0到1,但这类应试考试这个题型属于是给了你一段别人写的代码并且是不完整的代码需要你填空,因此这里更像一种逻辑推理游戏,你需要去反推这段代码本身是做什么的,来让所有的模块连接到一起完成题目所给的要求。因此如果在有代码基础的前提下依旧觉得这部分摸不着头脑的也不用着急,这种情况也正常,依旧是多来几套逐渐切换成应试思路。近两年的代码题还不是很变态,但是要细心。网上也有所谓的答题技巧,但实际上还是要学会看一段代码内部的、和另一段代码之间的联系,而且真题中会给出类图方便理解,理解了基本上不会很难,并且你会形成自己的一套“答题技巧”。
- 12.操作系统
- 题型:【选择题】
- 分值统计:约6分
- 考察类型:
- 考察方向:
评价:
其中有些“送分题”但改成机考后不再以固定分值出现,也就是说常考考点出现了一些变化,但超纲的内容暂时没看见什么,基本上依旧在以往考过的考点打转,只要每部分懂是在做什么一般不用很怕。
- 13.结构化开发
- 题型:【选择题】
- 分值统计:约4分
- 考察类型:
- 考察方向:
评价:
说明软件开发过程中一些原则,内聚啊耦合的,其实理解上没有那么大难度,主要是翻译不说人话。
- 14.软件工程
- 题型:【选择题】
- 分值统计:约10分
- 考察类型:
- 考察方向:
评价:
这一块耗时会比较长,会看得人想吐(晕字),但相应的回报也不会很差,大部分都是可以理解的内容比较能给人信心。但有往特别细节考的趋势,以往但凡出现过的理论部分的考点都最好不要放过。已经出现了几次考的是高级的内容(占分1-2分),可以适当作为知识点补充。
- 15.信息安全
- 题型:【选择题】
- 分值统计:约5分
- 考察类型:
- 考察方向:
评价:
如果是经常用电脑上网的读者应该会更有“亲切感”,主要核心内容即人类在线下斗,在线上也要斗……不过近两年这一部分的题目很与时俱进,很刁钻,出题人给人的感觉就像病毒更新迭代一样。
顺带一说,信息安全这部分其实是跟计算机网络连在一起的,只是这里做出了拆分。
- 16.计算机网络
- 题型:【选择题】
- 分值统计:约5分
- 考察类型:
- 考察方向:
评价:
协议的部分涉及到很多英文简写,建议通过查找到全称来链接记忆。该部分涉及到了Web内容,也就是说编程语言的中期内容。
子网掩码或许是一个难点,可以适当给自己额外补补课。
板块三
———板块三,数学的大门———
- 17.数据结构
- 题型:【选择题】
- 分值统计:约5分
- 考察类型:
- 考察方向:
评价:
从这里开始便聚焦于数学题,和代码关系不大主要是数学概念,部分点能摸着套路但部分点真的不讲道理……建议油管上找到印度姐印度哥讲师配合着看。其它的不敢说,但二叉树真的不难并且很多原理可以自行推导,如果其它的无能为力,也不要放弃二叉树。
以及通常会把数据结构和算法放在一起说,很多课程也是这样。
- 18.算法
- 题型:【选择题】
- 分值统计:约5分
- 考察类型:
- 考察方向:
评价:
能不能拿到这几分,三分靠打拼,两分靠实力……
算法难度浮动大,但是基础知识大多应当是能看懂的。实在不行就请死记硬背吧。本质就是人类想省钱省时间,人类真爱折腾啊……算法部分在客观题主观题都有,同理,建议油管上找到印度姐印度哥讲师配合着看,你永远可以相信印度人。
- 19.算法实操
- 题型:【主观题】大题四
- 分值统计:固定15分
- 考察类型:
- 考察方向:
评价:
类似的,能不能拿到这几分,3分靠打拼,2分靠实力……剩下10分听天由命。
虽然会有很多很多人总结常见算法并且分类,但就实际感受而言纯纯是看出题人想不想给你分,如果没打过计算机竞赛的(其实本质数学类)可能也比较难受。就我的回忆来看,这部分和代码部分一样,是很难通过《1小时速通》来真正解决问题的,尤其是代码题还能稍微总结出一点做题公式因为常考的内容会反复出现,但算法这章几乎取决于你的前置数学知识点有没有覆盖到这块区域,尤其是数学的部分。并且这部分难度忽高忽低,有时候还能瞎猫碰上死耗子靠着别的地方的知识来抢个几分,有时候就只能听天由命,这也是为什么把算法部分放在最后一个板块的最后一个部分,建议没有时间的前提下,看完基础囫囵吞枣一下把重心还是放在剩下的60分,这15分我们尽量不要全丢,但尽量保持一个“能拿一分就是多赚到一分”的淡泊名利态度。如果想稳扎稳打并且有一定时间去积累的,可以在代码篇结束之后把算法篇也安排上。
(3)习惯技巧
1)时间规划
在完全未知状态下,战线拖得越长心理防线越容易被击溃,建议在有一个具体的阶段目标后,估计出一个大概的时间,再使用除法根据自己每天实际能控制的时间,得出所需要的时长。
视频的好处在于,视频有具体的时长,可以简单估算总时长。如果选择了不同载体,例如教材书,则可以考虑以x页或章/次为单位来计算。
倍速几乎是当代考生的小技巧,且一般讲师都会放慢速度,配合倍速可能刚好,但因为要考虑到吸收消化时间和做题时间(如果有的话),计算总时长时,建议仍以视频总时长为参考最好,在这个基础之上认真估算自己每天、每周、每月能拿出来的时间,以小时计,不用精确到分钟。
在计算自己实际投入时间上,大致可分为过分悲观派和过分乐观派两类,过分悲观派会认为自己每日专注时间不到5分钟,过分乐观派会认为自己虽然期间分神2小时玩手机2小时发呆2小时但每日专注时间仍然是总计的8小时。建议客观看待自己专注时间,不要低估,也不要高估,找到自己最舒适(又稍微有一点压力但不至于让自己放弃)的节奏,人的每天状态都是不同的,加上倒计时逼近会影响人的情绪,情绪也会影响执行力,先学会尊重自己善待自己,再谈指挥与执行,这样稳稳走才能走的快。。
2)做笔记
笔记需要考虑到形式,这里是指纸质笔记与电子笔记,纸质笔记的好处是对于长期未接触应试考试的人来说较为容易进入状态,电子笔记的好处是便于记录与管理,增删改的成本低。
无论是从哪一种开始,都建议最终转换为电子笔记,尤其是许多重复性工作例如笔记记录,完全可以复制粘贴其它人的笔记,节省时间到理解笔记和做题的方面。
虽然是Ctrl CV工程师,但复制粘贴只是手段,最终目的还是要形成我们自己独有的笔记。且这份笔记不以全为主,不是一个资料库,而是我们查漏补缺的帮手。
而资料库的部分,我们可以搭配一本好心人提供的电子教材,即电子书籍搭配电子笔记,这样无论是完整详细内容,还是重点突出,都能兼顾。
3)skip键
虽然完整课程中是以百小时为单位的,但有些部分我们可以使用skip键先跳过,尤其是习题讲解部分。听人说10遍不如自己做一遍,一定要跟着动手,无论是理论考试的应试还是抄代码,只用眼睛看你是真的不知道大脑多能欺骗你的。
其次是比较刁钻的部分,可以先跳过,后期看情况看能否理解。要接受一点:有些很偏很细的零散知识它就是不入脑的,因为它只是以一个概念存在,从应试角度倒是可以考前一周死记硬背但是不要期待单纯的死记硬背的成效,尤其是改成机考后它考题范围更细更“刁钻”如果没有理解很可能稍微变换一点还是会很难反应过来。
4)刷题
在正常跟着视频看下去后,此时可以快速刷第二遍(仅题目),因为小几百个小时下来你很有可能已经忘光,且并非第一次考(或有基础时间紧迫以刷题为主)的读者也可以仅关注题目部分,快速刷一遍往年真题,即:看题目自己得出答案跳到最后看答案,无误直接下一道有问题则重新听一遍讲解还是有问题的通过搜索引擎等方式去查找看具体是因为什么卡住。
这样的好处是我们不用再去找真题解析并且处于一个相对适应的环境,当然,如果对视频过敏的,以上“视频”字眼也可以换成文字,现在刷题软件上文字解析也是说的很详细的。
这些小题刷完了相当于又过了一遍早年真题和常考题型,接下来到真题阶段:
首先,可以考虑打印出纸质版,因为我跟的这个讲师是以真题为导向来讲解知识点,因此在看视频过程中就已经做了一部分真题,二刷时也再次写了一遍真题,就不需要做重复工作,只需要打印出视频中未提及的,近几年剩下的部分。
打印纸质版是因为每天看手机的时间很长,可以切换一下心情,当然,能适应的也可以用电子版。
具体来说,根据你参加考试的批次留出上一批次的试题,例如参加的是2024年下半年的考试,可以留出2024年上半年的试题放在中后期写,接下来从2023年下半年倒着往前写,这样就算时间不够也能确保你先把最重要的事情做了;选择题和客观题穿插着写,选择题可以一套一套做因为你理论上已经把知识点全过了一遍,没有可以蒙的主观题按【模块】练,而且优先练习不熟悉的部分。
每次做完题后你可能有一些新笔记,建议尽量补充到原笔记上,这样不用跳转来跳转去,如果涉及到图像题也可以摘抄一道有代表性的更新至笔记。这也是推荐电子笔记的原因,修改成本低,新增也能大量通过截图粘贴解决。
在最后一周的时候因为我电子屏幕时间很长,加上笔记在这个时期其实已经基本定下来,所以我打印了纸质版的笔记在最后几天整体的翻一遍,同时,也是因为在部分章节现在趋势是特别爱考很偏门的东西(对已经工作十几年的人来说可能不偏门),有些知识点属于刷到了就有没刷到就没有,多翻几遍没坏处。
5)做题习惯
软考有个不成文“规则”,即客观题难那么主观题不会太过分,主观题离谱那么客观题应该比较顺手,因此如果开局连续几道题都脑子空白的,先别慌,告诉自己整体难度肯定会控制的,自己应该是遇到了这部分恰好用来提升难度的部分,但总有我们能拿分的地方,我们的目标就是45分,把能拿到的分数都先拿到再说。
客观题部分:点开试题,把所有题都扫一遍,扫到一眼就会的题目就停下来做完然后继续扫,扫完第一遍从头开始扫第二遍,这个时候你的心态一般会好很多因为你大概知道你这个时候保底已拿下多少分,心里有底就不会那么慌,而且你心态一好脑子里的小知识点就逐渐浮现了,接下来看两眼能看出来的耐着性子来做看了三眼还是看不懂的继续跳过,扫第二遍结束这个时候有不太确定和大概确定的,都可以标记一下,第三遍来攻克真的一点都不会的,但这个时候你应该已经进入状态,运气好的你可能会突然想起来:哎这个好像是XX?总之不确定的还是标记起来,最后第四遍把所有标记的题目认真再看一遍,看似过了很多遍其实2小时完全够用基本上都会提前交卷进入到主观题,是的这两部分现在是连考所以剩余时间时间会延续到下一科。
主观题部分:这部分因人而异,我会先直冲大题六JAVA代码,但不是说我得心应手而是我紧张我怕我一慌什么接口继承方法调用构造全忘了所以在不断自我提醒之下会先去看代码,一般都能做出来至少两道除非出题人真的很坏,运气不错能全顺出来,就可以顺理成章来到……我其实会扫一眼试题四算法,因为算法这道大题很大一部分分值也是代码实现,趁着手感还在有时候可以蹭一下,而且第一眼其实你就能看出来试题四你会不会,50%概率不会那就跳到试题一二三中你做着更顺手的最后再来啃硬骨头,但不是还有50%概率可以蹭一下吗对不对,总之算法这里稍稍留意一下后试题一二三我的习惯是先全部点一遍,看有没有考察纯背的知识点的作答,例如“XX情况用什么设计模式更好为什么”“用例之间存在什么关系”等等,有这种题的趁着记忆还在赶紧写掉,接着才是回到题目本身,然后接下来的习惯是二三一或者二一三这样,因为提前交卷的人很多容易打断节奏,而题一最需要集中精力,除非题三很简单否则我会倾向于二一三。
6)过程细节
首先,一个讲师经验再丰富,我们也不要想着一个视频一次搜索就能解决我们所有的小问号,在各种抽象概念的接连袭来下问号很多是很正常的,我有时候较真可能一个晚上就在为一个问题死磕。多用搜索引擎多用外网,不抗拒AI的多去折磨GPT/Claude/(各家AI的区别在此不展开说明),AI作为数据库谁用谁知道,而且你问题再多再小白它也不会骂你,当然它可能“骗”你所以得到解答之后我们要去验证。
最好预留考前一周的时间,即把deadline提前一周,你永远不知道考前一周会发生什么奇形怪状的突发事件。
(4)参考资料
视频
浙公网安备 33010602011771号