0%

面试总结



一面:

1.为什么离职

2.年龄多大

3.未来的职业规划

4.一台服务器我想知道他的运行情况会参考哪些指标,正不正常,怎们判断,实际监控那个(监控)

1
2
3
4
#系统层面
CPU:使用率、负载
内存:使用率
磁盘:使用率,IO

5.监控磁盘的IO情况,它对应的命令或者参数是的什么?

1
2
3
4
iostat
该命令用于监控CPU占用率、平均负载值及I/O读写速度等。
该命令输出的每个字段都非常有用:r/s和w/s指的是IOPS;rkB/s和wkB/s指的是每秒的数据存取速度;await指的是平均等待时间,一般都在10ms左右。
另外,iotop、ioprofiler、blktrace可以监控更多底层的I/O活动信息,vmstat、mpstat也有一些I/O相关的信息输出。

6.故障案例:

登录一台centos或者ubutun的设备,进去之后发现命令卡顿,一般这种情况是什么原因造成的?排查思路那些?

1
2
3
输入命令卡顿基本上是网络原因,你看下ping ip 是不是丢包严重。
硬件方面,磁盘可能没有装好,内存可能已经跑满了
再看看负载是不是过高

7.用的什么操作系统

8.centos6和centos7的区别

1
2
服务管理 centos6 采用 service和chconfig管理服务centos7 采用systemctl 管理服务,但是还可以使用service和chkconfig命令下面以sshd服务为实例 ...
防火墙

9.根据业务问题,内核调优

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#接收套接字缓冲区大小的默认值(以字节为单位)。
net.core.rmem_default = 262144
#接收套接字缓冲区大小的最大值(以字节为单位)。
net.core.rmem_max = 16777216
#发送套接字缓冲区大小的默认值(以字节为单位)。
net.core.wmem_default = 262144
#发送套接字缓冲区大小的最大值(以字节为单位)。
net.core.wmem_max = 16777216
#用来限制监听(LISTEN)队列最大数据包的数量,超过这个数量就会导致链接超时或者触发重传机制。
net.core.somaxconn = 262144
#当网卡接收数据包的速度大于内核处理的速度时,会有一个队列保存这些数据包。这个参数表示该队列的最大值。
net.core.netdev_max_backlog = 262144
#表示系统中最多有多少TCP套接字不被关联到任何一个用户文件句柄上。如果超过这里设置的数字,连接就会复位并输出警告信息。这个限制仅仅是为了防止简单的DoS攻击。此值不能太小。
net.ipv4.tcp_max_orphans = 262144
#表示那些尚未收到客户端确认信息的连接(SYN消息)队列的长度,默认为1024,加大队列长度为262144,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_syn_backlog = 262144
#表示系统同时保持TIME_WAIT套接字的最大数量。如果超过此数,TIME_WAIT套接字会被立刻清除并且打印警告信息。之所以要设定这个限制,纯粹为了抵御那些简单的DoS攻击,不过,过多的TIME_WAIT套接字也会消耗服务器资源,甚至死机。
net.ipv4.tcp_max_tw_buckets = 10000
#表示允许系统打开的端口范围。
net.ipv4.ip_local_port_range = 1024 65500
#以下两参数可解决生产场景中大量连接的服务器中TIME_WAIT过多问题。
#表示开启TCP连接中TIME_WAIT套接字的快速回收,默认为0,表示关闭。
net.ipv4.tcp_tw_recycle = 1
#表示允许重用TIME_WAIT状态的套接字用于新的TCP连接,默认为0,表示关闭。
net.ipv4.tcp_tw_reuse = 1
#当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭。
net.ipv4.tcp_syncookies = 1
#表示系统允许SYN连接的重试次数。为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK包。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量。
net.ipv4.tcp_synack_retries = 1
#表示在内核放弃建立连接之前发送SYN包的数量。
net.ipv4.tcp_syn_retries = 1
#减少处于FIN-WAIT-2连接状态的时间,使系统可以处理更多的连接。
net.ipv4.tcp_fin_timeout = 30
#这个参数表示当keepalive启用时,TCP发送keepalive消息的频度。默认是2小时,若将其设置得小一些,可以更快地清理无效的连接。
net.ipv4.tcp_keepalive_time = 600
#探测消息未获得响应时,重发该消息的间隔时间(秒)。系统默认75秒。
net.ipv4.tcp_keepalive_intvl = 30
#在认定连接失效之前,发送多少个TCP的keepalive探测包。系统默认值是9。这个值乘以tcp_keepalive_intvl之后决定了,一个连接发送了keepalive探测包之后可以有多少时间没有回应。
net.ipv4.tcp_keepalive_probes = 3
#确定TCP栈应该如何反映内存使用,每个值的单位都是内存页(通常是4KB)。第一个值是内存使用的下限;第二个值是内存压力模式开始对缓冲区使用应用压力的上限;第三个值是内存使用的上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。示例中第一个值为786432*4/1024/1024=3G,第二个值为1048576*4/1024/1024=4G,第三个值为1572864*4/1024/1024=6G。
net.ipv4.tcp_mem = 786432 1048576 1572864
#此参数限制并发未完成的异步请求数目,应该设置避免I/O子系统故障。
fs.aio-max-nr = 1048576
#该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表linux系统中可以打开的文件的数量。
fs.file-max = 6815744
#第一列,表示每个信号集中的最大信号量数目。
#第二列,表示系统范围内的最大信号量总数目。
#第三列,表示每个信号发生时的最大系统操作数目。
#第四列,表示系统范围内的最大信号集总数目。
#(第一列)*(第四列)=(第二列)
kernel.sem = 250 32000 100 128
#表示尽量使用内存,减少使用磁盘swap交换分区,内存速度明显高于磁盘一个数量级。
vm.swappiness = 0

