学习笔记整理

本文仅用于作者学习与思考,若有不对,欢迎读者指正

操作系统

1 堆,栈有什么区别?

从数据结构的角度来看:

栈:在数据结构中,是一种受限的线性表,特点是后进先出,

堆:实际上就是优先队列的一种数据结构,第一个元素有最高的优先权

在数据结构中,有大根堆和小根堆的概念

概念:叶子节点大于(或小于)父节点

从内存分区的角度来看:

在C++中内存分为五大分区,分别是栈区,堆区,自由存储区,常量存储区,全局静态存储区

栈的使用与回收都是系统进行的,而在C语言中使用malloc在堆中申请空间,需要手动使用free释放,在C++中使用new在自由存储区申请空间,delete释放。

2进程和线程的区别

进程是系统进行分配资源和内存管理的基本单位,是一段程序在某一个数据集上面的一次运算,运行时,从磁盘中加载到内存。

线程是系统调度的最小单位,是进程的一部分。

区别:一个进程包括多个线程,线程是进程执行的每一一个小任务,进程切换时需要切换资源和内存,而线程切换时不需要切换资源和内存,只需要切换pc指针。

3 什么是死锁

死锁的定义:如果一组进程中的每一个进程都在等待仅由该组进程中的其他进程才能引发事件,那么该组进程是死锁的。

死锁的条件:
①互斥条件②占有和等待条件③不剥夺条件④循环等待条件

死锁的常见表现:

(1)多进程死锁:有A,B两个进程,进程A拥有资源1,需要请求正在被进程B占有的资源2,而进程B拥有资源2,又在请求资源1,两个进程都在等待对方释放资源后请求该资源,而相互僵持,陷入死锁。

(2)单线程死锁:进程A拥有进程1,而它又在请求资源1,而它所请求的资源1必须等待该资源使用完毕得到释放后才可被请求,这样,就陷入了自己的死锁。

解决死锁的方法:

①终止(或撤销)进程。终止系统中的一个或多个死锁进程,直至打破循环环路,使系统从死锁状态中解除出来。

(2)抢占资源。从一个或多个进程中抢占足够数量的资源,分配给死锁进程,以打破死锁状态

4 内存管理有哪些方法

常见的内存管理方式有分区存储管理,页式管理,段式管理,虚拟存储管理

连续存储管理,包括固定分区存储管理,非固定分区存储管理
分页存储管理
段式存储管理
虚拟存储管理

5 操作系统提供给程序员创建进程的接口有哪些

系统调用fork(),vfork() ,clone()

6 进程调度算法有哪些?

先来先服务,短作业优先,高优先权优先(可以动态优先,高响应比优先,也可静态优先权),基于时间片轮转(基于时间片轮转调度算法RR,多级反馈队列算法FB),最短剩余时间优先。

7 中断嵌套是什么;

指新的优先级更高的中断会去中断CPU上正在运行的中断程序,并且在新的中断结束后,返回到被中断点处继续执行。

8 调度什么时候发生?

①当进程需要等待某个资源(比如I/O设备)时,主动请求调度让出CPU

②当前的时间片用完时

③当进程状态状态发生改变时:比如,进程终止,进程睡眠

④进程从中断,异常及系统调用返回到用户态时。

9 操作系统的定义?

操作系统是管理计算机硬件与软件资源的计算机程序。

它提供:内存和资源的分配,控制输入输出设备,操作网络和管理文件,提供人机交互界面

10 一个文件在磁盘上,如何访问到

缺页中断
或者主动调用int 19H中断,将磁盘的数据读入到内存

当程序执行的指令或访问到的数据在内存中时可顺利执行;如果在磁盘中,需要系统自动将这部分信息装入,这称“部分装入”;如此刻没有足够的空闲内存空间,便把内存中不用的信息暂时移到磁盘上,这称部分替换。所以只要“部分装入”和“部分替换能够实现”,实现从磁盘中读入数据,来让CPU执行。
根据FCB汇集和组织形成的文件目录,文件目录将文件名称转化为磁盘中的存储位置,然后通过访问道磁盘中的数据就可以访问到了。

11 操作系统的知识结构,内容,包括哪些?

处理器管理,进程调度,存储管理,设备管理,文件管理

12 什么是进程,进程调度是调度谁,进程的工作状态

进程中程序关于一个操作数据集上的一次运行活动,同时,进程也是资源和内存分配的基本单位。

进程调度是调度谁:因为程序在CPU中是走走停停的,为了使CPU能够达到最大的使用效率,当某一个进程在运行过程中需要停止等待,比如说,需要等待I/O,而这时,访问外设的时候,时间就比较长,这时,该进程就会让出CPU的使用权,按照所规定的调度算法,选择在就绪队列的中的其中一个进程,将当前的CPU进程保存在PCB块中,以linux操作系统为例,就是调用shedul()中的switch_to()进程切换进程。

进程的工作状态:

有两种,一种是比较简单的,由运行态,就绪态,和阻塞态

另外一种是7种模式:有新建态,运行态,就绪态,和阻塞态,挂起就绪态和挂起阻塞态

13 为什么要有系统调用

在linux内核中,有实现系统功能的子程序。系统分为内核态和用户态,内核态实现系统功能,用户态实现应用程序,当用户态需要使用的系统资源时,比如访问I/O设备等,就需要系统调用,同时,设置内核态与用户态也是访止用户的态程序随意更改内核的数据。

14 说一下内存管理方式有哪些

连续分区管理,分页管理,分段管理,虚拟存储管理技术管理

15 请求分页页面置换算法列举?

LRU,LFU,FIFO 第二次机会替换算法 时钟算法 改进的时钟算法

16 叙述clock置换算法

