维护工程师面经
文章目录
- 前言
- 技能要求
- 数据结构
- 定义
- 分类
- 常用的数据结构
- 数据库原理
- 数据的三级模式结构
- 事务
- 查询方式
- 视图
- 数据库范式
- Java相关知识点
- 应用服务器架构体系
- Linux
- 计算机网络
- OSI七层模型(物链网传会表应)
- TCP三次握手
- 总结
前言
本博客仅做学习笔记,如有侵权,联系后即刻更改
科普:
参考网址
技能要求
数据结构
参考网址
定义
数据结构是相互之间存在一种或多种特定关系的数据元素的集合
- 即带“结构”的数据元素的集合。
“结构”就是指数据元素之间存在的关系,分为逻辑结构和存储结构。- 选择合适的数据结构,不但可以提高内存的使用率,也可以提高查找的效率。查找效率就是指算法,数据结构是为算法而生
分类
逻辑结构
- 定义
指数据元素之间逻辑关系的数据结构,这里的逻辑关系是指数据元素之间的前后间关系,与数据在计算机中的存储位置无关。- 线性结构
数据结构的元素之间存在一对一线性关系,所有结点都最多只有一个直接前趋结点和一个直接后继结点。常见的有数组、队列、链表、栈- 非线性结构
各个结点之间具有多个对应关系,一个结点可能有多个直接前趋结点和多个直接后继结点。常见的有多维数组、广义表、树结构和图结构等存储结构
- 定义
指数据的逻辑结构在计算机存储空间中的存放形式称为数据的物理结构,也叫做存储结构- 顺序存储
存储顺序是连续的,在内存中用一组地址连续的存储单元依次存储线性表的各个数据元素- 链式存储
在内存中的存储元素不一定是连续的,用任意地址的存储单元存储元素,元素节点存放数据元素以及通过指针指向相邻元素的地址信息- 索引存储
除建立存储结点信息外,还建立附加的索引表来标识节点的地址。索引表由若干索引项组成- 散列存储
又称Hash存储,由节点的关键码值决定节点的存储地址
常用的数据结构
数组(Array)
它一种线性表数据结构,用一组连续的内存空间来存储一组相同类型的数据。
队列(Queue)
特点是先入先出,也就是我们常听到的FIFO(First in First Out)
链表(Linked List)
物理存储单元上非连续,非顺序的存储结构。
- 链表有一系列节点组成,所谓节点就是指链表中的每一个元素,每个节点包含两个数据,一个是存储元素的数据域(值),另一个是存储下一个节点地址的指针域。
栈(Stack)
数据呈线性排列的数据结构,和上面的队列相反,栈的特点先进后出、后进先出,就是常说的LIFO(Last in First Out)
树(Tree)
层级式的数据结构,由顶点(节点)和连接它们的边组成
- 结构特点
每个节点有零个或多个子节点;
没有父节点的节点称为根节点;
每一个非根节点有且只有一个父节点;
除了根节点外,每个子节点可以分为多个不相交的子树
散列表(Hash)
散列表又叫哈希表,存储的是由键(key)和值(value)组 成的数据,根据键直接访问存储在内存存储位置的数据结构
堆(Heap)
图的树形结构。
- 被用于实现“优先队列”(priority queues),优先队列是一种数据结构,可以自由添加数据,但取出数据时要从最小值开始按顺 序取出。
在堆的树形结构中,各个顶点被称为“结点”(node),数据就存储在这些结点中- 特点
堆是一个完全二叉树(所谓完全二叉树就是除了最后一层其他层的节点个数都是满的)
堆中每一个节点的值都必须大于等于或者小于其子树中每一个节点的值。
图(Graph)
由顶点和连接每对顶点的边所构成的图形就是图
数据库原理
参考网址
- 数据库(DB)
是存储在计算机系统内的有结构的数据集合,是相关数据的集合,数据由数据库管理系统统一管理和维护- DBS
是指在计算机系统中引入数据库后的数据构成,由计算机硬件、操作系统、DBMS、DB、应用程序和用户以及数据库开发和管理人员等组成- DBMS
是操作系统支持下工作的数据管理软件,是支持用户创建和维护数据库的一组程序包。对内负责管理数据库,对外向用户提供一整套命令。用户可以通过命令来创建数据库,定义数据,对数据库中的数据进行各种合法的操作
数据的三级模式结构
外模式、模式和内模式
事务
事务是数据库操作的最小逻辑工作单元,是一系列SQL操作的集合
- ACID特性
原子性、一致性、隔离性和持久性
查询方式
分组查询
- where子句作用于基表或者视图,从中选择满足条件的元组;
- having子句作用于分组后的组,从中选择满足条件的组。
排序查询
- 用 order by 进行默认升序排序
在列名后面添加 desc 进行降序排序多关系连接查询
- 内部连接: inner join
两表之间具有共同性质的属性
视图
定义
- 视图是从一个或多个关系(基本表或已存在的视图)导出的关系。是数据库系统的一个重要机制
与基本表的区别与联系
- 视图是虚表,在一般情况下不建立索引。
sql一般也不提供修改视图定义的语句。
对视图中数据进行更新是有限制的。视图的使用
create view <视图名>as <子查询>[with check option]
若有 with check option ,则今后在对此视图,进行 insert, update, delete 操作时,会自动检查是否符合原定义视图子查询中的<条件表达式>
视图是数据库中数据的物理独立性和逻辑独立性的重要支柱
数据库范式
参考网址
第一范式 - 1NF
- 遵循原子性。即表中字段的数据不可以再拆分。
第二范式 - 2NF
- 在满足第一范式的情况下,遵循唯一性,消除部分依赖。即,表中任意一个主键或任意一组联合主键,可以确定除该主键外的所有的非主键值。
一个表只能描述一件事情
第三范式 - 3NF
- 在满足第二范式的情况下,消除传递依赖。
即在任一主键都可以确定所有非主键字段值的情况下,不能存在某非主键字段 A 可以获取 某非主键字段 B
Java相关知识点
参考网址
JDK/JRE/JVM
- (Java Virtual Machine)虚拟机
(Java Runtime Environment)Java 运行时环境
(Java Development Kit)Java 开发工具包- JRE = JVM + Java 核心类库
- JDK = JRE + Java工具 + 编译器 + 调试器
java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。也就是说class文件并不直接与机器的操作系统交互,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行
Java特性
- 源代码会先通过javac编译成字节码,再通过jvm将字节码转换成机器码执行,即解释运行 和编译运行配合使用,所以可以称为混合型或者半编译型
- 面向对象是把构成问题事务分解成各个对象,分别设计这些对象,然后将他们组装成有完整功能的系统。面向过程只用函数实现,面向对象是用类实现各个功能模块。
- 面对对象四大特性
封装,继承,多态,抽象- 面向对象编程的六大原则
应用服务器架构体系
Linux
常见命令
cat(-n,-b,-s)
more(按页显示)
rm(-i,-f,-r)
cp(-r,-i)
read
cd
mkdir(-p)
pwd(工作目录)
rmdir(删空目录,-p)
ps -ef | grep 关键字(查看进程)
free(内存)
clear
touch
chmod
vim
echo(打印)
find(文件查找)
ifconfig
systemctl(服务)
rpm(安装包)
tar (打包)
gz (压缩)
目录
/bin 执行文件
/boot 启动文件
/dev 外部设备
/etc 配置文件
/home 主目录
/lib 共享库
/mnt 临时挂载文件系统(光驱)
/opt 外装软件
/root 管理员
/var 日志
软件安装
tar - (编译安装源码包)
rpm(本地)(-v,-i-h,-e)
yum(在线)(-y,-q)
Vmware 安装Linux
- 下载镜像
- 自定义安装
- 稍后安装系统
- 选择系统
- 定义磁盘大小
- 选择网络类型
桥接(访问外网)
NAT(和宿主机形成局域网,通过hadoop服务访问外网)
仅主机(与主机内部通信)- 选择语言和软甲(GUI图形界面)
- 设置管理员密码
- 创建用户
- 配置网络
计算机网络
OSI七层模型(物链网传会表应)
物理层(比特流)
- 四大特性
机械特性(接口,引线)
电气特性(电压)
功能特性(定义5v为1)
过程特性(工作步骤)链路层(帧)
- 将网络层下放的IP数据报封装成帧
网络层
- 路由,IP协议
传输层
- TCP,UDP
应用层
- 程序交互 DNS,HTTP,SMTP
TCP三次握手
- SYN=1,seq=x
- SYN=1,ACK=1,seq=y,ack=x+1
- ACK=1,seq=y+1,ack=y+1
- 不是两次握手的原因
防止已失效的连接请求
TCP四次挥手
- FIN=1,seq=u
- ACK=1,ack=u+1,seq=v
- FIN=1,ACK=1,ack=v+1,seq=w
- ACK=1,seq=u+1,ack=w+1
- 四次挥手后客户端为什么等2MSL才能断开
保证报文最后一个ACK能到达
TCP和UDP的区别
可靠
有连接
数据有序
字节流 报文
流量控制,拥塞控制
一对一
首部20字节 8字节
上网流程
输入网址
浏览器缓存解析
tcp连接
收到请求
页面渲染
- 状态码
1xx
2xx success
3xx 重定向
4xx 客户端错误
5xx 服务器错误
HTTP和HTTPS的区别
免费 ca证书
明文 ssl加密
无状态连接
内存资源和cpu消耗少
80端口 443
HTTPS工作流程
- 证书验证
浏览器发起HTTPS请求
服务器返回HTTPS证书
客户端验证证书是否合法- 数据传输
本地生成随机数
公钥加密,传到服务端
服务端通过私钥解密
对返回结果加密
Get和Post的区别
请求的数据放在url上 数据放在HTTP的包体内(requrest body)
提交的数据最大是2k 理论上没有限制。实际上IIS4中最大量为80KB,IIS5中为100KB。
产生一个TCP数据包 产生两个TCP数据包,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)
GET在浏览器回退时是无害的,POST会再次提交请求。
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
GET只接受ASCII字符的参数的数据类型,而POST没有限制
总结
小小励志
有些事你现在不做,一辈子都不会做了。
如果你想做一件事,全世界都会为你让路。
《搭车去柏林》