技术点汇总

Posted 奋斗的蜗牛灬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术点汇总相关的知识,希望对你有一定的参考价值。

-----------------面试常问题--------------------------

------------------网络----------------------------
1、介绍一下三次握手四次挥手、为什么要有四次
三次握手:
三次握手: 假如两台服务器PC1、PC2
1、PC1想与PC2建立连接,先发送SYN报文(SYN=1)请求建立连接PC1seq序号x。

2、PC2接收到之后发送SYN和ACK报文,就是(ACK=1)确认并也(SYN=1)请求建立连接PC2seq是y,Ack=x+1,这个Ack是确认号,代表前面PC1的x已经收到。

3、PC1收到PC2的请求建立连接,也进行(ACK=1)确认,并进行回复seq=x+1,Ack=y+1代表PC2的y已收到。

四次挥手:

1、PC1想要与PC2断开连接,先发送(FIN=1)请求断开和(ACK=1)确认。
2、PC2回复(ACK=1)同意断开。

这是已成半断开,这时PC1已无法继续连接PC2,但是PC2仍能给PC1发送数据。

3.接着PC2也想断开与PC1的连接,发送(FIN=1)并(ACK=1)确认。
4.PC1(ACK=1)确认断开。

四次挥手:(为什么要有四次也是这个答案):
因为tcp协议是面向连接的安全可靠的传输层协议,同时也是全双工通信,不能单方面完全断开连接,需要双方进行确认无误后,可以断开

顺序为PC1请求断开,PC2同意断开,此时半断开状态,PC2仍然可以发送数据给PC1,但是PC1无法回复,然后PC2请求断开,PC1确认断开,此时完全断开连接。

2、BGP有哪几种类型,分别使用于哪些场景

IBGP:用于内部

EBGP:用于外部

3、OSPF 有七种状态(出现频率不高)
①.Down:此状态还没有与其他路由器交换信息。首先从其ospf接口向外发送hello分组,还并不知道DR(若为广播网络)和任何其他路由器。发送hello分组是,使用组播地址22 4.0.0.5。
②. Init:在DeadInterval里收到了Hello包,2-Way通信还没有建立起来的状态。
③. two-way:双向会话建立,而RID彼此出现在对方的邻居列表中。(若为广播网络:例如:以太网。在这个时候应该**DR,BDR。)
④. ExStart:信息交换初始状态,在这个状态下,本地路由器和邻居将建立Master/Slave关系,并确定DD Sequence Number,路由器ID大的的成为Master。
⑤. Exchange:信息交换状态:本地路由器和邻居交换一个或多个DBD分组(也叫DDP) 。DBD包含有关LSDB中LSA条目的摘要信息。
⑥.Loading:信息加载状态:收到DBD后,使用LSACK分组确认已收到DBD。将收到的信息同LSDB中的信息进行比较。如果DBD中有更新的链路状态条目,则想对方发送一个LSR, 用于请求新的LSA 。
⑦. Full:完全邻接状态,这种邻接出现在Router LSA和Network LSA中。

4、OSPF有哪五种报文(出现频率不高)
①、Hello包:用于发现和维持邻居关系,选举DR和BDR
②、数据库描述包(DBR):用于向邻居发送摘要信息以同步链路状态数据库
③、链路状态请求包(LSR):在路由器收到包含新信息的DBD后发送,用于请求更 详细的信息
④、链路状态更新包(LSU):收到LSR后发送链路状态通告(LSA),一个LSU数据 包可能包含几个LSA
⑤、链路状态确认包(LSAck):确认已经收到DBD/LSU,每个LSA需要被分别确认

5、你用过哪些设备(华为设备还是思科设备)
华为设备:静态路由、单臂路由、MSTP、LACP、VRRP、DHCP、ACL、NAT、RIP、OSPF、BGP等配置