用循环队列构造页面队列

初始化:每一个页设置一个引用位,页面被调入内存时引用位置为1,每一个页面被访问时内存引用位置为1
进行淘汰时,从指针指向的页面开始扫描,遇到引用位为1的页面,讲引用位置0;遇到引用位为0的页面,淘汰该页面。

若扫描循环队列,所有页面引用位均为1,则所有页面经过依次扫描引用位均置为0,指针也就回到开始扫描的地方,那下一次扫描一定有页面换出。

改进的clock有两个位,一个修改位,一是引用位

第一次扫描,找到未被修改且未被引用的的页,如果找了,就淘汰该页面
第二次扫描,找到第一个未被修改,且被引用的页,如果找了,淘汰该页,并将扫描过引用位为1的页,将该位置0
第三次扫描,一定可以找到一个淘汰页

17 虚拟存储的作用?为什么虚拟存储可以实现?

内存在计算机中的作用很大,电脑中所有运行的程序都要经过内存来执行,如果执行的程序很大或很多,就很导致内存消耗殆进。为了解决这个问题,拿出一部分硬盘空间来充当内存使用,当内存用完时,计算机就自动调用硬盘来当内存,以缓解内存的内存的紧张。

为什么虚拟存储可以实现?

操作系统可以痛过调用系统中断

18 多级存储系统的作用?

计算机系统中,运行越快的存储器件,价格越昂贵,寄存器的速度大于存储器,存储器存取速度远远大于磁盘,但是它们的存储容量是相反的,为了缓解储存容量,高速度,低成本之间的关系,在CPU与存储器之间加上cache,来解决cpu与主存储器之间的速度不匹配,在主存器与外存之间加一个TLB快表,使得计算看似扩展了更大的容量空间。

19 寄存器和存储器的区别

寄存器存储容量小,但是寄存器速度快

存储器存储容量比寄存器大很多,但是存取时间长

寄存器在CPU内,存储器一般只硬盘,U盘等,在CPU外,
寄存器存储的是直接操作数据,存储器中放的是指令和数据

20 操作系统中用来表示内存已被占用的数据结构是什么

根据操作系统所使用的存储技术的不同,所使用的数据结构表也不不同?
在固定分区存储管理中,内存分配表
在可变分区存储管理中,使用已分配区表和未分配区表
在分页存储管理中,使用内存物理块表用来记录页框的状态,管理内存物理块分布
在段式存储管理中,使用段表管理

21 系统调用与普通调用的区别?

计算机组成原理

1 单片机的引导过程

操作系统的系统的启动过程
当Linux 0.11 操作系统进入实模式,并从地址0xFFFF0开始自动执行程序代码,物理地址为0处进行初始化中断向量,然后将第一个扇区读入到内存的7C00处,然后从7c00处开始执行。

单片机的启动过程:
单片机上电或者复位后,CS被置为FFFFH,IP被置为0000H,cpu就从内存的FFFF0H处取出第一条指令,开始执行。

2 DMA控制器是主设备还是从设备,什么时候做主设备

有的时候是主设备,有的时候是从设备,

当CPU给DMA发送数据,字节数,此时他就是从设备。

当DMA控制总线,让外设与存储器之间传输数据时,就是主设备。

3 8259的中断过程

8259A有两种模式,一种是操作模式,一种是中断模式
单片机可通过端口的方式,CPU可发送in,out指令控制发送给8259进入中断模式,8259便接收中断向量号,通过中断判优选择结构选择紧急程度最高的中断进行相应,通过int端口给CPU发送中断请求,CPU收到后响应中断,8259给CPU发送中断向量号,CPU收到中断向量后进行执行。

4 动态存储和静态存储的区别

静态存储:指在编译时对数据对象固定的存储位置,运行时始终不变。即一旦存储空间的某个位置分配给某个数据名,则目标程序在运行过程中该地址就属于该地址名

由静态存储分配产生的数据区称为静态数据区

静态存储分配适用于不允许递归过程或递归调用,不允许可变体积的数据结构语言

静态存储分配的特点:简单,易于实现

动态存储:

指运行阶段源程序中的数据对象分配存储位置

实行动态存储分配的语言特点

允许递归过程

允许可变数据结构

允许用于自由申请内存以及释放

5 设计CPU思路

设计思路:

要想设计CPU,就要设计一个的简易指令系统,在根据指令搭建对应的数据通路,在数据通路的基础上实现控制逻辑,下一步是加上流水线,划分流水线,紧接着解决流水线中冲突的问题,提高流水线的效率,最后解决CPU异常的问题。

6 关于高速缓存 Cache 的两种写 入方法是什么

什么是cache,cache内存与CPU之间很小的一个缓存,用于存放主存中最近经常使用得数据,用于缓解CPU于主存之间的速度,大大提高了CPU得运行效率。

写回法:命中,直接修改cache内容,只有当此行被换出时才写回主存。没命中时,从内存中分配一块给 cache,对擦车进行写。

全写法:当cache命中时,cache与主存同时发生修改,当cache没命中时,有两种方法,一是要访问的内存数据的那一块分配给cache后,cache和内存同时修改;或者只修改内存。

写一次法:第一次使用全写法,后面都是用写回法

7 嵌入式系统和普通的系统区别在哪

区别1:类型

普通系统:应该指实实在在的一般电脑安装的系统

嵌入式操作系统:指“看不见”的操作系统,形式多样,应用领域广泛,按应用进行分类;

区别2:组成

通用:通用处理器,标准总线和外设,软硬件相对独立

嵌入式:面向特定应用的微处理器,总线和外设一半集成在处理器内部,软硬件紧密结合,具有很强的专用性,必须结合实际系统进行合理的裁剪利用;