10.数据库并发大怎们解决

1
2
3
4
5
6
1.缓存式的Web应用程序架构:在Web层和DB(数据库)层之间加一层cache层
2.增加Redis缓存数据库
3.增加数据库索引
4.页面静态化:效率最高、消耗最小的就是纯静态化的html页面,所以们尽可能使我们的网站上的页面采用静态页面来实现,这个最简的方法其实也是最有效的方法。用户可以直接获取页面.

https://www.boxuegu.com/news/647.html

11.数据库出现异常,出现慢查询增加,排查思路是什么?

1
2


12.加入一个客户一个上海联通本地用户,他为访问一个人北京的bgp的一个IP,他发现ping北京的IP延迟不稳定,甚至有丢包的问题,通常导致这种问题的原因是什么,怎们定位?

13.能否接受夜班


二面:

1.上一家公司做什么的

2.数据库调优做过吗

3.如果让你学数据库你愿意吗

4.现再所做的事情有没有跟客户打交到的


三面


1.离职原因是什么

2.你上一家公司的人员数量规模多大

3.你上一家公司是做什么业务的

4.离职前的薪资是多少



一面:


1.自我介绍:介绍你上一家的主要工作内容,工作职责

3.nginx的正向代理和反向代理

1
2
3
4
5
6
正向代理,(内部上网)客户端<—>代理->服务端
反向代理,用于公司集群架构中,客户端->代理<—>服务端

1.区别在于形式上服务的”对象”不一样
2.正向代理代理的对象是客户端,为客户端服务
3.反向代理代理的对象是服务端,为服务端服务

4.高可用是用什么做的

1
keepalived

5.7层负载与4层负载的区别

1
2
3
四层负载均衡数据包在底层就进行了分发,而七层负载均衡数据包则是在最顶层进行分发、由此可以看出,七层负载均衡效率没有四负载均衡高。
但七层负载均衡更贴近于服务,如:http协议就是七层协议,我们可以用Nginx可以作会话保持,URL路径规则匹配、head头改写等等,这些是四层负载均衡无法实现的。
#注意:四层负载均衡不识别域名,七层负载均衡识别域名

6.平时发布代码是怎们发布的,流程是什么

1
2
3
4
5
6
7
1.首先搭建gitlab仓库
2.配置管理员在gitlab上创建项目或仓库,并设定多个分支
3.源码放在源码project;编译后可用于发布包放在可发布的project。
4.开发人员通常只分配develop权限且在develop分支进行开发,开发人员不允许直接提交代码到master(主分支),如需提交到master,则需要发出合并请求,由项目管理者确认后决定是否合并。
5.源代码合并后,由合并者打tag触发jenkins构建出用于发布的版本包,并推送到对应发布代码的project中,同步tag,同时根据最新tag发布到测试环境。
6.经过审查测试确认无误,在经代码发布带生产环境
7.如果发布后出现异常,则使用jenkins按上一次正常tag进行回滚。

7.代码上线是否成功,怎们检查他发布成功了呢?应用是否部署成功?