6、二层交换机能做什么
VLAN控制服务器的网络接入,实现网络隔离、流量监控、QoS配置、流量优化等

  1. Qos是什么
    QoS(Quality of Service,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。QoS的保证对于容量有限的网络来说是十分重要的,特别是对于流多媒体应用,例如VoIP和IPTV等,因为这些应用常常需要固定的传输率,对延时也比较敏感。

8、TCP UDP 区别
①、需不需要回复:TCP需要回复,UDP不需要回复
②、TCP 可靠性高 UDP传输速度快
③、场景
TCP UDP 使用场景的对比:TCP需要建立长连接的场景

8、使用软防火墙进行地址映射
iptables和firewalld

iptables四表五链
(一)、四表
raw表:确定是否对该数据包进行状态跟踪。包含两个规则链,OUTPUT、PREROUTING。
mangle表:修改数据包内容,用来做流量整形的,给数据包设置标记。包含五个规则链:INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING。
nat表:负责网络地址转换,用来修改数据包中的源、目标IP地址或端口。包含三个规则链:OUTPUT、PREROUTING、POSTROUTING。
filter表:负责过滤数据包,确定是否放行该数据包(过滤) 。包含三个规则链:INPUT、FORWARD、 OUTPUT。
注:在iptables的四个规则表中,mangle表和raw表的应用相对较少。

(二)、五链
INPUT:处理入站数据包,匹配目标 IP 为本机的数据包。
OUTPUT:处理出站数据包,一般不在此链上做配置。
FORWARD:处理转发数据包,匹配流经本机的数据包。
PREROUTING链:在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网服务器的IP和端口映射到路由器的外网IP和端口上。
POSTROUTING链:在进行路由选择后处理数据包,用来修改源地址,用来做SNAT,相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网。

iptables中DNAT与SNAT的配置:
iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.200.11
使用PREROUTING链 指定入站端口ens36 指定端口号80

iptables -t nat -A POSTROUTING -o ens36 -s 192.168.200.0/24 -j SNAT --to 12.0.0.1

---------------------------shell----------------------------------

1、shell 脚本数组 函数

$$:Shell本身的PID(ProcessID,即脚本运行的当前 进程ID号)
$!:Shell最后运行的后台Process的PID(后台运行的最后一个进程的 进程ID号)
$?:最后运行的命令的结束代码(返回值)即执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$-:显示shell使用的当前选项,与set命令功能相同
∗ : 所 有 参 数 列 表 。 如 " *:所有参数列表。如" "*“用「”」括起来的情况、以"$1 $2 … $n"的形式输出所有参数,此选项参数可超过9个。
@ : 所 有 参 数 列 表 。 如 " @:所有参数列表。如" @"@“用「”」括起来的情况、以"$1" “ 2 " … " 2" … " 2""n” 的形式输出所有参数。 @ 跟 @ 跟 @*类似,但是可以当作数组用
$#:添加到Shell的参数个数,也可以叫做长度
$0:Shell本身的文件名
1 ~ 1~ 1n:添加到Shell的各参数值。$1是第1参数、$2是第2参数…。

2、你们公司一般会使用shel脚本做什么
①巡检(磁盘、内存、CPU、IO等)
②自动化部署
③日志分割
④耦合两个服务(rsync +inotify / keepalived +检测脚本)等等(这点不强求说出来)

3、shell脚本常问的题目
①冒泡排序
②shell脚本如何开启多进程/多线程运行
③shell脚本遍历一个目录下的所有文件并且打印出来
④shel1脚本输出访问日志中访问次数最多(排名前十10)的IP,并排序!
⑤shell脚本过滤出僵尸进程(并杀死)要求: 说出详细命令

4、linux系统常用的运维命令有哪些
除了常规的,还有Isof free -m ss iostat iotop等等

5、常用的抓包工具/命令有哪些
wireshark
tcpdump (tcpdump 怎么嗅探指定端口的访问)
tcpdump -i eth0 -tnn dst port 80 -C 1000| awk -F"." print $1"." $2"." $3"."$4’ | sort | uniq -c| sort -nr head - 5 

6、服务器性能分析命令有哪些
top命令(面试问参数解释)
参数讲解:
①. 查看系统运行的级别:runlevel
load average: 0.09, 0.05, 0.01
三个数分别代表不同时间段的系统平均负载(一分钟、五分钟、以及十五分钟)

7、常用的查看系统硬件资源命令
磁盘占用: df -hT
内存信息: free -m 或 cat / proc/meminfo
CPU信息: cat /proc/cpuinfo
查看IO信息:iostart、iotop(需要先下载后使用:yum -y install iotop)
巡检时会用到上面4个命令

8、tcpdump可以获取那些信息
cpdump 的具体参数及意义:
-i :指定 tcpdump 监听的网络接口
-s :指定要监听数据包的长度
-c :指定要监听的数据包数量,达到指定数量后自动停止抓包
-w :指定将监听到的数据包写入文件中保存
-A :指定将每个监听到的数据包以 ACSII 可见字符打印
-n :指定将每个监听到数据包中的域名转换成 IP 地址后显示
-nn :将每个监听到的数据包的域名转换成 IP 、端口从应用名称转换成端口号后显示
-e :指定将监听到的数据包链路层的信息打印出来,包括源 mac 和目的 mac ,以及网络层的协议
-p :将网卡设置为非混杂模式,不能与 host或 broadcast 一起使用
-r :指定从某个文件中读取数据包
-S :指定打印每个监听到的数据包的 TCP 绝对序列号而非相对序列号 OK

9、Linux系统启动过程
引导过程: 开机自检、mbr引导、grub菜单、 linux内核、 init进程初始化
启动过程:加载bios读取mbr. boot loader.加载内核、用户init根据inittab文件设定运行
级别----> init进程指向rc.sysinit—> 启动内核—> 指向不同运行级别的脚本程序–> 指向/etc/rc.d/rc.loca1—> 指向/bin/login程序,进入登录状态

10、检查端口占用情况
netstat/ss -napt| grep ‘port’
lsof -i:“port”

11、 查询日志的方式/命令有哪些
systemctl status
#查看指定服务日志
journalctl -u

12、DHCP服务是哪四种报文
discover(广播)
offer(单播)
request(广播)
ack(单播)

13、杀死僵尸进程
可以先试用top 命令查看是否有僵尸进程
在红色表示的地方 如果zombie 大于“0”表示服务器当前存在僵尸进程
如果存在僵尸进程,可以使用命令
ps -A -ostat,ppid,pid,cmd | grep -e ‘1
命令注解:
-A 参数列出所有进程
-o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命令)这四个参数
因为状态为 z或者Z的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程
如过查出来的进程很多 并且每个僵尸死进程的父进程又不一样
ps -A -o stat,ppid,pid,cmd | grep -e ‘2’ | awk ‘print $2’ | xargs kill -9