8 嵌入式系统用什么语言写,什么是嵌入式

C/C++,可以控制,可以操作或辅助操作机器和设备装置,是一种专用计算机
汇编语言

9 单片机为啥叫单片机

将运算器,存储器,控制器,输入输出,集成到一块硅芯片中,该芯片具有完整的基本计算机的功能,所以称为单片微型计算机,简称单片机

10 外部中断CPU该如何处理

CPU从外部中断源接收到中断后,CPU在满足中断的条件下,发送中断响应,并关中断不再响应其他中断。CPU寻找中断源是哪个设备,找到后,保存当前CPU的状态,以及各种寄存器的状态,将PC转移到中断处理程序的地址,完成中断处理程序之后,恢复现场,打开中断,继续开始的中断点执行。

计算机网络

1 一个访问网络的过程

当在网站上输入了地址后,浏览器便会向本地域名服务器请求解析,若本地域名服务器没有,则本地域名服务器以客户的方式向根域名服务器发送请求报文解析请求,根域名判断在DNS.abc的域,将权限域名服务器的地址发送给本地域名服务器,本地域名器向权限域名服务器发送连接请求,权限域名服务器找到后,将域名的IP地址发送给本地域名服务器,本地域名服务器收到后,保存下来,并将IP发送给主机,主机便于IP地址所在的从机建立TCP连接请求,经过三次握手,主机便下载到了html,并以图形化的方式呈现给用户一个界面

2 DHCP协议的作用

DHCP(动态主机配置协议)作用:动态分配IP

从我的理解:

首先客户端问附近的服务器有ip地址码

服务器回答,说有啊,服务端就发一一个ip过去

客户端就申请使用这个ip

服务端就确认

简单介绍下DHCP

A 客户端要IP,发送第一个报文discover

B 发送一个offer回应它,可以提供IP

A 就发送一个request请求报文

B 服务器收到后,如果可以,就发送一个ACK确认

3 网络OSI的七层结构

物联网,链路层,网络层,运输层,会话层,表示层,应用层

5 rarp的作用,相对应的协议是什么,地址解析的过程。

RARP通过发送反向解析的MAC地址,其他RARP服务器接收到后,在一张映射表中查询,若有,返回的数据中包含了该设备的所需的IP地址,

相对应的协议是arp;

地址解析过程:

当主机A打算给主机B发送IP数据报时,A在缓存区中查看是否有无主机B的IP地址,如有,直接查出其对应的硬件地址,将该硬件地址写入MAC帧,如果没有,就使用目的MAC地址为FF-FF-FF-FF-FF的帧来广播ARP请求,可以使同一个局域网的所有主机收到ARP请求,当B主机收到后,就给A发送响应分组,分组中就包含了该IP地址与MAC地址的映射关系。

5 发微信用的是TCP还是UDP,为什么,所需的IP地址。

看发送的文件,当发送一些聊天文字的时候,数据比较小,采用哦个UDP报文传输,当发送一些几十兆几百兆的视频,由于数据比较大,一个报文放不下,所以需要使用TCP传输

6 路由器和交换机的功能然后他们的区别

路由器用于大型网络之间的互联,路由转发,拥塞控制等

交换机用于局域网内部之间的互联。

区别:

路由器可以隔离冲突域,也可以隔离广播域

交换机可以隔离冲突域,不可隔离广播域

路由器是网络层设备

交换机是数据链路层设备

7 TCP拥塞的解决方式,分别解释一下

慢启动:当新建TCP连接时,拥塞窗口CWND初始化为1,表示一个数据包大小,源端按cwnd发送数据,每收到一个ACK确认,cwnd窗口数就+1,在一个RTT时间内,CWND就会增加一倍,即CWND随着RTT呈指数增长。

拥塞避免:当cwnd达到ssthresh时,在此阶段,发送方每接收一个ACK确认,CWND就增加1,CWND就会随着RTT呈现线性增长

当出现由超时指示丢包时,拥塞窗口变为1,开始慢启动过程。这样就可以迅速减少主机发送到网络中的分组数。

快重传和快恢复:当收到3个以上的重复ACK确认时,说明有可能有数据报丢失,于是需要立刻重传该丢失的数据包,这就是快重传。更新当前的ssthresh为当前CWND的1/2,然后将CWND变为原来的1/2,开始拥塞避免阶段,即随着RTT呈线性增长,这个过程就是快速恢复阶段。

8 TCP为什么三次握手

为什么三次握手而不是两次握手,这是为了解决已失效的建立报又发送到了服务端。如果采用两次握手,试想一下出现这样一种情况,客户端向服务器第一次发送数据,由于网络原因,这个数据包走了一条比较长的链路,客户端对该数据包的时间到时,就重新发送一个建立请求报文,此时网络又好了,于是服务端接收到了第二次建立连接请求的报文,于是服务段发送确认,并反向发送连接请求,客户端再发送一个确认,此时建立连接之后,双方互相发送信息,再通过四次挥手,断开连接,此时第一次走了好远的数据报文,又到了服务端,服务段以为客户端又要建立连接,于是就打开了连接,便发向确认,而客户端自己又没发送请求建立连接,所以客户端就把这个确认丢掉,但是此时服务端打开了连接,一直在等待客户端发送数据过来,这也就服务端的资源,而网上的主机很多,这样就造成了很多不必要的浪费。

9 用自己的话讲TCP连接到底是什么

TCP:传输控制协议,就是为了保证互联网通信的双方能够可靠传输,所以TCP协议就制定了可靠的传输协议,想慢开始,快回复,拥塞控制,快重传

数据结构

1 描述一下你学过的排序算法

插入排序