1
2
1.在jenkins的web页面查看发布流程,最后显示seccess就可以了
2.还有一个验证方式就是,登录部署好的页面,查询登录测试是否成功,或者去curl他的url,查看返回的状态码

8.服务器数量有多少?

1
30台

9.代码通过什么方式传到在jenkins实现上线的?

1
ssh

10.一键回滚功能怎们回滚到上一版本?

1
查找当前新的版本的进程并杀掉,将上一版本备份的数据包放在jenkins的代码目录下,再次执行部署

11.发布应用是使用多个模块组成的吗?那么多的模块怎们一键更新呢?

1
jenkins一键发布

12.mysql的备份方式是什么方式备份的?有没有了解过其他的方式备份?

1
2
物理备份:xtrabackup
逻辑备份:mysqldump 全备、增备、差异备份

13.备份的数据库数据保存在哪,本地还是传输到别的地方保存?

1
本地和备份服务器

14.mysql为什么用MHA高可用?只用主从复制不可以嘛?

1
2
3
4
5
6
7
MHA工作原理:
1.保存主库上的所有 binlog 数据
2.对比数据,找到最新的从库(slave)
3.使用slave上的relay_log(中继日志)把其他从库上的数据补全一致
4.将slave提升为新的主库,将其他从库指向新的主库
5.使用 binlog 将 slave 数据补全与原主库数据一致
6.其他从库开启主从复制

15.主从复制同步用的那种方式?

1
延时、半同步

16.用的mysql那种版本,用过8.0吗(mysql7)?

1
mysql 5.6

17.主从复制的原理?怎们实现的?从库怎们获取书库?

1
2
3
4
5
6
7
8
1)通过change master to语句告诉从库主库的ip,port,user,password,file,pos
2)从库通过start slave命令开启复制必要的IO线程和SQL线程
3)从库通过IO线程拿着change master to用户密码相关信息,连接主库,验证合法性
4)从库连接成功后,会根据binlog的pos问主库,有没有比这个更新的
5)主库接收到从库请求后,比较一下binlog信息,如果有就将最新数据通过dump线程给从库IO线程
6)从库通过IO线程接收到主库发来的binlog事件,存储到TCP/IP缓存中,并返回ACK更新master.info
7)将TCP/IP缓存中的内容存到relay-log中
8)SQL线程读取relay-log.info,读取到上次已经执行过的relay-log位置点,继续执行后续的relay-log日志,执行完成后,更新relay-log.info

18.添加一台从库,为什们要基于GTID服务开启主从复制?

1
GTID会抓取最近的一个点,但是前提是先把主库的数据备份并导入到从库,当从库开启GTID后会自动同步主库数据

19.ELK怎们收集用户数据日志?

1
filebeat或者nxlog收集 ,使用logstash过滤

20.zabbix除了监控一些系统指标,有监控业务吗?有脱离模板,自己写脚本监控吗?

1
2
有监控业务。
web服务的监控、sql服务的监控

21.zabbix基于什么获取监控数据的

1
2
3
4
5
6
zabbix监控系统运行大概流程:
zabbix agent需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端;
zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agent收集数据分为主动和被动两种模式:

主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。

22.使用SNMP 监控交换机、路由器怎们实现的?基于什么监控的? snmp协议

1
2
1.安装snmp,添加server端ip,在web界面配置snmp接口,创建监控和相应模板。最后更新
2.基于snmp协议监控的

23.有用过zabbix的自动发现、关联模板、报警升级吗

1
使用过

24.你们公司的监控告警多吗?主要是哪方面会设置微信报警?

1
每天大约报警信息几百条,一般只要告警都会发微信

25.使用过自动化运维工具吗?Puppet、SaltStack、Ansible..

1
2
使用过自动化运维工具是:ansible
好处:容易上手

26.代码发布有用过ansible吗?

1
一般用ssh推送,暂时没有用过ansible

27.之前了解过K8S吗?

1
2




一面




一面


1.zabbix监控的过程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
安装在主机上的zabbix_agentd负责监控主机(具体的监控任务是由agentd端的Item来完成的),并收集数据,然后将数据发送到zabbix server端。Server端将数据存储到数据库中,zabbix web(通过php+httpd)再将数据在前端以图表或者文字的形式展现出来。

#客户端:数据采集
#服务端:分析,报警,触发器
#mysql:数据存储
#web:页面展示