--------集群、分布式与数据库-----------
1、你用nginx做过哪些配置(优化) ,有没有做过Nginx支持https的访问,如何配置
压缩、防盗链、隐藏版本、最大线程、会话保持、缓存、用户和组权限

修改nginx配置https
进入到/usr/local/nginx/conf
vim nginx.conf 新增server节点,配置如下:
server
server_name localhost;
listen 443 ssl; #https端口号是443
#ssl on;
ssl_certificate /usr/local/nginx/conf/crt/server.crt;
ssl_certificate_key /usr/local/nginx/conf/crt/server.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
#其它的一些配置

重启nginx验证:/usr/local/nginx/sbin/nginx -s reload

打开浏览器验证:https://10.130.29.7/index.html

2、Nginx 前端页面/图片加载不出来,你是怎么排查故障的

3、Nginx + keepalvied脑裂问题你是怎么处理的(keepalived 脑裂问题你是怎么解决、预防的)
脑裂现象:在高可用(HA)系统中,当联系2个节点的“心跳线”断开时,本来为一整体、动作协调的HA系统,就分裂成为2个独立的个体。由于相互失去了联系,都以为是对方出了故障。两个节点上的HA软件像“裂脑人”一样,争抢“共享资源”、争起“应用服务”,就会发生严重后果——或者共享资源被瓜分、2边“服务”都起不来了;或者2边“服务”都起来了,但同时读写“共享存储”,导致数据损坏(常见如数据库轮询着的联机日志出错)。

常见的解决方案
  在实际生产环境中,我们可以从以下几个方面来防止裂脑问题的发生:
  同时使用串行电缆和以太网电缆连接,同时用两条心跳线路,这样一条线路坏了,另一个还是好的,依然能传送心跳消息。
  当检测到裂脑时强行关闭一个心跳节点(这个功能需特殊设备支持,如Stonith、feyce)。相当于备节点接收不到心跳消患,通过单独的线路发送关机命令关闭主节点的电源。
  做好对裂脑的监控报警(如邮件及手机短信等或值班).在问题发生时人为第一时间介入仲裁,降低损失。例如,百度的监控报警短倍就有上行和下行的区别。报警消息发送到管理员手机上,管理员可以通过手机回复对应数字或简单的字符串操作返回给服务器.让服务器根据指令自动处理相应故障,这样解决故障的时间更短.
  当然,在实施高可用方案时,要根据业务实际需求确定是否能容忍这样的损失。对于一般的网站常规业务.这个损失是可容忍的。

