计算机本科 很多很多科目的总结

本文概述了计算机科学本科常见的知识点,包括浮点数比较、文件输入输出、前端开发的理解、图像处理、操作系统核心概念如进程、线程、死锁,以及数据结构、计算机组织、C语言、数据库基础。还探讨了物联网中的mqtt协议、ESP8266应用,并分析了健康码在疫情中的互联网应用。
摘要由CSDN通过智能技术生成

CN:

  1. ip地址如何转换成物理地址?

    是通过ARP地址解析协议来完成的。每个主机都有一个ARP高速缓存,里面有一张ARP表,表里存放的是在本局域网上的各个主机和路由器的IP地址到MAC地址的映射。

工作的过程是:

在同一个局域网中:

当主机A想向本局域网中的某个主机B发送信息时----> 就先在ARPg高速缓存中查看有没有主机B的IP地址----> 如果有就可以找到对应的MAC地址,再将这个硬件地址写入mac帧,然后通过局域网将该MAC帧发往这个硬件地址 ----> 如果没有就通过广播的方式,使同一个局域网里的所有主机收到ARP请求,从而找到主机B

在不同的局域网中:

就要通过ARP协议找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,再让路由把分组转给下一个网络。

 

2、 OSI参考模型与TCP/IP的区别

1) OSI有七层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP有五层,是将OSI的物理层和数据链路层合并为网络接口层,将会话层、表示层、应用层合并为了应用层。

         2)在网络层中:OSI模型是无连接和面向连接的,而TCP/IP是无连接的;

            在传输层中:OSI模型是面向连接的,而TCP/IP是无连接和面向连接的;

 

3、 什么是面向连接和无连接?

面向连接:面向连接有三个阶段,分别是建立连接、传输数据和释放连接

无连接:无连接只有一个阶段,即直接进行数据传输;

4、 5G的G是什么意思?

5、 安网线的啥?

 

6、 TCP和UDP的区别

 

7、 ARP和DNS有什么区别?

 

 

 

常见的

4 OSI参考模型(七层模型如何封装、解封装)(每一层的常见协议)

5 TCP/IP模型(是OSI的简化、简化了哪些层、相应的有什么好处)

6、 IP协议(主要特点)

7、TCP、UDP这两个协议的比较,TCP三次 握手(必问TCP UDP分别在哪一层)(三次握手为什么这样做)(TCP的拥塞阻塞协议、滑动窗口)

8、 常见的应用层协议(DNS、DHCP)

9、对称密钥、非对称密钥(要知道加密方式、两个什么时候应用、应用场景)

 

 

float x 与 0 的比较?