①:直接插入,折半插入,希尔排序

②基于交换的有
冒泡排序和快速排序

③基于选择的有
简单选择排序和堆排序
基数排序和归并排序

冒泡排序 :一个循环,从前到后比较,当后面的一个值比前面的值小,交换,再循环循环上面的过程直到数据有序。

快速排序:设两个指针,i,j分别指向待排序的数据的两头,左边不动,右边指针左移找到一个比左边指针小的值交换,左边指针移动,找到一个比右边指针大的值交换,直到i>停止。

选择排序:假设待排序的数据是L[1…n],第i次从L[i…n]中选取最小或者最大的值与L[i]交换,直到所有数据有序

堆排序:先更具堆的要求,建立大根堆或者小根堆,拿小根堆为例,对建立好的初始堆排序,每次将堆中最后一个元素与第一个元素交换,再进行一次堆调整,接着,把倒数第二个与一个元素交换,重复,直到堆满足小根堆和大根堆定义

基数排序

把数据根据相同的各位收集在一起,对每组收集的数据进行插入排序,最后对所有数据进行插入排序

归并排序:设排序有n个数,把所有待排序的数据,两两和并,得到n/2个长度为二或者1的有序表,重复,直到得到长度为n的序表为止。

2 数据结构的顺序结构有哪些

顺序表,队列和栈

3 给一个链表,如何确定这个链表有环?

遍历这个链表,将访问过的节点标记已访问,如果继续遍历到已访问过的结点时,则有环,否则,当遍历结束时即遍历到空时,说明该链表无环。

4 数据结构如何使链表逆置

只需要遍历一个链表,使用头插法插入到表中

5 你能描述一下数据结构具体有哪几种吗?

线性表:

顺序存储—顺序表

链式存储 —链表

栈,和队列

二叉树,平衡二叉树,haffuman树,完全二叉树,

深度优先遍历,广度优先遍历

6 佛洛依德算法 迪杰斯特拉算法

佛洛依德算法:

计算多源点间的最短路径

令 g [ u ] [ v ] 表 示 u 到 v 的 距 离 , 找 到 一 个 k 点 , 使 g [ u ] [ v ] > g [ u ] [ k ] + g [ k ] [ v ] , 则 g [ u ] [ v ] = g [ u ] [ k ] + g [ k ] [ v ] 令 g[u][v]表示 u到v的距离,找到一个k点,使g[u][v]>g[u][k]+g[k][v],则g[u][v]=g[u][k]+g[k][v] g[u][v]uvk使g[u][v]>g[u][k]+g[k][v],g[u][v]=g[u][k]+g[k][v]

重复该步直至所有结点均已遍历

迪杰斯特拉算法:求源点到其他结点的最短路径

先初始化d[i],d[i]为源点A到其他结点的权值,不直接相连为无穷大

计算,.

如 果 找 到 一 点 k , 使 得 d [ i ] > [ 0 ] [ k ] + d [ k ] [ i ] , 则 将 d [ i ] = d [ 0 ] [ k ] + [ k ] [ i ] , 每 找 到 一 个 k , 就 放 入 集 合 中 , 重 复 以 上 步 骤 , 直 到 所 有 结 点 均 在 集 合 S 中 如果找到一点k,使得d[i]>[0][k]+d[k][i],则将d[i] = d[0][k]+[k][i] ,每找到一个k,就放入集合中,重复以上步骤,直到所有结点均在集合S中 k使d[i]>[0][k]+d[k][i],d[i]=d[0][k]+[k][i],kS

数字电路

数字逻辑主要学了哪些东西

**BCD编码:**用4位二进制数来表示1位十进制数中的0~9这10个码数,用二进制编码的10进制编码。

**反演规则:**与变非,非变与,原变量变反变量,1/0互换

**对偶规则:**与变非,1/0互换

**什么是最小项?**与或表达式

n个变量X1,X2…Xn,每个变量都以它得原变量或非变量得形式在乘积项中出现,且出现一次。

**什么是最大项?**或与表达式

n个变量X1,X2…Xn,每个变量都以它得原变量或非变量得形式在和//项中出现,且出现一次。

**两个的关系:**最小项对应最大项取反

卡诺图:是与变量的最小项对应的按一定规则的方格图,,每一个方格对应一个最小项的有或无

逻辑门电路 与 或 非 异或和同或

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kzRjwhW3-1589637931309)(C:\Users\Mr. chen\AppData\Roaming\Typora\typora-user-images\image-20200304125810990.png)]

MOS管:的开关特性相当于一个由UGS控制的无触点开关。

逻辑代数

组合逻辑电路

触发器

时序逻辑电路

脉冲波形的产生与变换

数模与模数转换

半导体存储器

数字逻辑基础,组合逻辑电路,常用组合逻辑功能器件,时序逻辑电路

触发器

6 组合逻辑电路和时序逻辑电路区别(电路图的区别和性能特性的区别)

组合逻辑电路:任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关

时序电路具有记忆功能,时序电路的特点是:输出不仅取决于当时的输入值,而且还与电路过去的状态有关。

电路图上时序逻辑电路多了一个存储器件。

7 大信号和小信号的区别

大信号和小信号是根据放大器动态范围来说的信号分类。

大信号体现的特性是直流的静态工作点,其直流阻抗就是V/I = b/a

小信号体现的是静态工作点的斜率,可以成△V/△I

静态工作点:指的是输入信号为零时,电路处于直流,电压的数值在三极管特性曲线上表示
为一个确定的点

8 模电分析方法应该先分析交流还是直流,为什么,怎么进行分析

遵循先直流,后交流的原则,直流是基础,交流是目的,只有静态工作点Q合适,保证方法信号不失真,进行交流分析才有意义。