4、Nginx 和LVS、Haproxy有什么区别
nginx
①支持正则
②只支持基于端口的健康检查
③不支持session的直接保持,但能通过Ip hash来解决
④对网络稳定性要求不高
⑤反向代理能力强

Lvs
①只能基于四层转发
②尽在四层做分发作用,抗负载能力强
③应用范围广(几乎可以对所有应用做负载)

haproxy
①支持8种负载均衡策略
②仅做负载均衡软件使用,在高并发情况下性能优于Nginx
③支持URL检测、支持session保持

5、tomcat优化
内存优化
线程优化
配置优化
【 maxThreads 】 Tomcat 使用线程来处理接收的每个请求,这个值表示Tomcat 可创建的最大的线程数,默认值是200。
【 minSpareThreads 】最小空闲线程数,Tomcat 启动时的初始化的线程数,表示即使没有人使用也开这么多空线程等待,默认值是10。
【 maxSpareThreads 】最大备用线程数,一旦创建的线程超过这个值,Tomcat 就会关闭不再需要的socket 线程。默认值是-1 ( 无限制)。一般不需要指定。
【 URIEncoding 】指定 Tomcat 容器的 URL 编码格式,语言编码格式这块倒不如其它 Web 服务器软件配置方便,需要分别指定。
【 connnectionTimeout 】网络连接超时,单位:亳秒,设置为 0 表示永不超时,这样设置有隐患的。通常默认20000亳秒就可以。
【 enableLookups 】是否反查域名,以返回远程主机的主机名,取值为: true 或 false, 如果设置为false, 则直接返回IP 地址,为了提高处理能力,应设置为false。
【disableUploadTimeout 】上传时是否使用超时机制。应设置为true。
【 connectionUploadTimeout 】上传超时时间,毕竟文件上传可能需要消耗更多的时间,这个根据你自己的业务需要自己调,以使 Servlet 有较长的时间来完成它的执行,需要与上一个参数一起配合使用才会生效。
【 acceptCount 】指定当所有可以使用的处理请求的线程数都被使用时,可传入连接请求的最大队列长度,超过这个数的请求将不予处理,默认为100 个。
【 compression 】 是否对响应的数据进行GZIP压缩,off:表示禁止压缩; on:表示允许压缩 (文本将被压缩)、force:表示所有情况下都进行压缩,默认值为off,压缩数据后可以有效的减少页面的大小,一般可以减小1/3左右,节省带宽。
【 compressionMinSize 】表示压缩响应的最小值,只有当响应报文大小大于这个值的时候才会对报文进行压缩,如果开启了压缩功能,默认值就是2048。
【 compressableMimeType 】压缩类型,指定对哪些类型的文件进行数据压缩。
【 noCompressionUserAgents=“gozilla, traviata” 】 对于以下的浏览器,不启用压缩

6、mysql优化(软优化、硬优化)
①查询优化
②先开启慢查询日志:
③limit 优化
limit m,n
– m 表示从第 (m+1) 条记录开始检索
– n 表示取出 n 条数据
④索引优化

7、mysql架构(有哪几种,每种的原理是什么)
主从复制
读写分离
MHA

8、mysql左联右联(左查询右查询)
左连接查询 left join 语句:SELECT * FROM a_table a left join b_table b ON a.a_id = b.b_id;
说明: left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。 左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。

右连接 right join 语句:SELECT * FROM a_table a right outer join b_table b on a.a_id = b.b_id;
说明:right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。

9、Mysq|死锁(死锁现象、怎么解决、怎么预防)、悲观锁、乐观锁
死锁:是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 死锁4大要素:互斥,持有并请求,不可剥夺,持续等待
解决方法:
1、撤消陷于死锁的全部进程;
2、逐个撤消陷于死锁的进程,直到死锁不存在;
3、从陷于死锁的进程中逐个强迫放弃所占用的资源,直至死锁消失。
4、从另外一些进程那里强行剥夺足够数量的资源分配给死锁进程,以解除死锁状态

预防:
①允许目的节点将不完整的报文递交给目的端系统;
②一个不能完整重装的报文能被检测出来,并要求发送该报文的源端系统重新传送;
③为每个节点配备一个后备缓冲空间,用以暂存不完整的报文。
①、②两种方法不能很满意地解决重装死锁,因为它们使端系统中的协议复杂化了。一般的设计中,网络层应该对端系统透明,也即端系统不该考虑诸如报文拆、装之类的事。③方法虽然不涉及端系统,但使每个节点增加了开销。

