计算机专业的四大基础知识梳理(计算机专业的基础知识有哪些)
csdh11 2025-01-29 15:14 31 浏览
四大基础知识包括:数据结构和算法、计算机网络、操作系统、设计模式
1、数据结构和算法
如果想去大厂的同学,这是必备的技能,不然最后的算法题部分肯定是过不去的。
基础的数据结构包括:
- 数组(Array):
- 一组具有相同数据类型的元素按连续内存空间存储。
- 可以通过索引快速访问元素。
- 链表(Linked List):
- 一组元素,其中每个元素包含数据和一个指向下一个元素的指针。
- 常见的类型有单向链表、双向链表和循环链表。
- 栈(Stack):
- 一种遵循后进先出(LIFO, Last In First Out)原则的数据结构。
- 常用于递归和表达式求值。
- 队列(Queue):
- 一种遵循先进先出(FIFO, First In First Out)原则的数据结构。
- 常用于任务调度和广度优先搜索(BFS)。
- 哈希表(Hash Table):
- 使用哈希函数将键映射到值的数据结构。
- 提供快速的插入、删除和查找操作。
- 树(Tree):
- 一种由节点组成的分层数据结构,其中每个节点可以有零个或多个子节点。
- 常见的类型有二叉树、二叉搜索树(BST)、平衡二叉树(如AVL树)、红黑树等。
- 图(Graph):
- 一组节点和连接这些节点的边的集合。
- 可以表示对象之间的关系,常用于路径搜索、网络流问题等。
基础的算法包括:
- 排序算法:
- 冒泡排序(Bubble Sort):通过重复遍历要排序的数列,比较每对相邻元素,如果它们的顺序错误就把它们交换过来。
- 选择排序(Selection Sort):每次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
- 插入排序(Insertion Sort):通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
- 归并排序(Merge Sort):采用分治法,将问题分成一些小的问题然后递归解决,最后再将各个已排序的小段合并起来。
- 快速排序(Quick Sort):通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后再按此方法对这两部分分别进行快速排序。
- 搜索算法:
- 线性搜索(Linear Search):从数组的第一个元素开始,依次将当前元素与目标值进行比较,直到找到目标值或搜索完整个数组。
- 二分搜索(Binary Search):在有序数组中查找某一特定元素的搜索算法,搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。
- 动态规划算法(Dynamic Programming):
- 用于解决最优化问题,通过将问题分解为更小的子问题,并存储子问题的解决方案以避免重复计算。
- 贪心算法(Greedy Algorithm):
- 在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。
- 回溯算法(Backtracking):
- 一种通过探索所有可能的候选解来找出所有解的算法,如果候选解被确认不是一个解(或者至少不是最后一个解),回溯算法会通过在上一步进行一些变化来丢弃该解,即“回溯”并尝试另一个可能的候选解。
- 分治算法(Divide and Conquer):
- 将一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。
2、计算机网络
这里说的计网主要是指TCP/IP协议栈,这是当今互联网和通信的基础,很多面试都会涉及这部分考察,另外这部分也是做很多通信开发的基础。
TCP/IP主要协议包括:
TCP/IP协议模型由四个层次组成,分别是应用层、传输层、网络层和网络接口层。以下是TCP/IP协议族中的主要协议及其作用:
一、应用层协议
应用层是TCP/IP协议集的最高层,负责处理特定的网络应用程序,如电子邮件、文件传输和网页浏览。应用层协议包括HTTP、FTP、SMTP、DNS等。这些协议定义了应用程序如何使用网络资源进行通信。
- HTTP(HyperText Transfer Protocol):用于在万维网(WWW)上传输超文本的协议。它是无状态的、面向对象的协议,基于请求/响应模型工作。客户端(通常是浏览器)向服务器发送HTTP请求,服务器处理请求并返回HTTP响应。
- HTTPS(HyperText Transfer Protocol Secure):HTTP的安全版本,通过TLS/SSL协议加密数据传输,确保数据的机密性和完整性。
- FTP(File Transfer Protocol):用于在网络上传输文件的协议。它支持文件的上传、下载和管理。
- SFTP(Secure File Transfer Protocol):通过SSH(Secure Shell)加密传输文件的协议,确保文件传输的安全性。
- SMTP(Simple Mail Transfer Protocol):用于发送电子邮件的协议。它定义了邮件如何从发件人传输到收件人的邮件服务器。
- IMAP(Internet Message Access Protocol):用于从邮件服务器读取电子邮件的协议。与POP3不同,IMAP支持在服务器上管理邮件。
- POP3(Post Office Protocol version 3):另一种从邮件服务器读取电子邮件的协议。与IMAP不同,POP3通常将邮件下载到本地设备并从服务器上删除。
- DNS(Domain Name System):用于将域名解析为IP地址的系统,是互联网的重要基础设施之一。
- DHCP(Dynamic Host Configuration Protocol):用于动态分配IP地址和其他网络配置的协议。
二、传输层协议
传输层负责提供端到端的通信服务。传输层协议包括传输控制协议(TCP)和用户数据报协议(UDP)。
- TCP(Transmission Control Protocol):提供可靠的、面向连接的服务。它确保数据完整、无损并且按顺序到达。TCP尽量连续不断地测试网络的负载并且控制发送数据的速度以避免网络过载。
- UDP(User Datagram Protocol):提供不可靠的、无连接的服务。UDP不对数据包是否已经到达目的地进行检查,并且不保证数据包按顺序到达。UDP协议传输效率高,但可靠性略低,适用于传输可靠性要求不高、体量小的数据。
三、网络层协议
网络层负责数据包的路由和转发。网络层协议包括因特网协议(IP)、地址解析协议(ARP)、互联网控制报文协议(ICMP)等。
- IP(Internet Protocol):最重要的网络层协议,它定义了数据包的格式和地址结构,并负责数据包的路由。IP协议是一种无连接、不可靠的分组传送服务的协议。
- ARP(Address Resolution Protocol):用于将IP地址解析为物理地址(如MAC地址),以便在局域网中进行数据通信。
- ICMP(Internet Control Message Protocol):用于发送错误和状态信息,如网络不可达、主机不可达等。
四、网络接口层协议
网络接口层负责与物理网络的接口,包括以太网、Wi-Fi等。网络接口层协议定义了如何在物理网络上传输数据帧,以及如何处理链路层的错误和冲突。网络接口层协议包括以太网协议、PPP协议等。
综上所述,TCP/IP协议族中的各个协议共同协作,确保了数据在网络中的高效、可靠传输。
3、操作系统
操作系统更是软件开发的重中之重,尤其是对于嵌入式开发者来说,如果你还不会操作系统,那务必得下功夫了。
操作系统开发重点(这里重点说下Linux系统):(重点我标出来了)
一、Linux操作系统基础
- 基本概念:理解Linux操作系统的内核、文件系统、进程管理、权限和用户管理等基本概念。
- 命令行操作:熟悉Linux命令行接口(CLI),掌握常用的命令,如文件操作、进程管理、网络配置等。
- Shell编程:学习Shell脚本语言(如Bash、Zsh、Ksh等),掌握脚本语法和逻辑,能够编写脚本来自动化日常任务和系统管理操作。
二、Linux系统编程
- 系统编程接口:理解并掌握Linux系统编程接口,包括标准库函数和系统调用。
- 进程与线程:深入理解Linux多任务编程中的多进程和多线程,以及进程间通信(如pipe、FIFO、消息队列、共享内存、signal、信号量等)。
- 同步与互斥:学习同步与互斥对共享资源访问控制的重要性,确保多个进程或线程能够安全地访问共享资源。
三、Linux网络编程
- TCP/IP协议:理解TCP/IP协议栈的工作原理,掌握socket编程接口。
- 网络编程API:熟悉Linux网络编程相关API,如TCP/UDP网络编程、Web编程开发等。
- 并发服务器:学习如何实现TCP协议服务器的编程方法和并发服务器的设计。
四、Linux内核开发
- 内核原理:深入理解Linux内核的工作原理,包括进程管理、内存管理、文件系统、网络子系统等。
- 内核模块编程:学习如何编写和加载内核模块,以便在内核空间运行自定义代码。
- 设备驱动开发:掌握Linux设备驱动的原理和框架,熟悉字符设备、块设备、网络设备等驱动的开发。
五、Linux开发工具与环境
- 编辑器与IDE:熟悉Linux下的文本编辑器(如Vim、Emacs)和集成开发环境(IDE,如Eclipse、Visual Studio Code)。
- 编译器与调试器:掌握GCC编译器和GDB调试器的使用,以便进行高效的代码编写和调试。
- 版本控制:熟悉Git等版本控制系统的使用,以便进行代码管理和团队协作。
六、Linux系统安全与优化
- 系统安全机制:了解Linux系统的安全机制,如SELinux、AppArmor等,确保系统的安全性。
- 性能优化:学习性能分析工具(如gprof、valgrind、perf等)的使用,掌握代码优化技巧,提高程序性能。
- 稳定性与可靠性:通过充分的测试(如单元测试、集成测试、系统测试等)来确保软件的稳定性和可靠性。
4、设计模式
设计模式可以提高代码的可复用性、灵活性、可扩展性。
最经典的教材就是23种设计模式,这里也不用全部记住,掌握最常见的几种就可以,其他可以用到再说。
23种设计模式有哪些:
23种设计模式是由Gang of Four(GoF)在《设计模式:可复用面向对象软件的基础》一书中提出的经典设计模式,它们分为三大类:创建型模式、结构型模式和行为型模式。以下是这23种设计模式的详细分类及介绍:
一、创建型模式(5种)
- 单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点。
- 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
- 抽象工厂模式(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
- 建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
- 原型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。
二、结构型模式(7种)
- 适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。适配器模式让原本由于接口不兼容而不能一起工作的那些类可以一起工作。
- 桥接模式(Bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
- 组合模式(Composite):将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和组合对象的使用具有一致性。
- 装饰器模式(Decorator):动态地给一个对象添加一些额外的职责。就扩展功能而言,装饰器模式比生成子类方式更为灵活。
- 外观模式(Facade):为子系统中的一组接口提供一个一致的界面,定义了一个高层接口,这个接口使得这一子系统更加容易使用。
- 享元模式(Flyweight):运用共享技术有效地支持大量细粒度的对象。
- 代理模式(Proxy):为其他对象提供一个代理或占位符,以控制对这个对象的访问。
三、行为型模式(11种)
- 模板方法模式(Template Method):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
- 策略模式(Strategy):定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。
- 命令模式(Command):将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。
- 责任链模式(Chain of Responsibility):为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。
- 状态模式(State):允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。
- 观察者模式(Observer):定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。
- 中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
- 迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。
- 访问者模式(Visitor):表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
- 备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。
- 解释器模式(Interpreter):给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。
相关推荐
- 知名软件变“木马”:2小时感染10万电脑
-
近日,腾讯电脑管家监测发现,一款通过“驱动人生”升级通道,并同时利用“永恒之蓝”高危漏洞传播的木马突然爆发,仅2个小时受攻击用户就高达10万。腾讯电脑管家可精准拦截该病毒攻击,管家团队也将持续跟踪该款...
- 腾讯电脑管家发布病毒预警:“驱动人生木马”爆发,2小时感染10万台电脑
-
新华网天津12月15日电(记者周润健)腾讯电脑管家15日紧急发布病毒预警,14日下午,腾讯电脑管家监测发现,一款通过“驱动人生”升级通道,并同时利用“永恒之蓝”高危漏洞传播的木马突然爆发,仅2个小时受...
- 全新“撒旦”勒索病毒来袭 瑞星推出独家解密工具
-
新华社北京7月26日电瑞星威胁情报平台近日发现多起国内用户感染“撒旦”勒索病毒事件。据瑞星安全研究人员介绍,该病毒运行后会加密受害者计算机文件,加密完成后会用中英韩三国语言索取1个比特币作为赎金,并...
- 新勒索病毒“WannaCry”疯狂来袭 乌克兰副总理电脑中招
-
据外媒报道,从6月27日开始,一种新勒索病毒再次疯狂来袭,已席卷欧洲多个国家,连乌克兰副总理的电脑都已中招。报道称,这轮病毒足以与五月席卷全球的勒索病毒“WannaCry”的攻击性相提并论。该病毒代号...
- 蠕虫病毒利用“永恒之蓝”漏洞传播 单位局域网受威胁最大
-
日前,火绒安全团队通过“火绒威胁情报系统”发现蠕虫病毒“Worm/Sharp”正在全网传播,其中在政府、企业、学校、医院等单位的局域网具有非常强的传播能力。该病毒通过“永恒之蓝”漏洞、多个电脑常用端口...
- 新病毒爆发:利用“永恒之蓝”传播,2小时感染10万台电脑挖矿
-
驱动人生发布的声明。据腾讯安全专家介绍,通过追溯病毒传播链发现,该病毒自12月14日约14点,利用“驱动人生”、“人生日历”等软件最早开始传播,另有约30%的传播通过“永恒之蓝”漏洞在局域网内进行主动...
- 逍遥安卓模拟器定制手游电脑版 手机电脑账号完全互通
-
从今年起大量回合制端游转向手游方向,无论是《梦幻西游》、《大话西游》、《神武》还是刚刚发行的《问道》手游,都是非常重度需要大量时间来做任务挂机升级的游戏。很多人习惯了端游的时候一个电脑可以多开的玩法,...
- 安卓模拟器绿色U盘移动版 公司玩游戏无痕迹
-
安卓模拟器已经不稀奇了!随着安卓手游的盛行,特别是《梦幻西游手游》之类的重度手游发布,玩手游花的时间也越来越多。用手机玩这些游戏存在着屏幕小、点量少、费流量还有容易被电话打断,在电脑上用安卓模拟器玩游...
- 苹果推出 iCloud 照片和视频转移服务:可转移至谷歌相册
-
IT之家3月4日消息据MacRumors今日报道,苹果公司本周推出了一项新服务,帮助iCloud用户方便快捷的将其存储的照片和视频转移到谷歌照片上。苹果在其支持文档中表示,用户可以登...
- NAS PK台,4核带m.2的威联通TS-264C vs 双核TS-462C
-
因为618年中大促看到威联通TS-264C和TS-462C这两机型售价差不多,就做个比较以供参考。毕竟作为自2007年以来就一直卖威联通的NAS老油来说,对威联通各NAS机型的识别还是相当全面的,对不...
- 前端学AI(七):构造 RAG 系统评估测试数据集
-
引言在基于DeepSeek+Chroma+LangChain开发一个简单RAG系统...
- 惨重教训!调查显示挪威“英斯塔”号宙斯盾舰撞油轮后本不必“丧命”
-
最新公布的调查报告显示,挪威皇家海军“英斯塔”号护卫舰2018年11月与油轮相撞后,如果其舰员接受了更好的损管训练,并且对舰艇的稳定特性更加熟悉的话,这艘宙斯盾型战舰本来是可以挽救的。↑挪威“英斯塔”...
- 「必买」盘点2021年男人们的败家清单,越“败”越香
-
心里总想买点啥?看看《必买》,全网最有料的场景种草指南。草原割不尽,春风吹又生。在过去的2021年,不断被各种数码产品种草,一直在买买买,剁手不停。大部分产品都经过详细的对比做足了功课,也有部分是一时...
- 实现浏览器播放rtsp视频流的解决方案
-
有同学问道:需要实时播放摄像头rtsp视频流,而浏览器不能直接播放,怎样解决?实现这个需求可以通过插件或者转码来实现。要实现这个目的,可以采用的方案非常得多,有商业的也有开源的,这里主要列举一些开源的...
- ISO9000你知道多少?
-
1ISO9000族标准是什么?ISO9000族标准是指由国际标准化质量管理和质量保证技术委员会(ISO/TC176)制订的所有国际标准。ISO9000族标准可帮助各种类型和规模的组织实施并有效运行质...
- 一周热门
- 最近发表
- 标签列表
-
- mydisktest_v298 (34)
- document.appendchild (35)
- 头像打包下载 (61)
- acmecadconverter_8.52绿色版 (39)
- word文档批量处理大师破解版 (36)
- server2016安装密钥 (33)
- mysql 昨天的日期 (37)
- parsevideo (33)
- 个人网站源码 (37)
- centos7.4下载 (33)
- mysql 查询今天的数据 (34)
- intouch2014r2sp1永久授权 (36)
- 先锋影音源资2019 (35)
- jdk1.8.0_191下载 (33)
- axure9注册码 (33)
- pts/1 (33)
- spire.pdf 破解版 (35)
- shiro jwt (35)
- sklearn中文手册pdf (35)
- itextsharp使用手册 (33)
- 凯立德2012夏季版懒人包 (34)
- 冒险岛代码查询器 (34)
- 128*128png图片 (34)
- jdk1.8.0_131下载 (34)
- dos 删除目录下所有子目录及文件 (36)