##############
zabbix最重要的五个组成部分:Item、Trigger、Action、Media、User(其实应该还有个Event,不过这个表现的不直观),翻译一下就是监控元素、触发器、动作、报警介质、用户,接下来一个一个的详谈,最后在梳理他们之间的关系。
Item:监控项,你需要监控的内容
Trigger: 触发器,你监控的内容满足什么条件时报警
Action: 动作,触发器出发时怎么告警
Media:告警媒介,告警采用什么方式
User:用户是什么用户

1584541718105

2.zabbix写的脚本获取的数据怎们传到web界面上

1
2
3
4
5
6
7
LogRemoteCommands=1     #开启脚本功能

1.编写获取数据的脚本(需要放在/etc/zabbix/zabbix_agentd.d/目录下),
UserParameter=who_num,(who_num为键值 ==>> s需要在web端添加)
2.web页面创建自定义监控项
3.在自定义监控项页面添加键值
4.检测是否获取数据

3.服务端的脚本和web端的监控项配好了,但是始终检测不到数据,怎们解决,排查思路是什么?

1
查看看脚本权限(是否有执行权限),如果权限没有问题就在自己的服务器执行一下看是否正确

4.是否做过自定义脚本监控

1
连接数...

5.mysql的主从是怎们做的( 原理 ) ( 做主从前一定要保持两个数据库数据基本一致 )*”***“*

1
2
3
4
5
6
7
1.主库和从库同时添加server_id,出库开启binlog
2.主库创建主从复制用户,并获取当前的状态信息(log_name 和 log_pos)
3.从库执行chage master to 添加信息
4.从库开启主从 start slave 开启I/O和sql线程
5.主库开启dump线程,用来给从库I/O线程传binlog
6.SQL线程,会读取relay log文件中的日志,并解析成sql语句逐一执行;
7.

6.如何添加一台从库

1
2
3
4
5
6
7
1.根据数据量选择备份(mysqldump、xtranbackup)打点备份并打包
2.将打包的数据传输需要增添从库的数据库服务器上面
3.将主数据库传过来的数据导入到新的数据库中
4.查询主库传来的备份数据的打点信息
5.在新的从库执行chage master to 添加新获取的log_file数据和log_pos数据
6.启动主从同步 start salve
7.查看从库的主从状态

7.GTID工作原理简单介绍

1
2


8.LVM的原理

1
物理分区(或硬盘)通过 fdisk 调整系统识别码成为 LVM 的识别码,然后再经过 pvcreate 的命令将他转成 LVM 最底层的物理卷(PV) 基于PV创建VG,VG包含若干个PE,通过划分VG中的PE组成LV,LV格式化成文件系统,最终进行挂载。

9.inode是什么?如果磁盘空间还有,无法往里面写文件了,是什么原因?

1
2
3
4
inode是文件号码
如果向磁盘写入数据提示如下错误:No Space left on device,通过df -h查看磁盘空间,发现没满,什么原因导致的。什么情况下导致这个问题的发生。
#解答:
可能是inode数量被消耗尽了。

10.上家公司的服务器规模,都跑着 什么服务?

1
2


11.nginx和tomcat是放在一台机器上面的吗?对外提供访问的是动态页面还是静态页面?如果客户访问动态页面,操作数据库了怎们办?

1
2


12.阿里云熟悉吗,都熟悉那些模块?

1
2
3
4
5
6
7
8
9
10
物理架构     ⾥云服务

服务器 ECS
负载均衡 SLB
mysql RDS
redis redis
NFS NAS
外⽹IP EIP
⽹络 VPC
防⽕墙 安全组

13.ssl证书配置nginx那个字段里面

1
server层

14.通常使用ansible做什么

15.ansible和mysql的端口

16.keepalived的工作原理

1
Keepalived高可用两台机器之间是通过 VRRP进行通信的, VRRP是通过竞选机制来确定主备的,主的优先级高于备,因此,工作时主会优先获得所有的资源,备节点处于等待状态,当主宕机的时候,备节点就会接管主节点的资源,然后顶替主节点对外提供服务

17.k8s的service和ingress的区别

1
2


18.k8s中pod的是什么,他里面容器是怎们通信的?

1
2


19.你感觉你在运维这条路上走多远呢?

20.为什们离职?



你平时的工作内容是什么?

你最擅长的技术方向是什么?

做过系统调优吗?

你能为我们公司带来什么?

你对加班的看法?

问你职业规划?

问你跟同事关系处理