悲观锁:当要对数据库中的一条数据进行修改的时候,为了避免同时被其他人修改,最好的办法就是直接对该数据进行加锁以防止并发。这种借助数据库锁机制,在修改数据之前先锁定,再修改的方式被称之为悲观并发控制【Pessimistic Concurrency Control,缩写“PCC”,又名“悲观锁”】。

乐观锁:乐观锁是相对悲观锁而言的,乐观锁假设数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则返回给用户错误的信息,让用户决定如何去做。乐观锁适用于读操作多的场景,这样可以提高程序的吞吐量。

10、Mysql 主从复制如果io/sq|线程为非running状态,可能是哪些情况
①、网络不通
②、my.cnf配置有问题
③、密码、file文件名、pos偏移量不对
④、防火墙没有关闭

11、redis三种集群模式是什么,Redis持久化的方式有哪些
①主从复制
②哨兵
③群集

持久化的方式有:
RDB持久化
AOF持久化

RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。
AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。

常用配置
RDB持久化配置
Redis会将数据集的快照dump到dump.rdb文件中。此外,我们也可以通过配置文件来修改Redis服务器dump快照的频率,在打开6379.conf文件之后,我们搜索save,可以看到下面的配置信息:
save 900 1 #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。
save 300 10 #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。
save 60 10000 #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。

AOF持久化配置
在Redis的配置文件中存在三种同步方式,它们分别是:
appendfsync always #每次有数据修改发生时都会写入AOF文件。
appendfsync everysec #每秒钟同步一次,该策略为AOF的缺省策略。
appendfsync no #从不同步。高效但是数据不会被持久化

RDB和AOF的优缺点
(一)、RDB持久化
优点:RDB文件紧凑,体积小,网络传输快,适合全量复制;恢复速度比AOF快很多。当然,与AOF相比, RDB最 重要的优点之一是对性能的影响相对较小。
缺点:RDB文件的致命缺点在于其数据快照的持久化方式决定了必然做不到实时持久化,而在数据越来越重要的今天,数据的大量丢失很多时候是无法接受的,因此AOF持久化成为主流。此外,RDB文件需要满足特定格式,兼容性差(如老版本的Redis不兼容新版本的RDB文件)。
对于RDB持久化,一方面是bgsave在进行fork操作时Redis主进程会阻塞,另一方面,子进程向硬盘写数据也会带来IO压力。

(二)、AOF持久化
与RDB持久化相对应,AOF的优点在于支持秒级持久化、兼容性好,缺点是文件大、恢复速度慢、对性能影响大。
对于AOF持久化,向硬盘写数据的频率大大提高(everysec策略下为秒级),IO压力更大,甚至可能造成AOF追加阻塞问题。
AOF文件的重写与RDB的bgsave类似,会有fork时的阻塞和子进程的I0压力问题。相对来说,由于AOF向硬盘中写数据的频率更高,因此对Redis主进程性能的影响会更大。

12、ELK中logstash有哪三部分组成,logstash如何做格式转换
Logstash由三个组件构造成,分别是input、filter以及output
我们可以吧Logstash三个组件的工作流程理解为:input收集数据,filter处理数据,output输出数据

13、MySQL 的几种架构,每种架构特点是什么 这些架构解决了什么问题,他们部署/实现的重点是什么
主从复制
读写分离
MHA :解决单点故障,高可用

主从复制解决了:主从复制的方式来同步数据
读写分离解决了:因为数据库的“写”(写10000条数据可能要3分钟)操作是比较耗时的。但是数据库的“读”(读10000条数据可能只要5秒钟)。所以读写分离,解决的是,数据库的写入,影响了查询的效率
MHA解决了:数据库的单点故障问题

14、查询表的前/后10行
limit
mysql 按字段查询某表前10行
select * from table_name limit 10 order by xxx;

15、sql语句

16、进行全量备份的周期
一周或者3天进行一次备份

17、MySQL的特性
事务的4大特性:
原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;
一致性: 执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的;
隔离性: 并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;
持久性: 一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。

18、你们MySQL集群有几台服务器

19、MySQL的两种引擎的区别
MyISAM:
不支持事务,但是每次查询都是原子的;
支持表级锁,即每次操作是对整个表加锁;
存储表的总行数;
一个MYISAM表有三个文件:索引文件、表结构文件、数据文件;
采用菲聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。