静态工作点Q的作用:

①确定放大电压和电流的静态值

②选取合适的静态工作点可以防止电路产生非线性失真

C语言:

1 数据结构中线性表有哪些?

线性表,栈,队列

2 还有快排和冒泡的原理自己他们的空间复杂度是多少

快排㏒2n,冒泡 O(1)

C++方面:

1 几种方法写阶乘;

3种,static,递归,循环

2 定义一个结构体,里面一个int类型成员,一个char,int占四位,char占一位,那么在Linux占几位

8个字节,char 定义了一个字节后,再定义一个int 类型,int的为4个字节,要存储再4的倍数的存储单元种,所以编号为1,2,3的字节要填充,int定义的从4开始。

3 请设计算法统计一个二进制数中1的个数

两种方法:

第一种是:设置一个变量count,将二进制放入string变量中,遍历string变量的每一个字符,当这个字符等于1是,conut++

第二种方法是:C++中有一个bitset,直接用bitset定义的二进制变量调用count就可以得出1的个数

4 递归的含义,递归能不能替代循环,递归需要做什么?

递归其实就是一个函数直接调用或间接调用自己过程。

递归可以替代循环,递归需要压栈,存放下一条指令的地址以及函数的参数

递归可以改写成循环,有些递归只需要一个循环就可以实现,有些递归需要循环+栈,需要辅助空间记录过程中的,某些数据才可以。

5 堆栈需要用的什么

bp,ss

6 printf函数在汇编中怎么实现

在汇编中,先把printf的参数,从右往左压入栈中,再根据栈中,格式,计算对应格式所占的空间,再调用system_call ,来实现输出

7 printf函数的参数格式,长度等等

%d %i %u %f %ld %lf c%G c %X %x %s

8 描述斐波那契序列算法和

算法①:

使用递归,当n<=1返回n

当n>=2时 f(n) = f(n-1)+f(n-2)

调用f(n)

if n==1 return faci(1);

​ else f(n) = f(n-1)+f(n-2)

算法②:

使用迭代的方法:

循环 1 到 n

{
当前值 = f(i-1) + fi;

f(i-1) = fi;

f(i) = 当前值;
}

9 汉诺塔算法

算法:有三个柱子ABC,n个盘子在A柱子上

将A上面n-1个盘子借助于C,移动到B,

将A上最下面的一个盘子移动到C

再将B上的n-1个盘子借助于A移动到C(此时问题的规模就变小了,但还是同样的问题规模)

10 C语言中你习惯定义全局变量还是局部变量

一般的话,为了方便管理,我会尽量为了模块编程,尽量使各个模块低耦合,定义局部变量使用

如果实在是

11 编译的过程是什么

词法分析, 语法分析, 语义分析及中间代码生成,优化,目标代码生成

12 专业学了啥

编程语言学了:C,C++,java,php,C#

计算机基础课学了:数据结构,操作系统,数据库,计算机组成原理,数据库,计算机网络

应用型课程学了web前端,web服务端,andriod开发,linux 0.11内核注释

硬件学了一点:数字逻辑,模拟电路与电子设计,单片机

自己看过嵌入式系统原理,传感网原理与技术,proteus,DXP,

13 嵌入式课程教了啥

大学没有嵌入式课程

但是自己看过相关的书,什么是嵌入式,家里的冰箱,微波炉点,计算机系统嵌入

14 斐波那契递归和迭代区别是啥

递归:自己调用自己,迭代:反复替换

递归和迭代都是有重复,只是重复的不同,迭代显式使用重复结构,而递归通过重复调用函数实现。

递归与迭代都是基于控制结构:迭代用重复结构,而递归用选择结构

递归在遇到基本情况停止,迭代在循环条件失效时停止

时间复杂度,用递归来求,时间复杂度O(2n),迭代时间复杂度O(n)

15 递归的定义及优缺点

16 C 语言的 3个基本结构是啥

选择结构,循环结构,顺序结构,

17 全局变量和局部变量分别存储在哪里

堆,栈,自由存储区,静态/全局变量存储区,常量存储区

18 数组和指针的区别是什么

很多区别:

声明一个数组,编译器将根据数组的大小为他分配内存空间

声明一个指针,编译器只为指针本身保存内存空间

另一方面:如果声明一个数组int a[]; 和声明一个指针 int *b;

表达式b++可通过编译,而a++无法通过编译,因为a是一个常量。

19 c++的继承方式

三种继承方式:

public:父类成员在子类中均可使用

protected:父类的公有成员变为保护成员,其他成员保持不变

private:父类所有成员在子类中变为私有成员

20 .请简述C,C++语言有何区别和联系

C先出现,C++是在C上扩充,C是C++的子集,C++是C的超集

C是面向过程,C++是面向对象

C++在C的基础上,增加了很多关键字,比如bool ,const,protected等等

malloc和free替换成了new和delete

21 .简述面向对象有哪些好处

优点:易于维护,复用,扩展,由于,面向对象有封装,继承,多态的特性,可以设计出低耦合的系统,使系统易于维护,更加灵活。

缺点:性能比比面向过程低

22 .简述类和对象

对象是对客观事物的抽象,类是对对象的抽象,类是一种抽象的数据类型。

它们的关系是,对象是类的实例,类是对象

23 .什么是重载

重载:就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或方法。

重载的作用:

不用为了对不同的参数类型或参数个数,而写多个函数。多个函数用同一个名字,但参数列表,即参数的个数或数据类型可以不同,调用的时候,虽然方法名字相同,但是可以根据参数自动调用相应的函数

24 .C++里什么是friend?

