怎么样才能提高我的计算机基础知识?

前阵还被我们组的 leader 叫去谈话,说是好好学习,快速提升自己,特别是对于计算机的那些基础知识,也不能丢掉,你们看吧,计算机基础知识,想不学都不行。

我觉得我校招能够拿到不少大厂的 offer,其中一个重要的原因就是得益于对计算机基础 + 算法的重视了,因为校招面试,基本就问这些,今天帅地就讲述下我平时是如何学习的。

不过说实话,对于计算机基础,帅地在学习的过程中,也没有运用啥方法论,也没啥技巧,可能和很多人一样,就是简单粗暴着看书,所以这篇文章,我也很难告诉你们学习的骚技巧或者捷径,所以大家不要有太大的期望,更多的是和大家讲一讲,我自己是如何学习的计算机基础知识的,然后供大家一个参考,假如你是学生或者非科班或者计算机基础很薄弱的工作者,或许可以参考一下。

一、计算机基础指哪些?

经常有小伙伴问我:你们说的计算机基础具体是指哪些呢?,这个问题,感觉算起来,已经被问过 10+ 次了。

计算机基础包括哪些?如果要全部都说的话,其实我也不清楚,这个还得看如何定义计算机基础,不过,最常见的几门计算机基础课,大概就是这几门了:

其中,计算机网络和操作系统,也是面试中被问的最多的两门课程,如果你没有太多的时间来学习这些课程,那么可以优先学习计算机网络和操作系统,之后在学习计算机组成原理、汇编语言和编译原理,当然,如果你还是在校生,那么这些课程都会在大二大三学习到,我希望你能好好学习下,特别是计算机网络和操作系统这两门课。

对于如何学习这个事情,我觉得我一句话就能回答完了,因为真的没啥技巧,我基本就是看书为主,视频为辅,看这些知识有时候容易困,因为有些真的是挺枯燥,特别是编译原理和计算机组成原理,又难又枯燥。

一种比较有效的学习方式就是从工作中用到的知识点出发,这样你可能是带着疑问去学习的,目的性也比较强,学起来会比较有趣,学完之后也会豁然开朗。

但是,假如你是一个学生,那么是很难从工作中遇到的知识点出发的,或者说,如果你对计算机基础知识一窍不通,那么就算你又疑问,你也是很难从哪里学起的。

所以,我的建议就是,如果可以,一定要系统学习一下,千万不要觉得以后工作了,或者等用到了再来学习,一定要从 0 到 1,系统学习起来,所谓系统,就是找一本书,从头看到尾,就是这么简单粗暴。

讲一讲我平时是怎么看这些书的

其实我在看这些书的时候还是非常快的,因为我会以最快的速度看一本书,会先从总体上掌握这门知识,不会去死扣某个知识点,一遍看过去,理解了就行了,但如何你问我细节,我可能都忘了,但是我知识大概是怎么一回事。

一般来说,对于操作系统和计算机网络,我都看了两遍,第一遍只求理解,心中知道个大概,看的很快,总体上知道操作系统是怎么一回事,网络是如何链接起来的。

看完第一遍之后,我会看这本书的目录,然后看到某个标题,自己思考一下是怎么一回事,例如TCP 是如何保证可靠性传输的,我会思考一下该如何保证,然后会打开对应的页面去看看大佬们都是怎么写的,因为可靠性传输,其实会涉及到很多种方法,第一遍看的,虽然当时理解了,但其实很多也都忘了,这时我会在看一遍,再次为大佬们想出的方法卧槽一遍。

不过,我第二次并不会从头到尾看,而是根据目录来看的,第一次看的时候,其实有时候是一遍看一遍犯困的,但是第二次看的时候,会 get 到更多的点,心中不断着给大佬们点赞,卧槽,我怎么没想到还能这样做!

总之就是,先快速且系统着从总体把握这门知识,看的过程中犯困很正常,之后会根据目录,一遍思考自己的想法一遍看看书上是如何实现的,因为当你什么也没学的时候,其实你的想法是很少的,但是当你看了很多人的想法之后,你的脑袋也会积累的挺多想法,也就是说,在第二遍看的时候,你一定要思考。

还有一种就是,我第一遍有时候是通过看视频学习的,把视频看完之后,在系统从头到尾看书,我也不会一遍看视频一边看书,而是疯狂着,以最快的速度刷完视频。

三、无处不在的计算机基础