InnoDb:
支持ACID的事务,支持事务的四种隔离级别;
支持行级锁及外键约束:因此可以支持写并发;
不存储总行数;
一个InnoDb引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制,一个表可能分布在多个文件里),也有可能为多个(设置为独立表空,表大小受操作系统文件大小限制,一般为2G),受操作系统文件大小的限制;
主键索引采用聚集索引(索引的数据域存储数据文件本身),辅索引的数据域存储主键的值;因此从辅索引查找数据,需要先通过辅索引找到主键值,再访问辅索引;最好使用自增主键,防止插入数据时,为维持B+树结构,文件的大调整。

20、Mysql5.6 与 Mysql5.7 的区别
MySQL 5.6:初始化数据时需要进到家目录的 script 目录下
MySQL 5.7:初始化数据时需要进到家目录的 bin 目录下

21、mycat
和amoeba差不多,用于数据库主从同步,读写分离

22、如何讲数据库中的数据导出到表格中

23、主从复制原理

24、GFS中有哪些卷,分别叫什么

---------云计算与虚拟化---------
1、介绍下你对虚拟化的理解、你用过哪些虚拟化产品
概念:通过虚拟化技术将一台计算机虚拟为多台逻辑计算机, 在一台计算机上同时运行多个逻辑计算机,
同时每个逻辑计算机可运行不同的操作系统,应用程序都可以在相互独立的空间内运行而互相不影响,从而提高计算机的工作效率。

VMwareWorkstation:使用软件达到虚拟多操作系统
VirtualBox:使用软件虚拟出多物理设备功能
ensp:以软件形式实现物理设备的功能 (二层交换机、路由器、三层交换机等)
KVM:基于内核的虚拟机

2、KVM虛拟化的工作流程
用户模式的Qemu利用接口libkvm通过ioctl系统调用进入内核模式。KVM驱动为虚拟机创建虚拟CPU和虚拟内存,然后执行VMLAU-NCH指令进入客户模式,装载Guest OS并运行。Guest OS运行过程中如果发生异常,则暂停Guest OS 的运行并保存当前状态同时退出到内核模式来处理这些异常。
内核模式处理这些异常时如果不需要 I/O 则处理完成后重新进入客户模式。如果需要I/O则进入到用户模式,则由Qemu来处理I/O,处理完成后进入内核模式,再进入客户模式

3、docker和kvm的区别
PS:额外添加的区别:
Docker可以解决kvm的孤岛问题(无法在启动前传入环境变量)

4、如何修改docker网络ip地址段

5、docker通信方式

6、docker容器之间如何通讯

7、dockerfile中有哪些指令、 add copy有什么区别cmd与entrypoint有什么区别

8、docker常用命令

9、K8S有哪些组件、每个组件的功能是什么

10、 K8S的pod中跑什么业务、你们公司的项目-般使用多少个node多少个pod

  1. K8S-个pod中跑多少几个容器

12、一个pod中的容器之间相互通信的过程

13、pod与pod之间通信的方式

14、K8S中你们使用的cnij插件是什么

15、虚拟化类型

16、KVM虚拟化架构/三种模式

17、虚拟化资源如何调用

18、openstack的8个组件与其作用

19、简单介绍一下openstack的概念架构与逻辑架构

20、分别详细介绍一下elk 与 efk
efk:
es logstash kibana redis kafka filbeat
索引 格式转换 展示 做缓存 数据交互 日志收集输出

redis:做缓存
kafka 和 logstash 做缓存
kafka:中间件,用于传递、处理交互请求的

网络部分:
1、三次握手四次挥手、为什么要有四次

2、BGP有哪几种类型,分别使用于哪些场景IBGP:用于内部
EBGP:用于外部

3、OSPF有七种状态(出现频率不高)

4、OSPF有哪五种报文(出现频率不高)

5、你用过哪些设备(华为设备还是思科设备)
华为ensp

6、二层交换机能做什么

VLAN控制服务器的网络接入,实现网络隔离、流量监控、QoS配置、流量优化等

7、Qos是什么

linux基础部分

1、DHCP服务是哪四种报文
discover
offer
request
ack

2、你们公司一般会使用shell脚本做什么
巡检
自动化部署
日志分割
耦合两个服务(rsync +inotify / keepalived +检测脚本)等等(这点不强求说出来)

