首先,我觉得这里的“计算机基础”不仅仅指的是计算机组成原理、操作系统、计算机网络这些东西,还有就是编程语言的基础,Java基础、数据结构和算法等等。大家也都发现了,这些基础都是大学的专业必修课。
那么,计算机基础究竟有多重要呢?
校招考核指标之一
首先,企业在校招的时候,经常会问到学习成绩或者专业课成绩。刚毕业的学生不会有太多的项目经验,所以学习成绩成为企业校招的重要指标之一。上面也说了,计算机基础大部分都是专业课,这样看来,计算机基础在我们进入职场之前,就扮演了一个重要的角色。如果你们还没有进入职场,还在校园中,请珍惜学习的机会。如果你有能力超过20%的同学,那么在未来你就有潜力超越20%的同行,所以要通过成绩让企业觉得你是有潜力的。
非科班的噩梦
计算机基础是非科班的噩梦,不过反过来,克服了这些噩梦,就会成为美梦。下面这张图,是某培训机构学生的心声,虽然言辞偏激,但是确实是存在的问题:
其实非科班的开发者可以思考一下,为什么自己辛辛苦苦自学或者找高价的培训班,依旧被很多公司拒之门外。我觉得还是基础的问题。自学或者培训班的目标,都是让你快速掌握一门技能,学生希望能快速找到工作,培训班希望能快速收钱,所谓”欲速则不达“,双方都是快节奏的,那么就会忽视对基础原理的学习。所以,大部分培训班出身的开发者基础不扎实。
不过,非科班出身也有一定的优势。不要觉得这句话完全没道理。
非科班的优势就是,一旦你的计算机基础超过了大部分科班出身的人,面试分数会成倍增长,别人会觉得,这个人知道自己的弱项,但是没有逃避,通过自己的努力补回来了。这样的员工更有前途。
当然,这本来就不是一件轻松的事情,如果一开始就处于落后,那么后天就要付出更多的努力。
获得提升
我们都知道,现在前端的Vue框架异常火爆,我本来想去探索一下Vue的源码,发现自己对defineProperty一点都不了解,自己在项目中也从来没有用过,研究源码也就中断了。为了向高处攀登,我决定去补充一些基础知识。
在我看完了defineProperty相关的知识之后,我猛然想起了大约两年之前,我在慕课网猿问上面回答过的一个问题:
那位老哥追问为什么数组的length属性没有遍历出来,当时的我从来没有去考虑这个问题。但是现在,我轻松地知道为什么length属性没有被遍历出来,然后时隔约两年,回答了这个问题。(看上面的链接,我的回答时间)
或许有人会说,知道了这个又能怎么样,可以升职加薪吗?说实话,一两个知识点的累加不会有实质上的提升,但是如果是成千上万的知识点的累加,或许就能创造出优秀的东西,哲学知识,量变质变。如果Vue作者不知道defineProperty是干嘛的,他也就很难创造Vue了。我们的目标不是成为”API调用工程师“或者”Ctrl ACV工程师”。
不写糟糕的代码
我相信,每个已经工作的人都遇到过公司遗留下来的”祖传“代码,这些代码大多是“三无产品”:无注释,无逻辑,无底洞。仔细研究一下旧代码出现的bug,大多是基础知识的问题。下面我列举几个我经常看到的:
if(a = 0) {
// dosomething
}
这个问题我只在老师出的试卷中看到过,没想到工作之后,还遇到了这样的问题,还不止一次,仅仅是赋值和判断相等的区别。顺便说一下,之前我们公司出了一个生产bug就是这样的写法造成的,这个前端开发当月绩效考核直接不合格。
var str = number + '%' || '';
这个问题也是很明显的错误,不管number值是什么,和%拼接之后,一定是个真值,所以||后面永远不会执行。
if(a == true) {
// a为2的时候没有进这个if
}
有人问过我,为什么2 != true
,其实这是JS特有的隐式转换,我觉得这个也算是基础,用心钻研一下就理解了。
if(num == NaN) {
// 怎么能和NaN比较
}
NaN不和任何值相等,包括它自己。写这样代码的,还以为自己的逻辑很稳。
我听过一句名言:所有可能出bug的地方,都会出bug。所以,对于这些基础知识,如果掌握得不够牢固,就要花功夫恶补一下了。
总结
计算机基础简单吗?简单,因为这些都只是基础知识,没有学不懂的理由。
计算机基础难吗?难,因为现在很多人都偏向于学习框架类的东西,这些东西可以现学现卖,从而忽视了基础的重要性。
最难的是态度。
最重要的是态度。
热门评论
?