我们都说计算机基础很枯燥,学了也很少用到,但我觉得,正是因为枯燥难学,才有了人与人之间的差距,并且计算机基础知识也是处处都存在的,例如你学习 redis 的时候,可能会学到缓存的淘汰算法,如果你学习操作系统的内存置换,那么你一眼就能看懂了。

例如你可能经常听说过重量锁和轻量锁,重量锁很消耗性能,如果你没有学过操作系统的话,可能你并不清楚重量锁为啥就消耗性能了?内核切换咋就消耗性能了?但是如果你学过操作系统中的进程/线程的话,可能就知道重量级锁和轻量级锁的本质区别了。

不过在我看来,学习计算机基础知识最重要的,就是让我们学到了一些设计思想,这种设计思想,会伴随我们终生,你在学习的过程中,会学到各种各样的方法,并且都是你最开始没有想到的方法,方法积累多了,你就能产生属于自己的新想法。

说实话,我在学习的过程中,并不觉得很枯燥,相反觉得很有趣,因为我在不停着吸收新知识,吸收前人的精华,例如计算机网络中的流量控制、用赛控制、HTTPS 的加密算法等等,我特么就没想到,还能这样做,要我,肯定无法设计出这么严谨的算法,所以在看的过程中,真的觉得很过瘾。

当然,有时候也会犯困,实不相瞒,犯困往往是因为有点难,看了一大堆描述之后,居然忘了刚才看了啥,然后看着看着就困了就不想看了,我也就先跳过了,之后在回过头来看。

四、简单说下具体都需要学些什么 + 书籍推荐

对于如何学习,貌似我说了好像和没说一样,这也没办法,因为确实没什么学习技巧,我说的先快速把握全局,在根据目录来深入思考,这是我的方法,适不适合你,其实我也不清楚,下面我简单说下一些相对重要的知识点,相当于抛砖引玉,看看你掌握了多少

计算机网络是工作中用的最多的吧,真的无处不在。最常见就是 HTTP 协议了,这必须学,get 和 post 的本质区别,通过他们报文的定义来区分就好,不需要死记硬背你之前看过的那些面试题。

HTTPS 是如何解决 HTTP 明文问题的的,数字证书解决了什么问题?为啥 HTTP 是一种无状态协议?啥是无状态协议?

TCP,UDP 也是必须掌握的了,特别是 TCP,TCP 是如何保证可靠传输的呢?啥是拥塞控制和流量控制呢?啥时拆包粘包?这必须掌握。

IP地址主要用来干啥?为啥还需要子网,子网掩码?世界这么大,IP 这么多,啥是路由寻址?

咋就还有公网IP和私网IP了?NAT转化解决了啥问题?

DNS除了能进行域名解析,还是解决了啥问题?

等等,我说的这些,基本都是重点,你们可以看看自己掌握了多少。

至于视频多话,我在 B 站看过韩立纲的视频

感觉还不错,33 个小时,1.x倍播放,其实很快就能看完,之后刷了《图解 http》和《计算机网络:自顶向下》两本书

咋就还有进程和线程之分?为什么要有挂起、运行、阻塞等这么多种状态?怎么就还有悲观锁和乐观锁,他们的本质区别?

进程咋还会出现死锁,都有哪些处理策略?进程都有哪些调度算法?

虚拟内存解决了什么问题?为啥每个进程的内存地址就是独立的呢?

为啥 cpu 很快而内存很慢?磁盘怎么就更慢了?

听说中国 mooc 有些课程讲的不错,大家可以去找找勒,我主要是看书的,新手可以先看《程序是怎样跑起来的》,之后看《现代操作系统》或者《深入理解计算机操作系统》

学了汇编,估计你就更加理解地址是怎么一回事了,顺序、分之,循环、函数调用、数组之类的,是如何通过寄存器来实习的?

小小的几个寄存器,居然还能实现这么多复杂的操作?

如果你能用汇编写个红黑树的话,那就,呵呵了

书籍的话,我看的是王爽写的《汇编语言》。

计算是如何用 0 和 1 表示各种数值的?为啥要有补数?

计算机是如何进行加减乘除的?为啥计算机无法精确表示某些浮点数?

计算机是如何知道内存地址的?

计算机组成原理还是有点难度,书籍暂时没有推荐的,大部分知识,其实《深入理解计算机操作系统》这本书,其实都有包括。

后面的,就不继续写了,你们可以来补充勒。

另外,单单掌握了计算机基础还是不能成为别人眼中的大神,算法的掌握也是非常非常重要的,特别是对于在校生,校招在算法基本上必问环节,这里给大家推荐一份 BAT 大佬的刷题笔记