用friend可以声明一个友元函数或者友元类,通过友元函数或或者友元类可以访问一个分装了类中的成员,尽管,friend破坏了类的封装性,但是为了数据共享,提高程序的效率和可读性,这种破坏也是很有必要的。

25 Java和c++的异同

相同点:都是面向对象的思想,都有封装,继承,多态等特性

不同点:
1.java为解释性语言,程序源代码经过java编译器编译成字节码,然后又JVM解释成机器指令,然后执行。
C/C++为编译性语言,源代码经过编译,汇编,链接后生成可执行的二进制代码,可直接执行。
因此java的执行速度比C/C++慢,但java能够跨平台执行,C/C++不同。

2 . java是纯面向对象语言,除了基本数据类型外,其他类型都是类,而C++兼容面向对象和面对过程,可以定义全局变量和全局函数,而java没有

3.java不支持C++中的多继承,但java引入了接口的概念。

4 java不支持运算符重载,而C++语言支持运算符重载。

5 .java中没有指针的概念,C++有指针的概念

26 Java与c++的类、继承有什么相同和不同

重载:C++提供了运算符重载,而java并不提供

继承:C++支持多重继承,这是C++的一个特征,他允许多父类派生一个类。java只能单继承,但是java通过可以实现多接口,来变相实现了多继承。

27 面向对象中什么封装,多态,继承

封装:隐藏对象属性和实现的细节,仅对外公开接口,控制在程序中属性得读和修改得访问级别,将抽象得到的数据和行为相结合形成一个有机得整体类

多态:用同一相同的指令调用不同的方法,这样的称之为多态,需要使用到virtual关键字,使得虚函数在运行时动态绑定。

继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法,对象的一个新类可以从现有的类中派生,这个过程称为类的继承。新类称为原始类的派生类,而原始类称为新类的基类或者父类。

数据库

1 数据库有几种锁

加锁是实现数据库并发控制的一个非常重要的技术。

为什么要上锁?

当事务在对某个数据对象进行操作前,先向系统发出请求,对其进行加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其它的事务就不能对此数据对象进行更新操作。

数据库中有两种类型的锁:

排它锁和共享锁。

共享锁的数据对象可以被其他事务读取,但不能修改

排它锁:其他的事务不能对它读取和修改。

2 数据库的事务

什么是数据库事务?
数据库是指操作多个数据项的一组数据库操作序列,这组序列要么全部执行,要么全部失败,是一个不可分割的工作单位。

有四个特性:ACID

a:原子性

c:一致性

i:隔离性

d:持久性

3 常用的数据库有哪些?

MySql,SQL server,Ocacle,,Access,redis,HBase

4 数据库的主码外码?

主码和外码是用来实现参照完整性的,外码的数据项需要参照主码的数据项来操作,具体实现是创建数据库中时表间创建关系

1.参照关系比如学生表的学号时学生表的主键,是成绩表的外键,成绩表的学号参照学生表的学号录入的,也就是,如果学生表没有的学号,成绩表是无法录入的

2.级联操作,当删除主表里面的学号时,从表里面的那个学号会响应的自动删除,修改。外码参照主码修改

5 数据库范式的定义以及区别

第一范式:表中的每一个属性都是一个原子,不可再分。

第二范式:(无重复的行)在满足第一范式的基础上,每一个元组必须可以被唯一地区分,非主属性完全依赖于主键

第三范式:在满足第二范式的基础上 ,要求一个数据库表中不包含已在其他表中亦包含的非主关键字信息,不能存在非关键字字段对一候选关键字段的传递函数依赖。

非主属性不存在传递依赖于码和不存在部分依赖于码。

(巴斯范式):在第三范式的基础上,数据库表中如果不存在任何字段对任一候选关键字段的传递函数依赖。不存在任何字段对任意候选字段传递函数依赖

离散数学

1 用离散数学解释下主成分分析是啥

主程序程序分析(PCA)是一种降维方法,通常用于通过将数量很多的变量转化为仍包含集合中大部分信息的较少变量来降低数据集的维度。

2 离散数学关于群的定义

对于<G,*>

若G关于*封闭

G上运算*结合律

G关于*存在么元e

如果对任意a属于群,a*b等于e,b属于群

则称代数系统<G,*>为群

其他

2 一个方形桌子砍一刀后有几个角?

还有5个角

3 解释机器学习

机器学习其实是一个程序,只是这个程序可以根据输入的数据不断进化,然后通过获得经验来处理未曾见过的数据

4一个逻辑问题,10框苹果,有9框每个半斤重,有一筐每个四两,如何通过只称重一次,找出那个不一样的

( 55 ∗ 5 − m ) = 45 ∗ 5 + 4 ∗ 10 (55*5-m)=45*5 + 4*10 (555m)=455+410

等式左边是若10篮子是5两的总质量(单位:两)-多计算的两数 = 称重的总两数

什么是均值?**

是平均数?一组数据之和除以该数的个数

7 讲下你的毕设

学会一种,敢于探索的进程,因为我们当时单品机技术也是我们专业的选修课,老师只是把我们引入们

4KB的 E2PPROM 光照定时使用它存储数据,掉电不会丢失。

我的毕业设计是软硬结合的,后面又补充了一些物联网的技术

做的毕业设计的名字是基于单片机控制的智能窗帘系统,控制单元用的STC89C52,做了三个主要的模块,一个是时钟模块,第二个是感应模块,第三个是远程控制模块。

10 学校,专业是啥,专业多少人,排名多少

GPA 3.4/4 学校是江西省省会南昌的一所南昌航空大学 专业72 12

11 特征值是啥

如果一个矩阵乘以一个向量 = 一个值乘以该向量,则称该值为该矩阵的特征值

