手记

投稿015期 | 漫谈计算机基础

首先,我觉得这里的“计算机基础”不仅仅指的是计算机组成原理、操作系统、计算机网络这些东西,还有就是编程语言的基础,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。所以,对于这些基础知识,如果掌握得不够牢固,就要花功夫恶补一下了。

总结

计算机基础简单吗?简单,因为这些都只是基础知识,没有学不懂的理由。

计算机基础难吗?难,因为现在很多人都偏向于学习框架类的东西,这些东西可以现学现卖,从而忽视了基础的重要性。

最难的是态度

最重要的是态度

8人推荐
随时随地看视频
慕课网APP

热门评论

?

查看全部评论