3.shell脚本常问的题目
冒泡排序
shell脚本如何开启多进程/多线程运行
把脚本执行的部分放入后台,wait命令在后面,wait是等待前面的后台任务全部完成才往下执行,否则程序本身是不会等待的,这样对后面依赖前面任务结果的命令来说就可能出错
需求:遍历一个指定目录下的所有文件,并打印出来
指定目录设定环境变量,用for循环判断是否为目录,$1指定位置变量,层层循环,直到判断不是目录为止 ehco输出

需求:过滤出日访问量最多的IP来源(前10个),并打印
首先cat 这个日志文件,结合awk以及uniq -c去重,结合sort排序
cat log.txt|awk -F" " ‘print $1’ |sort|uniq -c|sort -nrt " “|awk -F” " ‘print $2’ |head -10

4、linux系统常用的运维命令有哪些
除了常规的,还有lsof free -m ss iostat iotop等等

5、常用的抓包工具/命令有哪些
wireshark
tcpdump (tcpdump怎么嗅探指定端口的访问)
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." ‘print $1"."$2"."$3"."$4)’ | sort |uniq-c | sort -nr |head -5 & nbsp;

6、服务器性能分析命令有哪些top命令(面试问参数解释)
参数讲解:1.查看系统运行的级别:runlevelload average: 0.09,0.05,0.01
三个数分别代表不同时间段的系统cpu平均负载(一分钟、五分钟、以及十五分钟)

7、常用的查看系统硬件资源命令
磁盘占用:df -hT
内存信息: free -m或cat /proc/meminfo
CPU信息:cat /proc/cpuinfo
i/o 信息:iostat/iotop

8、tcpdump 可以获取那些信息.(tcpdump的使用场影)
监视指定网络接口的数据包、监视指定主机的数据包、监视指定端口的数据包,指定网络的数据包

9、Linux系统启动过程
引导过程:开机自检、mbr引导、grub菜单、linux内核、init进程初始化
启动过程:加载bios读取mbr、boot loader、加载内核、用户init根据inittab文件设定运行级别–
–》init进程指向rc.sysinit---->启动内核—》指向不同运行级别的脚本程序–》指向/etc/rc.d/rc.local—>指向/bin/login程序,进入登录状态

10、检查端口占用情况
netstat/ss -napt | grep "port"lsof -i:“port”

11、查询日志的方式/命令有哪些
systemctl status
查看指定服务日志

Web架构方面
1、你用nginx做过哪些配置(优化),有没有做过Nginx支持https的访问,如何配置压缩、防盗链、隐藏版本、最大线程、会话保持、缓存、用户和组权限

2、Nginx前端页面/图片加载不出来,你是怎么排查故障的

3、Nginx + keepalvied 脑裂问题你是怎么处理的(keepalived脑裂问题你是怎么解决、预防的)

4、 Nginx 和LVS HAproxy有什么区别

nginx:
支持正则
只支持基于端口的健康检查
不支持session 的直接保持,但育通过lp hash来解决
对网络稳定性要求不岛
反向代理能力强

高并发,每天吞吐量,pv,根据吞吐量优化nginx,LVS,三种模式

ivs:
只能基于四层端口转发
尽在四层做分发作用,抗负载能力强
应用范围广(几平可以对所有应用做负载)

haproxy:
支持8种负载均衡策略
仅做负载均衡软件使用,在高并发情况下性能优于Nginx
支持URL检测、支持session保持

5、tomcat优化

6.mysql 优化(软优化、硬优化)

7.mysql架构(有哪几种,每种的原理是什么)

8、mysql左联右联(左查询又查询)

9、Mysql 死锁(死锁现象、怎么解决、怎么预防)、悲观锁、乐观锁

10、Mysql主从复制如果 io/sql线程为非running状态,可能是哪些情况

  1. redis三种集群模式是什么,Redis持久化的方式有哪些

12、ELK种logstash有哪三部分组成,logstash 如何做格式转换

13、监控承载的协议:SNMP,简单网络协议


  1. Zz ↩︎

  2. Zz ↩︎

以上是关于技术点汇总的主要内容,如果未能解决你的问题,请参考以下文章

关于大数据相关的问答汇总,持续更新中~

哪个牌子的哪种路由器信号强穿墙能力强(几根天线好)?

PycharmIdeaWebStorm等三种激活方式比较汇总

BAT Java面试完整汇总:面试准备(心态+简历)+面试题目+6条面试经验

BAT Java面试完整汇总:面试准备(心态+简历)+面试题目+6条面试经验

面试需要准备内容