14 做过什么项目问了

15 队列和链表相比的缺点

16 你最喜欢的专业课是什么?

​ 计算机网络和C++

17 怎么求sin 0.1

用泰勒公式,把sin的展开式写出来,可以通过编程来计算

18 你学过这个专业相关得专业课有哪些**

计算机组成原理,单片机

19 相比于门外等着的人,你觉得你的优势是什么(英语)**

Frist ,my major is computer and science,so I have some koneledge about my major

second,I choose the major because I have intense interest,I ever get access it

the

20 为什么选择这个方向

这个要从我在大学期间做毕业设计开始,大学我选了一个基于单片机控制的智能窗帘控制系统,因为一般单片机控制的不能联网,所以我在网上找到了一个物联网这个东西,当时也感到特别感兴趣,自己特别相想,实现通过一个手机App实现的智能窗帘,怎么,完成了大部分,也终于交上了大学期间最满意的答卷,因为我们学校的我们专业并没有开设有关物联网的课程,学的联系硬件最相关的还算是计算机组成原理,所以单片机我们当时学的是专业选修课,因为这门使用汇编学的的,当时上这门课写的程序都是用汇编写的,而汇编我们没上这门课,所以当时学的不好,在大四毕业设计选课题的时候,为了给我的毕设加上一个联网模块,让设备从云端获取时间,并且同过手机App远程控制它的开合。从那时候觉得,特别有成就感,当时就做了一个智能台灯,最后也实现了。

前沿技术

21 极大似然函数的作用:

可以根据极大似然函数可以求得极大似然估计值,即用已知的总体和样本结果,反求样本最有可能发生的概率。

22 一个箱子,放了一个白球,一个黑球,每次取一个便放回去,问至少有一次是白球的概率是多少;

1-2-n

23 双聚类 启发式搜索 k均值聚类

双聚类算法:

光谱联合聚类:

在矩阵中,找到的值高于其它行和列中的值,每行和每列只属于一个双聚类,因此重新排列行和列中的这些高值,使这些分区沿着矩阵对角线连续显示。

启发式搜索:

利用当前与问题有关的信息作为启发式信息,这些信息是能够提升查找效率以及减少查找次数的。

如何利用这些信息?

定义一个估价函数h(x)。h(x)是对当前状态x的一个估计,表示x状态到目标状态的距离。

1.h(x)>=0

2.h(x)越小表示越接近目标状态;

3.如果h(x) == 0,说明达到目标状态

k均值聚类:

K均值聚类算法:是一种迭代求解的聚类分析算法,其步骤是,欲将数据分为k组,则随机选取K个对象作为初始聚类的中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。重复以上步骤,直到

①没有对象被重新分配给不同的聚类

②没有聚类中心在发生变化

③误差平方和局部最小

24 学过哪些前沿课程 课程内容是什么 人工智能是什么

大数据:是指数据的获取,分析,管理,计算超出了当前数据库软件工具的处理能力范围的一种数据集合。

特点:大,多样,有效度密度低,高速,真实性

初级阶段有:分布式计算技术,HADOOP,分布式存储技术原理,MAPREDUCE

hadoop就是一种分布式计算的解决方案

比如说从1TB或者1PB的数据中寻找关键词,通常可能要消耗几天,但是使用hadoop只需要几个小时,hadoop将数据发送到sou各个HDFS(分布式文件系统中),各个分布式文件处理后,再返回,这就大大缩小了搜索时间。

内容是什么?

25 数据挖掘有什么应用

什么是数据挖掘?

数据挖掘就是从海量的信息中利用有效的算法提去需要的信息。

应用:就我们生活中熟知的网上购物,用户可以根据以往其他用户大量评价,来计算机决定该物品是否值得购买~

27 机器人的定义是啥

自动执行工作的机器装置,或者可以运行预先编写的程序的机器。能够代替人类的工作,比如基本家务,或者高空作业,高危作业等。

28人工智能是啥

人工智能研究,模拟,延伸人的技术,方法,理论的一门技术科学。

29 人工智能的避障算法是啥

比较热门的有:遗传算法,神经网络算法,模糊算法

神经网络:是一种模仿生物神经网络的结构和功能的数学模型或计算模型

模糊算法:没有根据经典控制理论那样把实际情况加以简化从而建立数学模型,而是通过人的经验和决策进行相应的模糊逻辑推理。

30 python特殊的数据类型

列表,元组,字典,集合

31 机器人的定义。

机器人:是自动执行工作的机器装置,既可以接收人的指挥,又可以运行预先编排得程序,能够协助人类的工作。

32 人工智能的定义

研究和发开用于模拟,延伸和扩展人智能的理论,方法,技术的一门技术科学。

33PLC与FPGA的中文名称。

PLC:可编程逻辑控制器

FPGA:可编码门列阵

34 设计web服务器;

和客户交流,确定好需求分析

系统设计:程序设计+前端UI+数据库设计

35 机器学习?

机器学习,赋予机器学习的能力,一台机器通过一定数量的训练,来实现能够根据已知的数据,来解决未知的事情,根据已知的样本情况,来实现相应的功能

比如说,十字路口的红绿灯,可以设计成,将所有通过这个红绿灯的情况记录在车的系统中,车不用人控制,遇到一种情况,自己与系统的系统中的所有样本比对,从而,装上了机器学习的机器,就会自己做出判断,选择如何做出相应的对策。

36 计算机视觉的看法

就是赋予机器具有自然视觉能力的学科把,将图像输入到计算机中,计算机处理,理解,研究图像信息,从而对外界做出相应的反应。

37 .什么是传感网?

