复试专业课问答题
中断的作用是什么
中断允许硬件设备或软件程序在特定条件下打断当前的处理器执行流程,并请求处理器执行特定的处理程序。
1)可以提高系统效率
异步事件处理: 中断允许处理器在执行当前任务时,能够响应外部设备的请求,而无需不断轮询设备状态。
避免忙等待: 如果没有中断机制,处理器需要不断检查设备状态(轮询),这会导致处理器资源的浪费。中断机制允许处理器在等待设备准备就绪时继续执行其他任务,从而提高系统效率。
2)实现多任务处理
任务切换: 中断是实现多任务操作系统的基础。操作系统通过定时中断(如时钟中断)来周期性地打断当前运行的进程,并切换到另一个进程,从而实现多任务并发运行的假象。
抢占式调度: 在抢占式调度中,中断允许操作系统在某个进程运行时间过长或优先级较低时,强制中断当前进程,切换到优先级更高的进程。
3)错误处理和异常管理
异常处理: 中断机制用于处理程序运行中的异常情况,如内存访问错误、除零错误、非法指令等。当发生异常时,处理器通过中断机制跳转到异常处理程序,处理错误并恢复程序运行。
系统稳定性: 通过中断机制,系统可以在发生错误时及时捕获并处理异常,避免程序崩溃,提高系统的稳定性和可靠性。
链表引入头结点的优点是什么
引入头结点后,可以带来两个优点:
① 由于第一个数据结点的位置被存放在头结点的指针域中,因此在链表的第一个位置上的操作和在表的其他位置上的操作一致,无须进行特殊处理。
② 无论链表是否为空,其头指针都是指向头结点的非空指针(空表中头结点的指针域为空),因此空表和非空表的处理也就得到了统一。
散列表如何处理冲突?
哈希冲突的解决方法包括:开放定址法和拉链法。当冲突发生时,使用某种探测技术形成一个探测序列,然后沿此序列逐个单元查找,直到找到该关键字或者碰到一个开放的地址为止。探测到开放的地址表明该表中没有此关键字,若要插入,则探测到开放地址时可将新节点插入该地址单元。其中开放定址法包括:线性探查法、二次探查法、双重散列法。
继承和重载的区别是什么?
继承是一种允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法的机制。子类可以继承父类的字段、方法,并且可以添加新的字段和方法,或者覆盖父类的方法。主要用于实现代码复用和类之间的层次化关系。
重载是指在同一个类中,允许定义多个同名的方法,但这些方法的参数列表(参数的类型、数量或顺序)必须不同。返回值类型不参与重载的判断。主要用于提供多种方式调用同一个方法,增强代码的可读性和灵活性。
操作系统中进程和线程的区别是什么?
| 特性 | 进程 | 线程 |
|---|---|---|
| 定义 | 程序的动态执行实例,独立的资源分配单位 | 进程内的执行单元,调度的最小单位 |
| 资源 | 独立的地址空间、栈、堆等 | 共享进程的资源,有自己的栈和局部变量 |
| 调度开销 | 开销大,切换慢 | 开销小,切换快 |
| 通信方式 | 需要 IPC 机制(管道、消息队列等) | 直接访问共享内存,需同步机制 |
| 生命周期 | 独立的生命周期,从创建到结束 | 依赖于进程,线程结束不影响进程 |
| 并发性 | 适合低并发场景 | 适合高并发场景 |
| 用途 | 独立运行的程序 | 提高程序的并发性和响应性 |
三次握手四次挥手的流程是什么?
三次握手建立连接: 连接请求报文(SYN=1),连接响应报文(SYN=1,ACK=1),第三个报文(ACK=1,此报文没有数据部分时不占序列号)
四次挥手释放连接: A首先发出连接释放报文、B发回确认报文,然后B继续发送未发送完的数据,发完后B再一个连接释放报文(ACK=1),A返回一个确认报文,B收到后就关闭,A等待一段时间后也关闭(避免超时重传情况)。
MAC地址和IP地址的区别是什么?
MAC地址是数据链路层的地址,用于标识网络接口硬件设备。是一个48位的全局唯一标识符,通常由设备制造商在生产时预先分配,并固化在网络接口卡(NIC)中。作用范围仅限于本地网络(局域网,LAN),用于同一网络段内的设备通信。
IP地址是网络层的地址,用于标识网络中的主机或设备。是一个逻辑地址,由软件分配,用于在IP网络中进行通信。作用范围可以是本地网络,也可以是全球范围(互联网)。
数据仓库和数据挖掘的作用是什么?
数据仓库是面向主题的、包含历史的、集成的、随时间变化的、不经常改变的数据集合,用以支持企业管理中的决策支持过程。
数据挖掘是在大量的、不完整的、有噪声的数据中,发现潜在的、有价值的模式和数据间关系的过程。
说出操作系统页表和段表的区别?
在管理方式上,页表采用分页管理,将内存划分为固定大小的页(如4KB),物理内存和虚拟内存都被分成相同大小的页框和页。而段表采用分段管理,内存按逻辑段划分,每个段大小可变,依据程序的结构(如代码段、数据段)分配。
在地址空间上,页表的虚拟地址空间是线性的,地址由页号和页内偏移量组成。段表的虚拟地址空间是二维的,地址由段号和段内偏移量组成。
数据链路层中的链路控制包括哪些功能?如果把数据链路层做成可靠的链路层有哪些优点和缺点?
包含功能: 链路管理、帧定界、流量控制、差错控制、将数据和控制信息区分开、透明传输、寻址。
可靠的链路层的优点和缺点取决于所应用的环境: 对于干扰严重的信道,可靠的链路层可以将重传范围约束在局部链路,防止全网络的传输效率受损;对于优质信道,采用可靠的链路层会增大资源开销,影响传输效率。
什么是死锁?为什么会产生死锁问题?
死锁是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。
产生死锁的原因: 竞争资源(对不可剥夺资源的竞争)和进程推进顺序非法(P1 拥有 A 申请 B,P2 拥有 B 申请 A)。
什么是拥塞控制和流量控制?
拥塞就是当前对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能变坏。拥塞控制就是防止过多的数据注入到网络中,使网络中的路由器或链路不致过载。
流量控制是为了让发送方的发送速率不要太快,要让接收方来得及接收。
可以通过哪些方法来进行拥塞控制?
TCP 的拥塞控制采取了慢开始、拥塞避免、快重传、快恢复四种算法。
慢开始算法的思路: 当主机在已建立的 TCP 连接上开始发送数据时,并不清楚网络当前的负荷情况。如果立即把大量数据字节注入到网络,那么就有可能引起网络发生拥塞。因此可以令初始拥塞窗口很小,然后由小到大逐渐增大发送窗口。拥塞避免算法是让拥塞窗口缓慢地增大,不像慢开始那样加倍增长。当出现超时,拥塞窗口就恢复初始值重新进行慢开始,且界限值减半。
快重传要求当接收方收到报文段后立即发送确认。当接收方收到的报文段出现丢失,它后面不论收到什么报文段,发回的确认号都是对失序之前的那个报文段的确认。当发送方连续收到3个对同一报文段的重复确认(表明下一个报文段未收到),就立即重传下一个报文段,这样就可以避免超时。对于一般的超时,界限值减半,拥塞窗口直接置为初始值;对于快重传情况下,界限值减半,拥塞窗口设置为和界限值一样,以实现快恢复。后面不论收到什么报文段,发回的确认号都是对失序之前的那个报文段的确认。当发送方连续收到3个对同一报文段的重复确认(表明下一个报文段未收到),就立即重传下一个报文段,这样就可以避免超时。
对于一般的超时,界限值减半,拥塞窗口直接置为初始值;对于快重传情况下,界限值减半,拥塞窗口设置为和界限值一样,以实现快恢复。
DMA和通道方式的区别是什么?
在DMA方式中,数据的传送方向、存放数据的内存始址以及传送的数据块长度等都由CPU控制,而在通道方式中,这些都由通道来进行控制。另外,DMA方式每台设备至少需要一个DMA控制器,一个通道控制器可以控制多台设备。
全局变量与静态局部变量的定义,以及静态局部变量能否屏蔽全局变量?
全局变量是在函数外部定义的变量,它在程序的整个生命周期中都存在,并且可以被程序中的任何函数访问。存储在程序的全局数据区中。全局变量的作用域是全局的,即它可以被程序中的任何函数访问,除非被局部变量或静态局部变量屏蔽。
静态局部变量是在函数内部定义的变量,但使用了static关键字。它与普通局部变量不同,静态局部变量的存储位置在静态存储区,而不是栈区。静态局部变量的作用域仅限于定义它的函数内部,不能被其他函数访问。
静态局部变量的作用域仅限于定义它的函数内部,不会影响全局变量的作用域,但可以在函数内部通过局部变量屏蔽全局变量。
TCP的滑动窗口是什么?有什么作用?
包括发送端的发送窗口和接收端的接收窗口,发送窗口内的信息可发送,发送窗口后沿收到确认号就前移至确认号位置,前沿受后沿位置及接收方发来TCP报文首部中的窗口字段影响。滑动窗口可以提高传输效率(减少确认的发送频率)、帮助实现流量控制的功能。
数据库的完整性是指什么?其作用是什么?完整性约束有哪些类型?
数据库系统中的各种约束构成了数据库的完整性约束,简称数据库的完整性。DBMS通过
完整性约束来防止合法用户在使用数据库时,向数据库注入不合法或不合语义的数据。
完整性约束可分为静态完整性约束和动态完整性约束。静态完整性约束是关于数据库正确状态的约束,应用于数据库的状态,故又称为状态。静态约束又可分为隐式约束、固有约束和显式约束
动态完整性约束是指数据库从一个正确状态向另一个正确状态的转化过程中必须遵循的约束条件,是对数据库变化过程的约束,也称变迁约束。
贪心算法的思想什么?能得到最佳结果嘛?
贪心算法是一种在每一步选择中都采取当前状态下最优(即最有利)的选择,从而希望导致结果是全局最优的算法。核心思想是通过局部最优解逐步构建全局最优解。
基本步骤为:
1分解问题:将问题分解为多个子问题,每个子问题都有一个局部最优解
2选择策略:在每个子问题中,选择当前看起来最优的解(局部最优解)
3逐步构建:根据选择的局部最优解逐步构建全局解。
4终止条件:当所有子问题都被解决后,算法结束,并返回最终的全局解。
贪心算法并不总是能得到全局最优解,它是否能得到最佳结果取决于问题的性质。当局部最优解的选择不会影响全局最优解的构建或者问题的最优解包含其子问题的最优解时,贪心算法可以获得最佳结果。
什么是DMA?
DMA(存储器直接访问)是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过CPU,也不需要CPU干预。整个数据传输操作在一个称为“DMA控制器”的控制下进行。CPU除了在数据传输开始和结束时做一点处理外,在传输过程中还可以进行其他的工作。这样,在大部分时间里,CPU和输入输出都处于并行操作,因此使整个计算机系统的效率大大提高。主要用于传输数据量大、CPU性能有限的情况下。
面向对象编程的基本思想是什么?
面向对象通常相对于面向过程而言。面向过程是具体化的,流程化的,解决一个问题,需要一步一步的分析,一步一步的实现。面向对象是模型化的,只需抽象出一个类,是一个封闭的盒子,在这里拥有数据也拥有解决问题的方法。需要的功能可以直接使用,不必一步一步的实现,至于功能是如何实现,无需关心。面向对象的底层还是面向过程,把面向过程抽象成类,然后封装,方便我们使用的就是面向对象。面向对象有三大特性:封装、继承、多态。
操作系统的调度算法包括哪些
1)先来先服务(FCFS按照请求的顺序进行调度。非抢占式,开销小,无饥饿问题,响应时间不确定(可能馆慢);对短进程不利,对I0密集型进程不利。
2)最短作业优先(SJF)
按估计运行时间最短的顺序进行调度。非抢占式,吞吐量高,开销可能较大,可能导致饥饿问题;对短进程提供好的响应时间,对长进程不利
3)优先级调度算法
为每个进程分配一个优先级,按优先级进行调度。为了防止低优先级的进程永远等不到调度,可以随着时间的推移增加等待进程的优先级
4)时间片轮转
将所有就绪进程按FCFS的原则排成一个队列,用完时间片的进程排到队列最后。抢占式(时间片用完时),开销小,无饥饿问题,为短进程提供好的响应时间;若时间片小,进程切换频繁,吞吐量低;若时间片太长,实时性得不到保证。
5)最高响应比优先
响应比=1+等待时间/处理时间。同时考虑了等待时间的长短和估计需要的执行时间长短,很好的平衡了长短进程。非抢占,吞吐量高,开销可能较大,提供好的响应时间,无饥饿问题。
6)多级反馈队列调度算法
设置多个就绪队列1、2、3...,优先级递减,时间片递增。只有等到优先级更高的队列为空时才会调度当前队列中的进程。如果进程用完了当前队列的时间片还未执行完,则会被移到下一队列。抢占式(时间片用完时),开销可能较大,对I0型进程有利,可能会出现饥饿问题。
介绍http的长连接、短连接和流水线连接
HTP短连接的核心是一次请求对应一次独立的TCP连接,客户端发起请求前会先与服务器建立新的1CP连接。当服务器完成请求处理并返回响应后,双方会立刻关闭该连接后续新请求需要重新执行建连流程。HIP长连接建立一次TCP连接后会持续保留,不会随单次请求响应完成而立即关闭常户端可在该连接上连续发起多次请求,服务器依次处理并响应,直到客户端或服务器主动显式关闭连接为止。
流水线连接这是长连接的特殊形式,基于已建立的单个TCP连接实现请求的连续发送。客户端无需等待前一个请求的响应结果,可连续发送多个请求,服务器则严格按照请求发送顺序处理并依次返回响应。
简述一下java的多态性质
多态是指同一个操作作用于不同的对象时,可以有不同的解释和不同的执行结果。在Java中,多态主要体现在方法的重载和方法的覆盖,以及通过父类引用调用子类对象的方法。方法重载是指在同一个类中,允许定义多个同名方法,但这些方法的参数列表(参数的类型、数量或顺序)必须不同。
方法覆盖是指子类重写父类中同名且参数列表相同的方法。子类方法覆盖父类方法时,必须保持方法名、参数列表和返回值类型一致。
多态具有提高代码的可扩展性、减少代码冗余、增强代码的灵活性等优点。
单cPU能不能实现多程序运行?为什么?
单CPU能够实现多程序运行,是因为操作系统通过时间片轮转、进程调度、上下文切换和多线程等技术,让多个程序轮流占用CPU时间,从而实现并发执行的效果。这种机制使得用户能够同时运行多个应用程序,而不会感觉到明显的延迟。
LSTM(长短期记忆网络)的概念
LSTM(Long Short-Term Memory,长短期记忆网络)是一种特殊的循环神经网络(RNN)架构,专门用于解决传统RN在处理长序列数据时的梯度消失和梯度爆炸问题。核心思想是引入“细胞状态”和三个“门”(输入门、遗忘门和输出门)来控制信息的流动。
面对对象的三大特性
面向对象编程的三大特性是封装、继承和多态。使得代码更加模块化、可复用、可扩展和易于维护,
封装是指将对象的属性(数据)和行为(方法)封装在一起,形成一个独立的对象类)。封装的核心思想是隐藏对象的内部实现细节,只通过对象的接口(方法)与外部交
继承是指一个类(子类)可以继承另一个类,继承是面向对象编程中实现代码复用和扩展的重要机制。
多态是指同一个操作作用于不同的对象时,可以有不同的解释和不同的执行结果,在Jjava中,多态主要体现在方法的重载和方法的覆盖,以及通过父类引用调用子类对象的方法
局部性引用原理(localityreferences)包括哪些?
局部性引用原理用于描述程序访问内存时的行为模式。指出程序倾向于访问局部区域的内存,这种局部性主要体现在时间和空间两个维度。
时间局部性是指如果一个内存位置被访问了,那么在不久的将来,这个位置很可能还会被再次访问。即程序倾向于重复使用最近访问过的数据和指令。
空间局部性是指如果一个内存位置被访问了,那么在不久的将来,与该位置相邻的内存位置也很可能被访问。即程序倾向于访问连续的内存区域。
c++异常处理机制
异常是指程序运行过程中出现的意外情况,如除以零、数组越界、文件打开失败等。C++的异常处理机制允许程序在遇到这些异常时,通过捕获和处理异常来避免程序崩溃。C++的异常处理主要通过try、catch和throw三个关键字来实现。try块用于标识一个代码块,该代码块中的代码可能会抛出异常。catch块用于捕获和处理try块中抛出的异常。throw关键字用于抛出一个异常。
c+的浅拷贝和深拷贝
浅拷贝是指创建一个新对象时,仅仅复制对象的值类型成员(如基本数据类型、非指针成员等),而对于指针类型的成员,只是复制指针本身,而不是指针所指向的内容。换句话说,浅拷贝只是简单地将对象的成员变量的值复制到新对象中。
深拷贝是指创建一个新对象时,不仅复制对象的所有值类型成员,还会递归地复制所有指针或引用类型成员所指向的整个对象或数据结构,从而产生一个与原对象完全独立、不共享任何内部数据的副本。
软件工程的生命周期
软件工程生命周期是指软件从概念化到最终退役的整个过程。它将软件开发过程划分为多个阶段,每个阶段都有明确的任务和目标,有助于系统化地管理和控制软件开发过程。主要包括以下几个阶段:
1.需求分析:软件生命周期的起始阶段,其主要任务是明确用户的需求,确定软件的功能、性能、界面等要求。
2.系统设计:根据需求分析的结果,设计软件的总体架构和详细设计。
3.编码实现:将设计阶段的详细设计转化为实际的程序代码。
4.测试:验证软件是否满足需求规格说明书的要求,发现并修复缺陷。
5.部署:将经过测试的软件安装到实际运行环境中,并进行必要的配置6.维护:修复软件运行过程中出现的缺陷,进行必要的功能改进和优化。生命周期模型主要包括:瀑布模型、迭代模型、敏捷模型、螺旋模型。
c廿为什么能实现动态多态而c不行?
C++提供了面向对象编程(0OP)的核心特性,如类、继承、虚函数和多态,而C语言是种过程式编程语言,缺乏这些面向对象的特性。
33.c如何实现动态多态
C++编译器为每个包含虚函数的类生成一个虚函数表(V-Table)。虚函数表存储了类的虚函数的地址。每个对象都有一个指向其类的虚函数表的指针(通常是隐藏的成员变量)。当通过基类指针或引用调用虚函数时,C++运行时会通过对象的虚函数表指针找到实际的虚函数地址,从而调用派生类的覆盖方法。
计算机中用于存储信息的部件
计算机中用于存储信息的部件包括主存储器(内存)、辅助存储器(硬盘、固态硬盘、光盘等)、缓存存储器、寄存器和闪存存储器。
主存储器也称为内存(RAM,Random Access Memory),是计算机系统中最直接与CPU交互的存储部件。它用于存储当前正在运行的程序和数据,CPU可以直接访问内存中的内容。辅助存储器用于存储不经常使用或需要长期保存的数据。与主存储器相比,辅助存储器的容量更大,但读写速度较慢。缓存存储器是一种高速存储器,用于存储CPU频繁访问的
航环利指。,客咨器是CPU内部的高进存储单元:国于在储CU当商正在处理的资柔冷令。闪存存储器是一种非易失性存储器,用于存储数据,即使断电后数据也不会丢失。虚拟为存是一种内存管理技术,它将硬盘空间的一部分作为内存使用。当物理内存不足时,操作系统会将部分数据从内存移动到硬盘上的虚拟内存区域。
对称加密和非对称加密
对称加密是一种加密方式,其中加密和解密使用相同的密钥。也就是说,发送方和接收方必须共享相同的密钥,才能完成加密和解密操作。应用于文件加密、磁盘加密、网络通信常用算法包括:AES(高级加密标准)、DES(数据加密标准)、3DES(三重DES)Blowfish、Twofish等。
非对称加密使用一对密钥:公钥和私钥。公钥用于加密数据,私钥用于解密数据。公钥可以公开分发,而私钥必须保密。常用于数字签名、密钥交换、加密通信。常用算法包括:RSA、ECC(椭圆曲线加密)、E1Gamal等。
了解K均值算法吗?
K均值算法是一种经典的聚类算法,将数据点划分为K个簇,使得每个簇内的数据点尽可能相似,而不同簇之间的数据点尽可能不同。K均值算法的核心思想是通过迭代优化簇的中心(均值),使得簇内数据点到簇中心的距离之和最小化。
软件设计的基本步骤
1)需求分析
需求分析是软件设计的第一步,也是整个软件开发过程的基础。需求分析的主要任务是明确用户的需求,确定软件的功能、性能、界面等要求。
2)系统设计
系统设计阶段的主要任务是根据需求分析的结果,设计软件的总体架构和详细设计。
1架构设计:确定软件的体系结构,包括模块划分、接口设计等。
2详细设计:设计每个模块的具体实现细节,包括算法设计、数据结构设计等。
3)设计评审
设计评审是软件设计过程中的一个重要环节,通过评审可以发现设计中的问题,确保设
4)编码实现
编码阶段是将设计阶段的详细设计转化为实际的程序代码。
5)测试
测试阶段的主要任务是验证软件是否满足需求规格说明书的要求,发现并修复缺陷。
6)部署
部署阶段的主要任务是将经过测试的软件安装到实际运行环境中,并进行必要的配置。
7)维护
维护阶段是软件生命周期中最长的阶段,主要任务是修复软件运行过程中出现的缺陷进行必要的功能改进和优化。
软件危机的概念
软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题,这些问题导致软件项目常常出现进度延误、成本超支、质量不达标、用户满意度低等现象。
聚簇索引和非聚簇索引
在数据库管理系统(DBMS)中,索引(Index)是一种用于提高数据检索速度的数据结构。索引可以显著加快查询操作的执行时间,尤其是在处理大量数据时。根据索引的结构和存储方式,索引可以分为两种主要类型:聚簇索引和非聚簇索引。
聚簇索引是一种特殊的索引,它决定了表中数据的物理存储顺序。在聚簇索引中,表中的数据行存储在索引的叶节点中,并且按照索引键的顺序排列。
非聚簇索引是一种独立于表数据存储顺序的索引。在非聚簇索引中,索引的叶节点存储的是指向表中数据行的指针(或行标识符),而不是数据行本身。
软件测试的目的是什么
软件测试是软件开发过程中一个至关重要的环节,主要包括发现缺陷、验证和确认软件的功能和性能、提高软件质量、降低风险、优化性能、满足法规和标准以及支持持续集成和持续部署。
是否了解知识图谱
知识图谱是一种大规模的语义网络,用于表示实体(如人、地点、事件等)及其之间的关系。它通过将数据结构化为图的形式,能够更直观地表示知识之间的复杂关系,从而支持更智能的查询和推理。常应用于智能搜索、推荐系统、自然语言处理、企业知识管理等领域。
什么是回归测试
回归测试是软件测试的一种类型,其主要目的是验证对软件的修改(如修复缺陷、添加新功能或优化性能)是否引入了新的问题,或者是否破坏了现有的功能
黑盒测试和白盒测试有什么区别?
黑盒测试:将程序看作黑盒,不考虑内部结构和接口等,面向功能进行测试白盒测试:针对程序结构、接口等特点,有针对的设计测试用例进行测试
说一个你了解的设计模式?结合项目举个例子?
增量式。我们首先完成了基础功能,如车内和车外的目标检测、双目测距等,然后添加目标跟踪、相对速度计算、报警模块,最后完成了web服务器的搭建和UI界面。
介绍一下MVC模式
MVC是一种软件设计模式,用于开发交互式应用程序,尤其是Web应用程序和桌面应用程序。将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器Controller)。有助于提高代码的可维护性、可扩展性和可测试性。
Model:最下面的一层,程序的数据
View:最上面的一层,给用户提供操作的界面
Controller:中间层,根据View指令输入,得到Model的数据,进行相应操作得到结果
指针和引用的区别
a.引用是别名,指针是地址
b.指针可以改变指向的对象(地址),引用与对象绑定后不能改变
c.需要为指针分配内存区域,引用不用。因为引用在初始化时绑定了已存在的对象
d.指针没有级数限制,引用只能有一级
程序的编译执行过程
预处理:对宏定义进行替换
编译:高级语言到汇编语言
汇编:汇编语言到机器语言
链接:将链接库与程序进行连接,合并成目标文件
(1)静态链接:.1ib,把静态链接库的代码全部放入目标文件
(2)动态链接:.d11,把调用的函数的所在文件、位置等信息放入目标文件
TCP和UDP的区别
(1)TCP是面向连接的,传输数据前需要建立连接。UDP是无连接的。
2)TCP只支持点对点,UDP支持点对点、一对多和多对一
(3)TCP面向字节流,UDP面向数据报。
(4)TCP传输是可靠的,UDP不可靠。
(5)TCP首部开销大于UDP,TCP最少20字节,UDP只需要8个字节
cPU的一个指令周期的流程是什么?
取指:从PC寄存器找到指令地址,再从该地址加载指令到寄存器
译码:根据指令寄存器中的指令,解析成要执行的操作
执行:执行译码后的结果
抽象类和接口的区别?
抽象类用于定义对象的本质身份和共享代码,允许包含具体方法和状态,通过继承实现单一路径的扩展;而接口用于定义对象的行为契约和能力,强调多实现和松耦合,主要声明抽象方法,支持多重继承以实现灵活的功能组合。
SDN面临的主要攻击风险包括哪些?
SDN攻击是针对软件定义网络架构的攻击手段,SDN因控制平面与数据平面分离、中心化管控的特性,新增了多处攻击面。
主要存在四类风险:
1.控制器易成单点故障遭入侵或 DDoS
2.南向接口被劫持伪造流表引发流量问题
3.北向接口及应用层的恶意应用下发违规策略
4.数据平面交换机因流表溢出等致拒绝服务。
因此 SDN 安全防护核心是加固控制器、加密认证接口通信、严格管控应用程序访问。
路由器以及分组交换机的工作流程
路由器和分组交换机都会接收数据分组,通过查表决定转发路径,然后将分组从相应端口送出,但路由器基于网络层IP地址和路由表进行跨网段转发,而交换机基于数据链路层MAC地址和MAC地址表在同一网段内高速交换。
0SI七层模型中数据链路层的功能,能做到什么和不能做到什么?
数据链路层在OSI模型中的核心功能是确保同一物理网络或链路中相邻节点之间的可靠、有序的帧传输。
能实现
1.将网络层下发的数据包封装成帧,并添加本层的首部和尾部;
2.通过MAC地址(物理地址)在直连的设备间进行寻址和帧传递;
3.在共享介质上通过介质访问控制(如CSMA/CD)协调多个设备有序发送数据;
4.利用差错检测(如CRC)发现比特错误并丢弃受损帧,同时提供基本的流量控制以避免接收方过载。
然而,不能实现的包括
1.跨网络路由(这是网络层的职责,它仅负责单跳传输)
2.端到端的可靠传输与重传(仅能保证单链路上的可靠性,整体可靠性依赖传输层);
3.处理数据内容(如加密、压缩,这是更高层的任务);
4.基于IP地址等逻辑地址进行寻址。因此,数据链路层是实现局域网通信的基础,但其作用范围仅限于本地网络链路。
介绍一种开源软件的协议
MIT协议主要允许用户做以下几件事:
1.可以自由地使用、复制、修改、合、出版发行、再授权及销售软件及其副本
2.可以将软件用于商业闭源项目而无需公开自己的源代码。
该协议唯一的核心限制是,使用者在所有副本或实质性部分中必须包含原始的版权声明和许可声明。因此,MIT 协议是“对用户最友好”的许可之一,极大地促进了代吗的共享和再利用,许多著名的开源项目(如jQuery、Node. js、Rails等)都采用此协议。
介绍数据库中第一范式和第二范式
第一范式(1NF)是关系数据库设计的起点,它要求表中的每个列都是原子的、不可再分的最小数据单元,并且每一行都是唯一的(通常通过主键保证)。其核心是消除重复组和多值属性,第二范式(2NF)在满足1NF的基础上,进一步要求所有非主属性必须完全依赖于整个主键,而不是部分依赖(针对复合主键的情况)
HTTP与HTTPS的区别,SSL/TLS工作原理
HTTP与HTPS最核心的区别在于安全性:HTTP是明文传输协议,数据在客户端与服务器之间以未加密形式传输,途径的所有网络节点都可窥探和篡改内容;而HTTPS本质上是"HITP over SSL/TLS”,通过在HTTP之下加入SSL/TLS加密层,对传输的数据进行加密、对通信方的身份进行认证、并对数据的完整性进行校验,从而有效防御窃听、篡改和冒充攻击。此外,HTTPS默认使用443端口(HTTP为80端口),且需要服务器向权威机构申请数字证书来证明其身份
SSL/TLS利用非对称加密的信任机制安全交换密钥,再使用对称加密进行高效的数据机密传输,从而为HTTP通信构建了一个安全的隧道。
从输入URL到页面显示,中间发生了哪些网络过程?
1.首先,浏览器会解析URL,从URL中提取出协议(如HTTPS)、主机名和资源路径
2.随后,它进行DNS查询,将主机名转换为服务器的IP地址(依次查询浏览器缓存、系统缓存、路由器缓存和DNS服务器)
3.接着,浏览器与服务器建立可靠连接,连接就绪后,浏览器发送HTTP请求(包含方法、路径、头部和Cookie),服务器处理请求并返回HTTP响应(状态码、头部和HIM文档)。浏览器接收响应后,会解析HTML、构建DOM树,同时加载并解析CSS构建CSSOM树,将两者合并为渲染树,然后布局(计算元素位置)并绘制像素,最终在屏幕上显示页面。在此过程中,浏览器还会根据HTML中的引用来并发加载额外的资源,并执行JanaSscript代码,最终完成一个可交互页面的呈现。
如何理解设计模式(如单例模式、工厂模式)?其应用场景是什么?
设计模式是针对软件设计中反复出现的特定问题,所提炼出的通用、可复用的解决方案模板,它代表了最佳的实践经验,能提升代码的可复用性、可读性、可扩展性和可维护性,其本质是面向对象设计原则(如开闭原则、单一职责原则等)的具体应用体现。
单例模式确保一个类只有一个全局实例,并提供一个统一的访问点。其核心应用场景是那些需要严格管控唯一资源或共享状态的情况。
工厂模式定义了一个用于创建对象的接口或父类,将对象的实例化过程延迟到子类或具体工厂中。其主要应用场景是当系统需要解耦对象的创建与使用,或者创建逻辑复杂多变时。
内连接、左连接、右连接的区别是什么?
内连接、左连接和右连接的核心区别在于它们组合两张表数据时,如何处理不匹配的行以及以哪张表为基准保留所有记录。
内连接:仅返回两张表中匹配条件完全成功的行。如果某行在左表或右表中没有对应的匹配行,则该行不会出现在结果中。其结果集是两张表的“交集’
左连接:以左表为基准表,返回左表中的所有行。对于左表中的每一行,如果在右表中找到匹配的行,则组合它们;如果右表中没有匹配项,则结果集中右表的所有列用NULL填充。因此,左连接确保了左表记录的完整性
右连接:是左连接的镜像,以右表为基准表,返回右表中的所有行。对于右表中的每一行,如果左表有匹配则组合,若无匹配则左表列用NULL填充。它确保了右表记录的完整性。
卷积神经网络(CNN)在图像处理中为何有效?
CNN适用于图像处理核心在于贴合图像的空间特征特性:其一通过卷积层局部感知、权值共享,大幅减少参数且精准捕捉图像局部特征;
其二池化层降维保留关键信息,降低计算量;同时多层堆叠能逐层提取从简单到复杂的深层特征,适配图像的层级化特征分布,高效完成识别、分类等任务。
解释Transformer模型的结构,为什么它在NLP中表现优异?
Transformer模型的结构其核心是一个完全基于自注意力机制的编码器-解码器架构,摈弃了传统的循环或卷积结构。主要组件包括编码器、多头自注意力机制、前馈神经网络、残差连接与层归一化和解码器
transformer在NLP中表现如此优异,主要原因在于:允许模型在计算序列中任意两个直接关联,这彻底解决了长距离依赖问题。Transformner的自注意力层可以同时计间的了位置帝列中所有位置的表示。这使其能充分利用GPU等硬件进行大规模并行计算,极大提升了前练速度和模型容量。多头注意力机制允许模型在不同子空间中共同关注来自不同位置的不司类型信息,从而学习到更丰富、更鲁棒的层次化特征表示。结构高度模块化,易于堆叠和扩展
什么是CDN?它是如何加速内容分发的?
CDN 指内容分发网络,它是一个地理上分布式的服务器网络,其核心目标是将网站或应用的静态及动态内容缓存并分发到离最终用户更近的地方,从而极大提升访问速度、可靠性和安全性。
CDN的加速原理主要通过以下核心机制协同工作:
1.边缘节点与缓存:当用户请求一个资源时,CDN系统会将用户智能地路由到地理上最近、网络质量最优的边缘节点。如果该节点已缓存了所需内容,则直接返回给用户,避免了回源站的长距离、跨运营商网络传输,这是最主要的加速手段。
2.智能DNS解析:当用户访问一个接入CDN的网站时,传统的DNS解析会被CDN的智能DNS系统接管。该系统不仅根据域名返回IP,更会综合分析用户的地理位置、各边缘节点的负载和健康状况以及网络实时拥塞情况,为用户选择并返回一个最优的边缘节点IP地址,引导用户连接到最佳节点。
3.内容预取与缓存策略:CDN会根据配置主动从源站将内容预取到各个边缘节点。同时,管理员可以精细设置缓存规则,确保热门内容始终驻留在边缘,而源站内容更新后能通过缓存刷新机制及时失效旧版本。
4.协议与传输优化:采用更先进的网络协议(如 HTP/2/3、QUIC)和优化技术进一步提升从边缘节点到用户设备的传输效率。

浙公网安备 33010602011771号