把这份笔记突击学习一下,很多算法考察,基本都稳了。

顺便在这里说一下,我目前是在职Java开发,如果在学习Java的过程当中有遇见任何关于学习方法,学习路线等方面的问题,你都可以,这里面聚集了很多正在学习Java技术的初学者,也有不少从事Java开发岗的大佬,与Java相关的问题都可以随时发出来讨论。

对于计算机基础如何学习,如我刚才所说,我一句话就能说完了,但还是硬生生扯出了这么多,这章居然是讲「我是如何学习」的,所以我也不会凭空捏造自己的学习方法,而是真实描述自己的学习方法,可能并不适合每一个人,甚至可能感觉自己看了和没看一样,但如果对某些人有用,那么感觉就值了。

因为在写这篇文章的时候,其实我也没有把握,真心觉得没啥学习技巧,更多的还是需要自己去死啃,视频 + 书籍,死磕一遍,应该就差不多了,之后遇到问题,在去查找对应的文章深入了解。但是,如果你没学过,比起看文章,我依旧坚持希望你去系统看书学习一遍!

基础路漫漫,大家加油!

}

  怎么样才能学好计算机技术?相信很多刚入门计算机技术新手对此很迷茫,小编给你几点建议,通过几点建议,希望你能收获更多。如下资料是关于计算机技术的内容。


  想学好计算机技术注意一下几点:


  1、打好计算机基础


  认识计算机,了解计算机技术功能。在刚开始的时候把基础打牢。复杂的知识,通过很多简单的基础的东西积累起来的。基础课就是迈入计算机专业的基石。学习计算机技术通是从学习操作系统开始的,通过了解操作系统的体系结构从而完成对一系列概念的理解,包括存储模式、计算模式、任务调度、进程管理、文件管理、事务管理、中断管理、权限管理等。学习操作系统建议从Linux系列操作系统开始,由于Linux操作系统是开源的,未来可以阅读其源代码来深入了解操作系统。


  2、计算机技术实际操作


  在平常业余的生活之中可多去练习练习。每次上完课都抽空将老师所说的内容,自己在宿舍内巩固一下。刚开始了很多东西,肯定都会比较简单,但是遇到后来随着课业的繁重。我们学习的内容也会越来越深了。趁着现在还没有过多的涉及到专业的知识,把所学的东西牢牢的打好基础。


  3、多动手应用计算机知识


  学计算机是考验智商和动手能力的专业。现实生活中都离不开计算机,打电话,购物,查看物流,追剧、看视频都离不开计算机。怎么学好计算机不是一下就能学会的需要日积月累,积累知识。知识与技用到自己的学习、工作和生活中。作为人脑的延伸物,让计算机为我们思维、动筹、论证、决策,以提高分析问题和解决问题的能力,学以致用,在用中加深理解,把计算机变成了自己的得心应手的工具。


  4、反复练习计算机技术


  学计算机是一个比较,考验智商和动手能力的专业。很多东西,在我们现实生活中都离不开计算机。最简单的打电话,购物,查看物流都离不开计算机。所以说怎么学好计算机不是,一天就可以促成的,需要日积月累,不断的积累学习。只要坚持不懈,就一定会学有所成。在学习完操作系统之后,紧接着应该系统的学习一下计算机网络知识,在当前的网络时代背景下,网络的重要性不言而喻。计算机网络的内容包括协议、网络体系结构、网络设备、数据交换、数据安全等内容。


  5、掌握相关的计算机编程语言


  编程语言将是职场人需要重点掌握的内容之一,由于不少编程语言本身比较容易学习,所以很多人都是从学习编程语言开始学习计算机技术的,在学习编程语言的过程中再逐步补学其他内容。编程语言通常与应用场景密切关联,如Web开发可以学习Java,大数据开发可以学习Python,嵌入式开发可以学习C等等,目前对于基础比较薄弱的人来说,学习Python语言是个不错的选择。


  以上就是学好计算机技术的几点建议,看完之后是否有所收获呢?如果想了解更多相关内容,欢迎关注亿速云行业资讯!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

}

我公众号里的文章,写的大部分都是与计算机基础知识相关的,这些基础知识,就像我们的内功,如果在未来想要走的更远,这些内功是必须要修炼的。

框架千变万化,而这些通用的底层知识,却是几乎不变的,了解了这些知识,可以帮助我们更快着学习一门知识,更加懂得计算机的运行机制。

当然,在面试中也经常会被问到,特别是对于应届生,对于春秋招,也可以看看我前阵子写过的文章