我们生活中到处都网络互联,手机到路由器,路由器到路由器,等等再到手机,而传感网是互联网是一个部分,它是物联网的一个很重的模块—感知模块,他从各个节点接收数据,处理后,可以存储,再汇聚到汇聚节点,汇聚节点通过卫星发送到服务器,人们就可以再远程去监控,或者判断具体事务的情况啊。

38 蒙特卡洛求不规则图形面积

比如一张图,有不规则的图形,可以用散点法,也就是蒙特卡洛,比如在上面撒芝麻,看看有多少芝麻在图上,然后找比例求面积

39 复变函数的卷积公式

应该有两个函数,根据这两个函数求第三个函数,求这个函数平滑后的面积,也就是求翻转平移后的面积。

40 傅里叶变换

将一个函数或者一个信号,看成若干个小信号或者若干个三角函数叠加,从时域和频域叠加都可以组成原来的信号。

41 泰勒公式的展开,n取到多少怎么确定

展开到直到抵消不了为止

42 什么是蚁群算法?

通过正反馈机制寻找最优解,这个最优解是全局最优解,可以与运筹学结合起来用,比如说TSP(旅行商问题),指派问题

43 空间解析几何中的四维空间和解析集合讲了什么

我觉得应该有点到体积距离,三位以上的方程把,比如说,二维的圆,三位中球的界面是二维的圆,四位中,四位对应的是珍,

算法设计与分析

什么是递归算法

①程序调用自身的编程技巧称之为递归,通常一个过程或者一个方法在定义或说明中直接调用或间接调用自身的一种方法。通常,它把一个大型的问题层层化为相类似的并且规模较小的问题求解,递归策略只需要较少的代码实现就可描述出问题中所需要的多次重复计算,大大减少了代码量。

②递归函数函数需要设置出口,当递归到子问题不能再分解时,就返回。

什么是分治算法?

①把一个大问题划分成K个小问题,如果K个小问题还可以划分,则再把它们分别划分成K个更小的问题,直到问题规模足够小,小到可以直接求解,然后把小问题合并成原问题的解。

②分治算法要注意:

小问题小到一定规模可以求解

划分的小问题应该可以合并成原问题的解

划分的小问题应该具有最优的子结构

划分的小问题应该相互独立性

什么是贪心算法?

贪心算法:把大问题拆分成为同类的更加简单求局部最优解的问题,贪心问题求解的最终可能是整体的最优解。贪心算法不适合对所有问题进行求最优解。贪心算法在每一步上能获得局部最优解,但有时产生的不一定是最优的,所以贪心算法不要回溯。

什么是回溯算法?

回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:按照深度优先搜索的策略,从一条路往前走,能进则则进,不能进则退回来,换一条路往前走。

什么是分支限界算法?

分支限界的基本思想,就是对有约束条件的最优化问题的所有可行解空间进搜索,把全部可行的解空间不断分割为越来越小的分支,并为每一个分支计算一个界,每次分支的时候,对于不满足限界函数的分支不予考虑,从而缩小了搜索范围。

什么是动态规划问题?

动态规划基本思想是,将原问题分解相类似且规模较小的子问题,在求解过程中,记录下子问题的解,用子问题的解,一步步求出原问题的解,相比于分治算法,动态规划算法,减少了相同子问题的计算次数。

政治

什么是核心价值观?

富强 民主 文明 和谐
自由 平等 公正 法治

爱国 敬业 诚信 友善

什么是两学一做?

学党章党规,学系列讲话,做合格党员。

什么是一个中心,两个基本点?

以经济建设为中心,坚持四项基本原则,坚持改革开放。

前沿技术?

5G站点的开发,截止于2020年5月12日,中国已建设站点19.8万个。

5G可以应用于各行各业,我们也将迎来,智慧城市,车联网,智慧医疗,以及享受8K视频体验

什么是区块链技术?

区块链技术是在多方无需互信的环境下,通过密码学技术让系统中所有参与方协作,来共同记录维护一个可靠的数据日志的方式。

什么是比特币?

这个就要举一个粒子,比特币也是一种货币,在这个系统里面,就好比我现实中,没有银行这个系统一样,每一个网络的节点都负责记录网上所有的几张,系统就会奖励其中记账最快的节点,奖励比特币,所以网上的各个节点通过算法平计算能里。

什么是优先级反转?如何解决?

指高优先级的进程要去访问一个低优先级使用的资源,而低优先级的正在访问,使得高优先级的进程就要陷入一种等待与阻塞状态。
使用优先级天花板或者优先级继承的方法解决。

优先级天花板:每一个信号设置一个优先级天花板,优先级天花板是指优先级高于使用该信号的所有任务,当任务得到该信号时,将优先级设置位优先级天花板的值。

优先级继承:当一个任务阻塞了一组任务时,若阻塞任务中存在高优先级任务,将该任务的优先级设置位阻塞任务中的最高的优先级的值。

为什么要有泰勒展开式?对计算机学科的意义是什么?

可以使用泰勒展开式的无限个多项式对某个函数求近似,计算机科学中在openCV中进行模拟曲线可以用的到

线性代数中坐标变化的意义是什么?能解决什么问题?

线性代数可以表示图像中的数值,可以对矩阵进行变化,例如对图像进行二值化,灰度化等。

一个桶装8斤油,另一个有3斤与5斤桶,怎么就分成两桶4斤油?

先将8斤油倒入5斤桶中,此时3 0 5

再将,5斤油倒入3斤油桶中,再将3斤油桶的油倒入第一个桶中,得到了,6 0 2

接着将2倒入3斤油桶中,再将6斤倒入五斤油桶中,就得到了,1 2 5
此时只需要,将5斤倒入一斤3斤桶,合并1,3就可以得到两个4 斤油了

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页