先说观点:在没学计算机专业之前,大家都是零基础 。
计算机专业科班出身学编程确实有优势,但是这并不意味着非计算机专业就一定比科班出身的差,技术都是不断更新迭代的,能坚持学到最后的才是真正具有专业精神的人 。
一、计算机专业学编程的优势在哪里? 1.1 计算机基础
计算机基础,传说中的四门专业课,相信这几门课程也是横亘在科班与非科班之间的一道巨大鸿沟,计算机专业出身基本上在大学期间都有机会接触到这些基础课程,而非计算机专业几乎是无法接触到这些课程的 。
举个例子:不管你用的是,还是Java,你都要对操作系统有一定程度的了解,操作系统是你理解各种高级编程语言的基础,特别是后端编程,我们需要考虑内存管理,考虑并发编程,考虑网络编程等等,这些东西都必须跟操作系统打交道 。
1.2 数据结构与算法
编程语言虽然该学,但是学习计算机算法和理论更重要,因为计算机语言和开发平台日新月异,但万变不离其宗的是那些算法和理论 。
同样的功能,看实现的具体代码,新手写出来的可能与牛人高手写出来的差距是很大的,这就是算法思想在具体语言上的体现 。
作为计算机专业来说,大学里就能接触到算法内容,还有专业老师指导算法成长; 。而非科班出身大部分算法学习都只能靠自己 。
二、如何提高编程能力,缩小差距? 2.1 计算机基础
纵观各个大厂面试的前两轮,基本上都会重点观察面试人的基础知识,如果前期基础不扎实,那么就很难进入后面的面试
(1)计算机网络
计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统 。
文章插图
重点学习物理层、数据链路层、网络层、传输层、应用层这些层次结构 。要明白各个层次结构之间的关系,明白每个层都具有什么功能,拥有什么协议,重要的一些协议的内容以及作用 。要能灵活的将各个层次联系起来 。
(2)操作系统
操作系统( ,OS):是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件 。
(3)数据库
数据库( ,简称DB ):是长期储存在计算机内的、有组织的、可共享的数据集合 。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享 。
2.2 算法基础
广义:
狭义:
数据结构和算法你能在任何计算机领域里看到,比如在编译原理中寄存器的分配会用到贪心,死代码检测与消除会用到图论里不可达的知识;操作系统进程、线程调度会用到多级队列和调度算法;组成原理中 Cache 的替换会用到 LRU、FIFO 等算法;开发必备的数据库也离不开 B+ 树、LSM 等数据结构和查找算法 。
如果不学习算法,连什么时候用 Map(红黑树实现)、什么时候用都分不清 。所以学习算法有助于我们根据应用场景选择最合适的数据结构 。
2.3 常用数据结构与算法
工程师工作中必备的核心数据结构,包括链表、数组、栈、队列、堆、树、图、布隆过滤器、LRU Cache、散列表和并查集等 。
- 他是湛江坡头一恶霸,与康有为同中举人,却走上了纵匪窝匪的道路 中国十大匪城
- 福安康是潜力的私生子吗?他与和珅谁的权利大
- 从吕布之死看曹操与刘备之间的高智商游戏
- 寇准背靴与求教的故事分别是怎样的
- 解析梁山好汉李逵与燕青宋江等人的关系好不好
- 揭秘纣王两个儿子殷郊与殷洪二人是什么关系
- 廉颇与蔺相如将相和的故事廉颇与蔺相如关系好吗
- 个人电脑搭建服务器,个人计算机如何搭建web服务器
- 镇元子为何与悟空结拜孙悟空哪些举动打动了他?
- 朴素贝叶斯分类器与Fisher线性判别实践——水果识别为例