也有读者经常问的计算机基础知识究竟是指啥?学习顺序?推荐书籍?

我公众号的读者学生以及非科班的应该挺多的,所以我今天这篇文章就写一写,我学过的计算机基础知识,看过的书以及我学过的顺序

当然,以下是我个人的一些经验,并且学过的一些知识,仅供参考,也欢迎大家进行补充,文章涉及的资料文末都会提供

在我们用的程序中,99% 都离不开网络,作为一个程序员,我觉得了解计算机网络是必须的,在大学的课程中,一般也都会开设这一门课。

在我学习这门课之前,我就特别好奇,一台电脑是怎么把消息发给另外一台电脑的呢?例如:

1、两台电脑啥线路也没有相连,怎么就能把消息发送给他呢?

2、世界上的电脑那么多,咋就能找到那台特点的电脑呢?有人说我们可以 MAC 或者 IP 来唯一标识啊,可是,我就有点疑惑了,世界那么大,电脑那么多,有了这个标识,我们该怎么找到他呢?遍历所有电脑?

3、多个程序同时发消息给一台电脑,电脑是如何准确把这些消息拿给这些不同程序的呢?

4、发送的消息丢失了怎么办?

总之,一大堆疑问,看了计算机网络之后,才豁然开朗。自己也写了一篇评价不错的文章:

所以这里,我是强烈建议大家学一下的,在面试中,计算机网络也是高频考点,这里我大致总结一下一些必学协议以及面试高频考点:

  1. MTU,MAC地址,以太网协议。

  1. ICMP 协议及其应用

传输层(主要就是 TCP)

  1. TCP滑动窗口原理,TCP 超时重传时间选择

  2. TCP 拥塞控制,TCP 流量控制

  3. TCP 三次握手与四次挥手以及状态码的变化

  4. UDP 如何实现可靠传输

  1. 数字证书,对称加密与非对称加密

  2. 输入一个URL到显示页面的流程(越详细越好,搞明白这个,网络这块就差不多了)

上面写的这些协议,我觉得是比较重要的,特别是在面试中。之前写过一个计算机网络入门教程:

对于新手推荐视频:可以看韩老师讲的视频,在哔哩哔哩搜索韩老师就可以找到 韩老师讲高校《计算机网络原理》

推荐书籍:《计算机网络:自顶向下》、《图解http》

我是先看了视频,在看这两本书的(文末我会给出电子版)。

操作系统也是一门非常重要的知识,在面试中也是问的非常多(当然,看公司,有些公司技术栈是 Java 的,可能问的比较少)。对于操作系统,要学的也挺多,例如:

啥是进程,啥是线程,他们的本质区别?我们运行一个程序时,数据放在哪里?代码放在哪里?咋就还要分堆和栈?线程切换时是上下文是啥意思?

虚拟地址是什么鬼东西?线程需要那么多种状态干啥子?什么是乐观锁、悲观锁?死锁是怎么造成的?解决死锁的策略有哪些?等等

  1. 线程同步的方式:互斥锁、自旋锁、读写锁、条件变量
  2. 互斥锁与自旋锁的底层区别
  3. 进程间通信:PIPE、FIFO、消息队列、信号量、共享内存、socket

  4. fork进程的底层:读时共享,写时复制

  5. 静态链接与动态链接的过程

  6. 虚拟内存概念(非常重要)

  7. MMU地址翻译的具体流程

  8. 缺页置换算法:最久未使用算法、先进先出算法、最佳置换算法

推荐视频:这个我没看过视频,所以想学的,我推荐去中国mooc大学找各大高校的课,也可以去国外找对应的课。

推荐书籍:我看过的书籍是《操作系统—精髓与设计原理(第八版)》,不过大佬们都推荐《深入理解计算机操作系统(原书第三版)》,我看过目录,感觉还不错,这里也推荐这一本。不过对于零基础的,我建议可以先看一本专门给小白看的书:《程序是如何跑起来的》。

操作系统的学习,还是挺枯燥的,不过,只有把最难的啃过去,才能变的更加强大。

三、数据库(这里我用 MySQL)

在大学的课程里,一般都会开设一门数据库的课程,不过这门数据库是没有针对某一种数据库语言的(例如 MySQL、Oracle)。不过我这里只讲 MySQL的学习,别问为什么,问就是我逃了二十分之十九的课

把MySQL学好,还是特别重要的,千万不能停留在会用的层面上,而是应该要了解一下原理,特别是对于要面试的同学,会问挺多原理,我每次被问到 MySQL 我都会信心大增。