所以浮点数不能够判断相等,像 if(x==0)的这样的编码是不总是正确的,我们在判断浮点数相等时,推荐用范围来确定,若x在某一范围内,我们就认为相等,至于范围怎么定义,要看实际情况而已了,float,和double 各有不同

     所以const float EPSINON = 0.00001;

  if ((x  >= - EPSINON) && (x  <= EPSINON) 这样判断是可取的

     至于为什么取0.00001,可以自己按实际情况定义

 

输入输出文件这么表示?

文件方面一般包含:(fgetc,fputc)(括号表示这是一组,在一起使用的),(fgets,fputs),(fread,fwrite),(fscanf,fprintf)。

fgetc和fputc是对单个字符(类似char ch)进行调用的:

     fgetc的函数结构如下:fgetc(fp)(fp是定义的指针,如,FILE *fp; fp是指向一个文件的),fgetc是将文件中的字符进行调出,一般是ch=fgetc(fp),将里面的字符赋值给ch中。

   fputc的函数结构如下:fputc(ch,fp),fputc是将字符输入到fp所指向的文件中。

 

 

 

 

 

对前端的理解?

在网络平台上,展示、传递信息给用户,或可以跟用户进行交流的界面;

前端开发最基础的技术 html(5) css(3) javascript

做一个页面,html是基本,通过html语言 记各种标签 把文字、图片等信息展示出来,

用css ,加以修饰,让内容的展示更美观,有需要的时候用javascript 让用户可以跟页面进行“交流”;

html css javascript 的作用,也是一个前端开发最基础的工作;

 

图像处理方向?

对这个方向的理解:

在实际应用场合,采集的信息很多都是图像信息,比如指纹、条码、人脸、虹膜、车辆等等。

在应用场合,医学图像这一块,医疗器械的主要功能是成像,都会涉及到对图像的处理;

还有就是计算机视觉和模式识别方向,比如指纹识别、人脸识别、虹膜识别;

 

比方说一个成像设备,在输出图像之前需要对原始图像进行增强或者去噪处理,存储时需要对图像进行压缩,成像之后需要对图像内容进行自动分析,这些内容都是图像处理的范畴

 

 

带宽对计算机的意义?

带宽就是传输速率,是指每秒钟传输的最大字节数(MB/S),即每秒处理多少兆字节,高带宽则意味着 系统的高处理能力。

 

类就是具备某些共同特征的实体的集合,它是一种抽象的数据类型,它是对所具有相同特征实体的抽象。在面向对象的程序设计语言中,类是对一类“事物”的属性与行为的抽象。举一个例子说明下类,比如Person(人)就是一个类,那么具体的某个人“张三”就是“人类”这个类的对象,而“姓名、身高、体重”等信息就是对象的属性,人的动作比如“吃饭、穿衣”等就是对象的方法。总之类就是有相同特征的事物的集合,而对象就是类的一个具体实例。同时类有多态和继承,例如“人类”可以分为“男人、女人”,“老人、小孩”那么“男人、女人”就是“人类”的子类等等。

 

结构体

由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构体(struct)。”

 

 

 

 

 

 

 

OS

进程、线程

  1. 为什么引入进程?
  1. 为了实现多道程序的并发执行
  2. 多道程序下需要共享资源,程序在执行过程中会出现相互制约的关系,程序的执行就会出现间断性
  3. 而程序本身是一个静态的概念,所以就引入了进程这个动态的概念。从而更好的支持多道程序的并发执行。
  1. 什么是进程?
  1. 进程是系统中正在运行的一个程序,程序一旦运行就是进程。
  2. 进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间
  1. 进程组成?
  1. 每个进程都由程序段,数据段及PCB三部分组成
  2. PCB是一个进程存在的唯一标志,程序段是进程运行的程序的代码,数据段就是程序运行的一些相关数据
  1. 共享存储和管道的区别?
  1. 共享存储概念:通信进程共享一个存储空间
  2. 管道:是一个缓冲区,进程对管道进行读写操作
  3. 共享存储:可以同时被两端的进程读,而管道:不能同时被访问
  4. 共享存储:两端都能进行读或写,而管道:只能一端读,一端写,是半双工通信
  1. 程序和进程的区别?
  1. 进程:是系统中正在运行的一个程序;程序:是有序代码的集合
  2. 1个程序可以对应多个进程,但1个进程只能对应1个程序;
  3. 进程是动态的,而程序是静态的
  1. 进程和作业的区别?
  1. 作业:是从外存放到内存的一个过程,它可以包含一个或多个进程;进程:只是作业中的一部分
  2. 一个作业通常包括几个进程,几个进程共同完成一个任务,即作业
  3. 他们的区别是:进程是一个程序在一个数据集上的一次执行,而作业是用户提交给系统的一个任务
  4. 从调度来看:作业的调度属于高级调度,进程的调度属于低级调度
  1. 进程和线程的区别?
  1. 一个进程里面有多个线程;
  2. 在单位方面:进程:资源分配的基本单位,线程:CPU调度的基本单位
  3. 在资源方面:进程:拥有资源,线程:不拥有资源,同一个进程中的所有线程共享进程中的所有资源
  4. 在并发度方面:进程:同一进程内,不同进程间可以并发;线程:引入线程后系统并发度提高,吞吐量更大
  5. 在系统开销方面:进程:进程切换需要保留进程现场,线程:线程切换需要保留CPU线程,比进程开销小
  1. 高级调度、中级调度、低级调度?
  1. 高级调度【作业调度】:将后备队列的作业调度到内存中(外存à内存),等待进程调度
  2. 中级调度【内存调度】:将暂时不能允许的进程,调至外存,在满足运行条件时再调回来,即虚拟内存中的交换
  3. 低级调度【进程调度】:从就绪队列选择一个进程,分配处理机,即从就绪队列àCPU执行

 

 

 

 

 

 

 

死锁

  1. 死锁的必要条件
  1. 互斥
  2. 不可剥夺
  3. 请求和保持
  4. 循环等待
  1. 死锁处理?
  1. 死锁预防:限制申请资源的顺序

破坏四个必要条件

破坏不可剥夺:进程阻塞时要释放自己的资源,以后重新申请

破坏请求和保持:进程运行前要一次性申请完所需的所有资源(可能造成饥饿)

破坏循环等待:给系统中的资源编号,每个进程只能按照编号递增的顺序请求资源

  1. 死锁避免:限制分配资源的顺序

银行家算法:在资源的动态分配中防止系统进入不安全状态

  1. 死锁的检测和解除:

检测:通过化简资源分配图,有剩余边则存在死锁,没有剩余边则没有死锁

解除:通过释放资源的方法

      资源剥夺法、撤销进程法、进程回退法

  1. 死锁和饥饿的区别?
  1. 死锁:是指多个进程相互等待对方的资源而造成死锁;饥饿:是指进程一直得不到资源的分配而持续等待的过程
  2. 在资源方面:死锁:是指两个及两个以上的进程参与,强调的是资源分配的问题;饥饿:一个进程也可能饥饿,强调资源总体不足问题
  3. 在进程状态方面:死锁:死锁的进程一定是阻塞态;饥饿:饥饿的进程可能是就绪态可能是阻塞态

 

内存

  1. 大量数据如何存储
  1. 分配更多内存
  2. 用更小的样本

有时候并不是需要用到全部数据,可以先试着用这个小样本解决问题

  1. 更多内存:比如租用云端有数十几个G的机器,我个人认为这个方法比较实际
  2. 转换数据格式:以更紧凑的形式存储数据
  3. 使用关系数据库:关系数据库为存储、访问大型数据集提供了标准化的方法,我了解到这种方法对大型表格式数据集非常有效率
  1. 为什么要进行内存管理?
  1. 为了多道程序的并发执行
  2. 如果不对内存进行管理,容易导致内存数据混乱,以至于限制进程的并发执行
  1. 内存管理的功能?
  1. 内存空间的分配与回收:连续分配、非连续分配
  2. 地址转换:逻辑à物理
  3. 内存空间的扩充:覆盖、交换、虚拟
  4. 存储保护:比如利用界地址寄存器,来保证各道的运行互不干扰
  1. 进程运行的基本原理、要求?

编译、链接、装入

  1. 什么是覆盖技术?
  1. 作用:扩充内存
  2. 思想:用户程序分为固定区和覆盖区,将经常使用的活跃的部分放在固定区,即将要访问的段放到覆盖区,其余的放在外存中,在需要调用前再调入覆盖区
  3. 打破了之前必须将一个进程的全部信息装入主存后才能运行的限制
  1. 什么是交换技术?
  1. 作用:扩充内存
  2. 思想:分为文件区和交换区,主要是换入换出的过程,将处于等待状态的程序换出,将即将要用CPU的进程换入
  1. 覆盖 vs 交换?

覆盖是在一个进程或程序之间进行,而交换是在不同的进程之间进行的

  1. 什么是虚拟技术/虚拟存储?
  1. 定义:

将程序的一部分调入内存,其余部分留在外存,当需要访问的信息不存在内存时,由操作系统将需要的部分调入内存,然后继续执行

  1. 特征:

多次性、对换性、虚拟性

  1. 实现方式:

请求分页、请求分段、请求段页

  1. 大小如何决定?

虚拟内存的大小要小于内存容量与外存容量之和,要小于计算机的地址位数所能容纳的最大容量

  1. 为什么引入虚拟存储?

扩充内存

  1. 虚拟存储怎么解决问题?会带来什么问题?
  1. 方法:虚拟内存使用了外存上的空间来扩充内存的空间,通过一定的换入换出方式
  2. 问题:有可能发生抖动,就是在换入换出上如果选用了不合适的替换策略,就可能导致频繁地换入换出,大大降低系统性能
  1. 什么是局部性原理?
  1. 时间局部性:程序中的某条指令执行后,在不久之后还可能再次执行

实现:将近来使用的指令和数据保存到高速缓存中

  1. 空间局部性:程序中的某个存储单元一旦访问了,在不久之后其附近的存储单元也可能被访问

实现:使用较大的告诉缓存,将预取机制集成到高速缓存控制逻辑中

  1. 缺页中断和一般中断的区别?
  1. 缺页中断在指令执行期间产生和处理中断信号,而一般的中断是在一条指令执行完后才中断属于内部中断
  2. 一条指令在执行期间可能产生多次缺页中断
  1. 什么是抖动?

抖动是频繁地页面调度,刚刚换出的页面马上也有换入主存,刚刚换入的页面马上又要换出主存

主要原因是某个进程频繁访问的页面数目高于可用的物理块数

  1. 引入Cache的原因?

解决CPU与主存之间速度不匹配的问题;

  1. 什么是Cache?
  1. 是高速缓存,解决CPU与主存之间速度不匹配的问题
  2. 思想:Cache和主存都被分为若干大小相等的块,Cache容量远小于主存,它仅保存主存中最活跃的若干块的副本,Cache按照某种策略,预测CPU未来一段时间内想要访问的数据,并装入Cache中
  3. 工作原理:CPU发出读内存的请求时

如果Cache命中,就将地址直接转换为Cache地址

如果Cache不命中,则访问主存,并将这个块调入Cache中

  1. 什么是写策略?

由于CPU写Cache时,把Cache中的某个单元的内容改变了,但是这个单元对应的主存中的内容并没有改变,所以需要使用写策略处理这个现象

命中的写策略:写回法、全写法

未命中的写策略:写分配法、非写分配法

  1. Cache – 主存地址映射?

地址映射是将主存中的映射到Cache中

  1. 全相联映射:任意放
  2. 直接映射:只能放在规定的唯一位置
  3. 组相联映射:组内全相联映射,组间直接映射
  1. 虚拟内存 vs Cache

相同处:

    • 2
      点赞
    • 2
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值