- 以下就是复试必备的问题,都是本科期间学过的内容的总结,包括数据库,以及408(计算机组成原理,操作系统,数据机构,计算机网路),还有软件工程导论,java设计模式,搞定这些,至少专家问答部分就容易很多,本文章只负责提出问题,答案都自己总结吧
- 数据库
- 数据库的概念
- 数据管理技术的发展
- DBMS的功能
- 数据模型的分类,数据模型的组成
- 数据结构
- 数据操作
- 完整性约束
- 三级模式两级映射
- 关系模式的表示方式
- 完整性约束
- sql概述
- 索引用什么实现
- where和having
- 视图的特点
- 视图的作用
- 数据库完整性和数据库安全性
- 数据库中的不安全因素 1
- 自主存取控制和强制存取控制
- 审计日志
- 数据库在完整性方面应该具有的功能
- 4个范式
- 数据库设计的六个阶段
- 数据字典:对数据库中数据的描述,是dbms中的一组系统表,不是数据本身,数据字典在需求分析阶段建立,是进 行详细的数据手机和数据分析得到的,并在数据库设计过程中不断修改,充实,完善,必须强调用户的参与
- ER集成时的冲突
- 重组织重构造
- 模式分解
- 函数依赖
- 无损连接
- 什么是事务
- 事务的四大特性
- 故障的分类
- 恢复的实现技术
- 转储
- 日志
- 系统故障和介质故障的恢复过程
- 检查点技术
- 数据库镜像
- 并发控制,不并发控制带来的后果
- 三级封锁协议 不可重复读最高级
- 死锁的检测和预防
- 可串行化和冲突可串行化
- 两段锁协议
- 意向锁
- 操作系统
- 操作系统的目标和功能(什么是操作系统)
- 操作系统的四大特征
- 并发
- 异步
- 共享
- 虚拟
- 操作系统的发展和分类
- 系统调用
- 大内核和微内核
- 操作系统运行机制
- 核心态和用户态
- 内核
- 时钟管理
- 中断机制
- 原语
- 中断和异常
- 中断的流程
- 死锁的必要条件
- 死锁预防,避免,检测和解除
- 进程
- 线程
- 进程和线程的区别
- 进程通信方式
- 三级调度
- 作业调度
- 内存调度
- 进程调度
- 进程调度算法
- 使用信号量实现进程同步和互斥
- 程序执行过程(将用户程序变为可在内存中执行的程序的步骤)
- 链接方式
- 装入方式
- 绝对装入
- 可重定位装入
- 动态时运行装入
- 覆盖和交换
- 连续分配方式
- 单一连续分配
- 固定分区分配
- 动态分区分配
- 首次适应算法
- 最佳适应算法
- 最坏适应算法
- 循环首次适应算法
- 非连续分配方式
- 分页
- 分段
- 段页式
- 虚拟内存管理
- 请求掉页
- 页面置换
- 基本分页和请求分页
- 页面置换算法
- 先进先出
- 最近最久未使用
- 时钟置换算法
- 最佳置换算法
- 逻辑地址翻译的过程
- 快表
- 磁盘调度算法
- 先来先服务
- 最短寻道时间有限
- scan
- look
- I/O控制方式
- 程序查询方式
- 中断方式
- 存储器直接控制方式
- 通道方式
- spooling技术
- 计算机网络
- 计算机网络的主要功能
- 硬件资源共享
- 软件资源共享
- 用户通信
- 分布式计算
- 主机间通信方式
- C/S 客户端服务器方式
- P2P 对等方式
- 电路交换,报文交换,分组交换
- 计算机网络性能指标
- 时延
- 发送时延
- 处理时延
- 传输时延
- 传播时延
- 带宽
- 时延
- 计算机网络提供的服务的三种分类
- 可靠不可靠
- 连接不连接
- 确认不确认
- ISO和TCP/IP
- 七层
- 四层
- 香农和奈氏准则
- 香农:极限码元传输速率
- 奈氏:考虑噪音的情况下的极限数据传输率
- 透明传输
- 就是传输过程中,对外界透明,我们只需要提供数据,而不用管理数据的具体传输方式
- 封装成帧的方式
- 差错控制
- 端到端和点到点
- 端到端:进程,高级
- 同步通信和异步通信
- 同步通信:时钟同步
- 异步通信:要加控制信息,发送方随时发,接收方随时接收
- 流量控制
- 就是限制发送反的速率
- 流量控制的方法
- 停止等待
- 后退n帧
- 按序接收
- 累计确认
- 选择重传
- 只重传超时的数据
- 逐一确认
- 可靠传输机制:确认和超时重传的方法
- 介质访问控制:
- aloha:不监听信道,想发就发
- csma:载波监听,多路访问
- 1坚持
- 非坚持
- p坚持
- csma/cd 局域网 检测道碰撞发生就停止发送数据 截断二进制指数退避算法
- csma/ca 无线网络 避免碰撞
- 数字数据编码为数字信号
- 归零
- 非归零
- 反向不归零
- 曼彻斯特
- 差分曼彻斯特
- 拓扑结构
- 星型:可靠性低,共享能力差,单点故障
- 总线型:故障敏感但是容易排查故障,方便扩充机器,以及方便定义接口规则
- 环型:线路和设备比较节省,但是通信速度慢,单点故障
- 树型:便于隔离故障
- IP网际互连协议,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务
- 版本
- 首部长度
- 总长度
- 片偏移
- 标识
- 目的ip
- 源ip
- 生存时间
- ipv4和ipv6
- IPv4的地址位数为32位,IPv6采用128位
- ppp
- HDLC和ppp协议的区别
- ppp面向字节,不可靠,没有序号和确认机制,支持多种传输协议,可以实现身份验证
- HDLC面向比特流,可靠
- 中继器,集线器,网桥,交换机
- 路由器的功能
- 动态路由算法
- RIP
- OSPF
- 网络层转发分组的流程
- ICMP协议(网际控制报文协议)
- 差错报告报文的种类
- 终点不可达
- 源点抑制
- 时间超过
- 参数问题
- 改变路由
- 不发送差错报文的情况
- 组播和特殊地址
- 数据包分片
- 差错报文出错
- 差错报告报文的种类
- ip地址和mac地址
- 所以也就有了ARP地址解析协议
- DHCP(应用层协议,UDP,c/s)动态主机配置协议
- 发现
- 提供
- 请求
- 确认
- UDP
- TCP
- 三次握手协议
- 四次握手
- 慢开始+拥塞避免
- 快重传+快恢复
- 应用层:定义了运行在不同端系统上的应用程序进程如何相互传递报文。
- 计算机网络的主要功能
- 计算机组成原理
- 计算机系统的组成
- 控制器,运算器,存储器,输入,输出
- 冯诺依曼机
- 使用了存储程序的概念
- 早期以运算器为核心.现代以存储器为核心
- 指令都已二进制存储,操作码和地址码同等地位
- 顺序执行
- 编译和解释
- 计算机工作的过程
- 机器语言,汇编语言,高级语言
- 指令执行过程
- 取指
- 分析
- 执行
- 多级存储系统
- 内存 cache
- 内存辅存
- RAM ROM
- DRAM SRAM
- DRAM的刷新方式
- 集中
- 异步
- 分散
- 那些技术可以提高cpu访存速度
- 多端口存储器
- 单体多字
- 多体并行
- 局部性原理
- 时间局部性
- 空间局部性
- cache
- 主存cache映射
- 直接映射
- 全相联
- 组相联
- 主存替换算法
- 随机
- 先进先出
- 近期最少使用
- 最不经常使用
- cache写策略
- 写命中
- 写回法:只写缓存
- 全写法:内存和缓存都写
- 写不命中
- 写分配法:搭配写会法,数据先调入cache
- 非写分配法:只写入内存,搭配全写法
- 写命中
- 多级cache
- 离cpu越近,越快,越小
- 给逻辑地址,转换为物理地址的过程
- 指令通常分成取指,译码, 访存,执行, 和写回五个阶段
- 流水线概述
- 流水线特点
- 影响流水线的因素
- 结构冲突:多条指令同一时刻争用同一资源形成冲突
- 暂停时间周期
- 准备个数据和指令寄存器
- 数据冲突:当后继指令需要用到前面指令的执行结果时发生的.
- 暂停时钟周期
- 数据通路
- 控制冲突
- 转移延迟:将转移指令与前面和转移指令无关的指令调换位置
- 结构冲突:多条指令同一时刻争用同一资源形成冲突
- 精简指令集(必须实现流水线)和复杂指令集
- 指令寻址
- 引入总线结构的好处
- 什么是总线宽度、总线带宽、总线复用、信号线数?
- cpu功能
- 指令控制
- 操作控制
- 时间控制
- 数据加工:对数据进行运算
- 中断处理
- cpu 响应中断应具备哪些条件?
- 处于开中断状态
- 外设有中断请求
- 当前指令执行完
- 中断响应优先级和中断处理优先级分别指什么?
- 程序中断和调用子程序有何区别?
- I/O控制方式
- 计算机系统的组成
- 数据结构
- 软件工程导论
- 软件的定义
- 软件危机
- 软件需求分析的任务是什么
- 瀑布模型
- 快速原型模型
- 增量模型
- 螺旋模型
- 喷泉模型
- 维护
- 测试
- 提高软件质量的措施
- 大数据相关知识
- Hadoop
- MapReduce:MapReduce是一种计算模型,该模型可以将大型数据处理任务分解成很多单个的、可以在服务器集群中并行执行的任务,而这些任务的计算结果可以合并在一起来计算最终的结果。简而言之,Hadoop Mapreduce是一个易于编程,并且能在大型集群(上千节点),快速地并行得处理大量数据的软件框架,以可靠,容错的方式部署在商用机器上。
- HBase:HBase是基于HDFS分布式文件系统去构建的。换句话说,HBase的数据其实也是存储在HDFS上的
- 两个问题
- 首先说明,HBase是Nosql数据库,基于键值列存储的数据库,可能抽象,举个例子说明,再MysqL中,我们有时候一列可能会有许多的null,但是尽管是null,但是他还是占用存储空间了,所以为了节省存储空间,我们使用面向列存储
- 在HBase里边,定位一行数据会有一个唯一的值,这个叫做行键(RowKey)。而在HBase的列不是我们在关系型数据库所想象中的列。HBase的列(Column)都得归属到列族(Column Family)中。在HBase中用列修饰符(Column Qualifier)来标识每个列。在HBase里边,先有列族,后有列。什么是列族?可以简单理解为:列的属性类别,比如
- UserInfo
- name :zhangsan
- age :18
- OrderInfo
- orderId:20192
- money :30
列是由列族+列表示符决定的,那么这个表,有两个列族,UserInfo和OrderInfo,在UserInfo下有两个列,分别是UserInfo:name和UserInfo:age,在OrderInfo下有两个列,分别是OrderInfo:orderId和OrderInfo:money。UserInfo:name的值为:三歪。UserInfo:age的值为24。OrderInfo:orderId的值为23333。OrderInfo:money的值为30。这些数据的主键(RowKey)为1
- UserInfo
- HBase表的每一行中,列的组成都是灵活的,行与行之间的列不需要相同。比如第一行(姓名,年龄),第二行(年龄,手机号),换句话说:一个列族下可以任意添加列,不受任何限制
- 时间戳:数据写到HBase的时候都会被记录一个时间戳,这个时间戳被我们当做一个版本。比如说,我们修改或者删除某一条的时候,本质上是往里边新增一条数据,记录的版本加一了而已。在读的时候按照时间戳读最新的记录。在外界「看起来」就是把这条记录改了。
- KeyType:我们上面只说了「修改」的情况,你们有没有想过,如果要删除一条数据怎么做?实际上也是增加一条记录,只不过我们在KeyType里边设置为“Delete”就可以了。
- HBase 的Key-Value,HBase本质上其实就是Key-Value的数据库,Key由RowKey(行键)+ColumnFamily(列族)+Column Qualifier(列修饰符)+TimeStamp(时间戳–版本)+KeyType(类型)组成,而Value就是实际上的值
- HBase架构:
- Client客户端,它提供了访问HBase的接口,并且维护了对应的cache来加速HBase的访问。
- Zookeeper存储HBase的元数据(Meta表),无论是读还是写数据,都是去Zookeeper里边拿到Meta元数据告诉给客户端去哪台机器读写数据
- HRegionServer它是处理客户端的读写请求,负责与HDFS底层交互,是真正干活的节点。
- 总结大致的流程就是:client请求到Zookeeper,然后Zookeeper返回HRegionServer地址给client,client得到Zookeeper返回的地址去请求HRegionServer,HRegionServer读写数据后返回给client。
- 前面也提到了,HBase可以存储海量的数据,HBase是分布式的。所以我们可以断定:HBase一张表的数据会分到多台机器上的。那HBase是怎么切割一张表的数据的呢?用的就是RowKey来切分,其实就是表的横向切割。
- 一个HRegionServer有多个HRegion,根据rowKey取切分到不同的HRegion上,HRegion是属于某个HRegionServer的,一个HRegion上,存储HBase表的一部分数据。
- HRegion下面有多个Store,那Store是什么呢?我们前面也说过,一个HBase表首先要定义列族,然后列是在列族之下的,列可以随意添加。一个列族的数据是存储在一起的,所以一个列族的数据是存储在一个Store里边的。
- 看到这里,其实我们可以认为HBase是基于列族存储的(毕竟物理存储,一个列族是存储到同一个Store里的)
- Hive:Hive是基于hadoop的一个数据仓库工具,本身不存储数据,数据都在底层的hdfs里面,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。本质是将sql转换为MapReduce程序。
- 用途:用来做离线数据分析,比直接用MapReduce程序开发效率更高。
- spark:Spark是开源的类Hadoop MapReduce的通用并行框架, 专门用于大数据量下的迭代式计算.是为了跟 Hadoop 配合而开发出来的,不是为了取代 Hadoop, Spark 运算比 Hadoop 的 MapReduce 框架快的原因是因为 Hadoop 在一次 MapReduce 运算之后,会将数据的运算结果从内存写入到磁盘中,第二次 Mapredue 运算时在从磁盘中读取数据,所以其瓶颈在2次运算间的多余 IO 消耗. Spark 则是将数据一直缓存在内存中,直到计算得到最后的结果,再将结果写入到磁盘,所以多次运算的情况下, Spark 是比较快的. 其优化了迭代式工作负载
- MapReduce缺点:
- 表达能力有限,只有map和reduce两个函数
- 磁盘开销大
- 延迟高,必须所有map都完成后才可以进入reduce阶段
- spark优点:首先说明,spark计算模式本质上也是MapReduce,但是操作不再局限于map和reduce两个函数
- 操作类型多
- 表达能力强
- 内存计算,速度快
- 基于DAG(有向无环图)调度机制–>流水线化处理
- RDD:提供了抽象的数据结构,使得我们不用担心底层数据分布式的特性,而只需要把具体的应用逻辑去表达为一系列的转换处理,不管多么复杂的业务逻辑,都可以把他转换成一系列的RDD转换,不同的RDD转换之间就形成了依赖关系,也就是一个有向无环图,对其优化,我们可以实现数据的管道化处理,也就是流水线
- MapReduce缺点:
- 大数据计算模式:
- YARN:资源调度和管理框架,在hdfs和mapreduce之间,计算所需的底层的cpu和内存资源
- Pig:数据流处理,和hive组合使用,hive查询之间,必须把数据从1各个不同的源头抽取过来,抽取过程当中,需要进行数据的清洗,而这个工作就让pig做
- Mahout:是MapReduce之上的数据挖掘和机器学习的算法库
- Zookeeper:分布式协作服务,
- Flume:日志采集
- 设计模式
- 单例模式
- 建造者模式
- 代理模式
- 模板方法
- 外观模式
- 策略模式
- 观察者模式
- 除此以外,要自己准备一些毕设问题和计算机前沿问题
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。