记得腾讯、shopee面试时,面完 MySQL,面试官好像对我刮目相看了。好了,不吹了,说这些也是强大 MySQL 的重要性。下面就说我学过的一些知识以及推荐的学习资料吧。

对于 MySQL,需要学的还挺多的,例如,

1、一条 sql 语句是如何执行的?也就是说,从客户端执行了一条 sql 命令,服务端会进行哪些处理?(例如验证身份,是否启用缓存啥的)。

2、索引相关:索引是如何实现的?多种引擎的实现区别?聚族索引,非聚族索引,二级索引,唯一索引、最左匹配原则等等(非常重要)。

3、事务相关:例如事务的隔离是如何实现的?事务是如何保证原子性?不同的事务看到的数据怎么就不一样了?难道每个事务都拷贝一份视图?MVCC 的实现原理(重要)等等。

4、各种锁相关:例如表锁,行锁,间隙锁,共享锁,排他锁。这些锁的出现主要是用来解决哪些问题?(重要)

5、日志相关:redolog,binlog,undolog,这些日志的实现原理,为了解决怎么问题?日志也是非常重要的吧,面试也问的挺多。

6、数据库的主从备份、如何保证数据不丢失、如何保证高可用等等。

7、一些故障排查的命令,例如慢查询,sql 的执行计划,索引统计的刷新等等。

推荐书籍:连 sql 都不会写的,推荐《SQL必知必会》,接着推荐《MySQL技术内幕:InnoDB存储引擎》。

数据结构与算法,我就不想多说了,看我文章的都知道,,重要性不用说。我秋招最大的优势估计就是数据结构与算法的掌握了

上面三门课程的学习,基本也都是离不开数据结构的,对于如何学习数据结构与算法,可以看这篇:。

我觉得,如何有时间,学习下汇编是必须的,学习了汇编,能够更好着帮助我们知道计算机是如何处理程序代码的,例如寄存器和内存是如何使用的?循环、函数调用、数组是如何实现的?地址是怎么一回事?等等。

很多二进制代码是可以反编译成汇编的,如何你会汇编,那么可以帮助我们更好着去理解一些东西。所以这里建议大家学习下汇编,并且要动手写一些程序。

对于汇编的资料,我可能没啥好推荐的,自己看的不多。看过两本书,对于入门的,我建议看 王爽的那本书《汇编语言(第三版)》,不过这本只适合入门,如果想继续,可以看《汇编程序设计》。

说实话,编译原理还挺难,反正我觉得很难,不过有时间我觉得可以学学,学了这个你可以知道我们的编译器如何分析我们的代码的,例如词法分析,语法分析,语义分析等等。当然,你未来可能会自己写个特定分析代码的编译器也不一定,这个时候,就更加需要学了。

对于学习的资料,我觉得可以看视频 + 书。视频的话中国 mooc 大学搜索即可,书的话,说时候,我也看的不多,只看过学校指定的教材,所以这里给不了多少建议,自己当当自行搜索,哪本热门卖哪本勒。

其实组成原理我觉得也是挺难的,如果你数字电路学的比较好,可能会稍微简单一些,记得当时这门课的最后一个任务就是自己做一个 8 位的 CPU,通过做这个 CPU,真的涨了 很多知识。

对于这门课的学习,我觉得重点就是要弄明白整数啊,浮点数啊,这些在计算机是如何存储的,两个数相加是如何通过电路的与或门操作的。

个人觉得,跟着学校的课本来就行,不用学的太深入,面试问的也不多。

个人觉得算法,计算机网络,操作系统和 MySQL 是刚需,这几门要先学,如果是大一大二,推荐优先学算法,然后计算机网络,操作系统和数据库这些,也可以并行学习。

至于汇编,编译原理和计算机组成原理,其实面试考的不多,可以有时间再学,没时间就先放一放。

暂时先介绍这么多吧,说实话,学了这些,不单单是多学了一门知识,更重要的是可以提升你的罗辑思维,给你带来更多的 idea。

然后上面的书籍我也整理好了,但是书籍经常百度云失效 + 版权风险,大家如果需要,可以加我的企业微信,通过好友请求后,发送「资源」,会自动拉你进群,之后群公告文档领取。

记住,好友请求通过后,发送「资源」两个字,一定要按照要求来,否则不会拉,为了节省帅地的时间,大家进去记得看公告,资源都在公告里。

一定要看公告,资料在公告文档

一定要看公告,资料在公告文档

一定要看公告,资料在公告文档

}

我要回帖

更多关于 计算机基础知识题库 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信