Linux最新运维面试前准备(1),缓存架构技术

为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。

本份面试集锦涵盖了

  • 174 道运维工程师面试题
  • 128道k8s面试题
  • 108道shell脚本面试题
  • 200道Linux面试题
  • 51道docker面试题
  • 35道Jenkis面试题
  • 78道MongoDB面试题
  • 17道ansible面试题
  • 60道dubbo面试题
  • 53道kafka面试
  • 18道mysql面试题
  • 40道nginx面试题
  • 77道redis面试题
  • 28道zookeeper

总计 1000+ 道面试题, 内容 又全含金量又高

  • 174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

当一个事务提交了之后那这个数据库状态就发生了改变,哪怕是提交后刚写入一半数据到数据库中,数据库宕机(死机)了,那当你下次重启的时候数据库也会根据提交日志进行回滚,最终将全部的数据写入。

讲述一下你对LVS的理解:

LVS 目前已经被集成到linux内核模块中了,也就是linux服务器,该项目在linux内核中实现了基于IP的数据请求负载均衡的调度方案,终端互联网用户从外部访问公司的外部负载均衡器,终端用户的web请求会发送到LVS调度器,调度器会根据自己预设的算法决定将请求发送给后端的 某台WEB服务器,比如轮询的话会将外部请求平均发送给后端的所有服务器。终端用户访问LVS 调度器虽然会被转发到后端的真实服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,最终用户不管是访问哪台真实服务器,得到的服务内容都是一样的,整个集群对用户来说的是透明的,最后根据LVS工作模式的不同,真实服务器会选择不同的方式将用户需要的数据发送到终端用户,LVS工作模式分为NAT模式,TUN模式以及DR模式。

DR模式和NAT模式的区别:

NAT模式要求:

  1. LVS服务器需要有不同的网段
  2. 服务器的网关必须是LVS的IP地址。
    优点:1.安全,2.可以实现不同网段的数据请求
    缺点:因为在VS/NAT中请求和响应报文都需要通过负载调度器,伸缩能力有限,当服务器节点数目升到20时,调度器本身,有可能会成为系统的新瓶颈。
    DR模式
  3. 客户端将访问vip报文发送给LVS服务器;
  4. LVS服务器将请求报文的mac地址改为后端真是服务器的mac地址;
    优点:1.LVS服务器知识修改了mac地址,所以非常快速,并且LVS 不会成为瓶颈。
    缺点:1.要求较高,LVS服务器必须和后端真实服务器处于同一VLAN下;
    2.后端真实服务器直接影响客户端,对于后端真实服务器来说,并不安全。

什么是LAMP架构?

LAMP架构是Linux Apache Mysql PHP 的缩写,即把Apache Mysql PHP 安装在linux系统上,组成一个环境来运行PHP网站,这里的Apache是httpd服务,这些可以安装到一个机器上,但是httpd 和PHP安装在一台机器上(php作为httpd的一个模块存在的,他们两者必须要在一起,才能实现效果)。

Apache主要实现如下功能:
第一:处理http的请求、构建响应报文等自身服务
第二:配置让apache 支持PHP程序的响应(通过php模块或者fpm)
第三:配置Apache具体处理php程序的方法,如通过反向代理将php程序交给fcgi处理

Mysql主要实现如下功能:
第一:提供PhP程序对数据的存储
第二:提供php程序对数据的读取(通常情况下从性能)

php主要实现如下功能:
第一:提供apache的访问接口,即CGI或者Fast CGI(fpm)
第二:提供php程序的解释器
第三:提供mysql数据库的连接函数的基本函数。

python

一句话解释一下什么样的语言能够用装饰器?

函数可以作为参数传递的语言可以使用装饰器。

python内建的数据类型有哪些?

整型–int,布尔型–bool,字符串–str,列表–list,元组–tuple,字典–dict。
装饰器: 给函数增加新功能,不修改被装饰对象的源代码和调用方法

生成器: 生成器其实是一种特殊的迭代器,它不需要__iter__() 和__next__() 方法,只需要一个yiled 关键字

迭代器: 任何实现了__iter__() 和__next__() 方法的对象都是迭代器,iter() 返回迭代器自身, next() 返回容器中的下一个值

简述面向对象中__new__和__init__区别?

简述Django的生命周期?

第一步:浏览器发起请求

  • 第二步:WSGI创建socket服务端,接收请求(Httprequest)
  • 第三步:中间件处理请求
  • 第四步:url路由,根据当前请求的URL找到视图函数
  • 第五步:view视图,进行业务处理(ORM处理数据,从数据库取到数据返回给view视图;view视图将数据渲染到template模板;将数据返回)
  • 第六步:中间件处理响应
  • 第七步:WSGI返回响应(HttpResponse)
  • 第八步:浏览器渲染

python中的深拷贝和浅拷贝区别?

time datetime、random、os、sys
深拷贝和浅拷贝最根本的区别在于是否真正获取一个对象的复制实体,而不是引用。
假设B复制了A,修改A的时候,看B是否发生变化:
如果B跟着也变了,说明是浅拷贝,拿人手短!(修改堆内存中的同一个值)
如果B没有改变,说明是深拷贝,自食其力!(修改堆内存中的不同的值)

核心: 如果列表的元素包含可变数据类型, 一定要使用深拷贝。

zabbix监控

zabbix 是怎么实施监控的?

一个监控系统运行的流程是:
agent 需要安装到被监控的主机上,它负责定期收集各项数据,并发送到Zabbix server 端,zabbix server 将数据存储到数据库中,zabbix web根据数据在前端进行展示和绘图,这里agent收集数据分为主动和被动两种模式:
主动:agent 请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。

zabbix自定义发现怎么设置?

  1. 首先需要在模块中创建一个自动发现规则,这里需要一个名称个一个键值
  2. 过滤器中间要添加你需要用到的值。
  3. 然后创建一个监控项原型,也是一个名称个一个键值
  4. 然后需要去写一个这样的键值的收集
    自动发现实际上就是需要首先去获得需要监控得值,然后将这个值做为一个新的参数传递到另外一个收集数据得item中。

zabbix怎么实现微信电话短信报警得?
我当时做zabbix监控的时候使用的是睿象云实现的

  1. 首先需要注册睿象云,创建监控工具
  2. 在zabbix server端安装CA探针
  3. 在睿象云添加策略,选择以什么样的方式进行通知,以及通知人等信息
  4. 做测试的话可以down掉某台主机,然后等待告警,然后认领解决问题。

使用zabbix 监控过那些服务?
进程cpu查看负载和使用率
单机内存查看
单机磁盘查看
单机查看网络
nginx mysql

Shell

grep 的使用:
grep是全面搜索正则表达式并把行打印出来,它是一种强大的文本搜索工具,与正则表达式结合使用。
如何在脚本中使用参数?

第一个参数:$1,第二个参数$2
[root@Suns ~]# sh show.sh file.txt /mnt
[root@Suns ~]# cat show.sh
#!/bin/bash
cp $1 $2

ansible 与 saltstack 自动化运维工具

在这里插入图片描述

熟悉主流的高可用架构(nginx、Haproxy、LVS)

nginx和apache的区别??

1、二者最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程 。nginx处理静态文件好,耗费内存少.但无疑apache仍然是目前的主流,有很多丰富的特性.所以还需要搭配着来.当然如果能确定nginx就适合需求,那么使用nginx会是更经济的方式。
2、nginx的负载能力比apache高很多。最新的服务器也改用nginx了。而且nginx改完配置能-t测试一下配置有没 有问题。
3、apache重启的时候发现配置出错了,会很崩溃,改的时候都会非常小心翼翼现在看有好多集群站,前端nginx抗并发,后端apache集群, 配合的也不错。
4、nginx处理动态请求是鸡肋,一般动态请求要apache去做,nginx只适合静态和反向。
5、从经验来看,nginx是很不错的前端服务器,负载性能很好,nginx,用webbench模拟10000个静态文件请求毫不吃力。 apache对php等语言的支持很好,此外apache有强大的支持网络,发展时间相对nginx更久,bug少但是apache有先天不支持多核心处理负载鸡肋的缺点,建议使用nginx做前端,后端用apache。大型网站建议用nginx自代的集群功能。
6、大部分情况下nginx都优于APACHE,比如说静态文件处理、PHP-CGI的支持、反向代理功能、前端 Cache、维持连接等等。在Apache+PHP(prefork)模式下,如果PHP处理慢或者前端压力很大的情况下,很容易出现Apache进程数 飙升,从而拒绝服务的现象。
7、Apache在处理动态有优势,Nginx并发性比较好,CPU内存占用低,如果rewrite频繁,那还是Apache吧!
8、一般来说,需要性能的web 服务,用nginx 。如果不需要性能只求稳定,那就apache 吧。
Nginx、HAProxy、LVS三者的优缺点**
nginx 的优点:

  1. 工作在网络7层之上,可针对http应用做一些分流的策略,如针对域名、目录结构,它的正规规则比HAproxy 更为强大和灵活,所以目前为止广泛流行。
  2. nginx 对网络稳定性的依赖小,理论上能ping 通就能够进行负载均衡
  3. nginx安装与配置比较简单,测试也比较方便,基本能把错误日志打印出来
  4. 可以承担高负载压力且稳定,硬件条件不差的情况也能支撑几万的并发量,负载度比LVS小。
  5. nginx 可以通过端口检测到服务器内部的故障,如根据服务器处理网也返回的状态码、超时等,并会把返回的错误请求重新提交到另一个节点。
  6. 不仅仅是优秀的负载均衡器/反向代理软件,同时也是强大的WEB应用服务器,LNMP也是近些年非常流行的web架构,在高可用环境中稳定性也很好。
    nginx 的缺点:
  7. 适应范围较小,仅能支持http、https、Ema协议
  8. 对后端服务器的健康检查,只支持通过端口检测,不支持url检测,比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,nginx会上传切到另外一台服务器进行重新处理,而LVS就直接断掉了,如果是上传一个很大的文件或者很重要的文件或者重要的文件的话,用户可能会因此而不满。

LVS的优点:

  1. 抗负载能力强,是工作在网络4层之上仅做分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件中性能最强的,对内存和cpu资源消耗比较低。
  2. 配置性比较低,这是一个优点也是一个缺点,因为没有太多可以配置的能洗,所以并不需要太对的接触,大大的减少了人为配置出错的概率。
  3. 工作稳定,因为本身抗负载能力很强,自身有完整的双机热备方案,如LVS+Keepalived,不过我们在项目实施中用的最多的还是LVS/DR+keepalived.
  4. 无流量,LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO性能不会收到大流量的影响
  5. 应用范围广,因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括HTTP、数据库等
    LVS缺点:
    1、软件本身不支持正则表达式处理,不能做动静分离;而现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势所在。

2、如果是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂了,特别后面有Windows Server的机器的话,如果实施及配置还有维护过程就比较复杂了,相对而言,Nginx/HAProxy+Keepalived就简单多了。
HAProxy优点:

  1. HAproxy 是支持虚拟主机的,可以工作在4.7层(支持多网段)
  2. Haproy 的优点可以补充nginx的一些缺点,比如支持session的保持,cookie的引导,同时支持通过获取指定的url来检测后端服务器的状态
  3. Haproxy跟lvs类似,本身就是一种负载均衡的软件,单纯从效率上将会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
  4. HAProxy支持TCP协议的负载均衡转发,可以对MySQL读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,大家可以用LVS+Keepalived对MySQL主从做负载均衡。
  5. HAProxy负载均衡策略非常多,HAProxy的负载均衡算法现在具体有如下8种
    轮询,最小连接数 根据请求源IP进行哈希 权重 uri

/etc/passwd里的内容 :每段代表的意思
用户名 密码 用户id 用户组id 用户说明 用户家目录 用户的默认脚本

**shell写过什么脚本 实现什么功能 **

*iostat

用于输出cpu和磁盘的I/O相关的统计信息。

[root@Suns ~]# iostat
Linux 3.10.0-957.21.3.el7.x86_64 (Suns)         03/31/2021      _x86_64_        (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.35    0.00    0.35    0.00    0.00   99.29

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
vda               0.37         0.37         4.03     369195    4030672

第一行:系统版本、主机名 当前时间
avg-cpu 总体的cpu使用情况统计信息,对于多核cpu,这里指得是cpu得平均值
Device 各磁盘设备的IO统计信息。
也可以指定采样时间间隔与采样次数

vmstat

可以展现给定时间间隔的服务器的状态,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,io读写情况。

[root@Suns ~]# vmstat 2 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 305824 179676 1106552    0    0     0     2    2    5  0  0 99  0  0

表示每两秒采集一次服务器状态,1表示只采集1次
进程 内存 swap IO system cpu

linux系统相关

crontab 中 * * * * * 代表什么意思

前面五个*号代表五个数字,数字的取值范围和含义如下:
分钟 (0-59)
小時 (0-23)
日期 (1-31)
月份 (1-12)
星期 (0-6)//0代表星期天

top

第一行:当前时间、系统启动时间、当前系统登录用户数目、平均负载(1分钟,10分钟,15分钟)。
第二行:进程总数、运行进程数、休眠进程数、终止进程数、僵死进程数。
第三行:%us用户空间占用cpu百分比;
%sy内核空间占用cpu百分比;
%ni用户进程空间内改变过优先级的进程占用cpu百分比;
%id空闲cpu百分比,反映一个系统cpu的闲忙程度。越大越空闲;
%wa等待输入输出(I/O)的cpu百分比;
%hi指的是cpu处理硬件中断的时间;
%si值的是cpu处理软件中断的时间;
%st用于有虚拟cpu的情况,用来指示被虚拟机偷掉的cpu时间。
第四行:total总的物理内存;used使用物理内存大小;free空闲物理内存;buffers用于内核缓存的内存大小
第五行:交换分区

buffers于cached区别:

buffers指的是块设备的读写缓冲区,cached指的是文件系统本身的页面缓存。他们都是Linux系统底层的机制,为了加速对磁盘的访问。

top - 14:34:13 up 11 days, 14:01,  2 users,  load average: 0.01, 0.02, 0.05
Tasks:  80 total,   1 running,  79 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.2 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1776404 total,   305400 free,   184680 used,  1286324 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  1388744 avail Mem

netstat

这个命令用来查看当前建立的网络连接
Netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。如果你想确认系统上的 Web 服务有没有起来,你可以查看80端口有没有打开。以上功能使 netstat 成为网管和系统管理员的必备利器。

buffer(缓冲)是为了提高内存和硬盘(或其他I/O设备)之间的数据交换的速度而设计的。
cache(缓存)从CPU角度考虑,是为了提高cpu和内存之间的数据交换速度而设计的 从内存读取与磁盘读取角度考虑,cache可以理解为操作系统为了更高的读取效率,更多的使用内存来缓存可能被再次访问的数据。

描述Linux系统从开机到登陆界面的启动过程

⑴开机BIOS自检,加载硬盘。

⑵读取MBR,MBR引导。

⑶grub引导菜单(Boot Loader)。

⑷加载内核kernel。

⑸启动init进程,依据inittab文件设定运行级别

⑹init进程,执行rc.sysinit文件。

⑺启动内核模块,执行不同级别的脚本程序。

⑻执行/etc/rc.d/rc.local

⑼启动mingetty,进入系统登陆界面。

进程和线程的区别

1、进程是资源分配的最小单位,线程是程序执行的最小单位(资源调度的最小单位)
2、进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。
而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。

Docker

在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。

Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

DDoS攻击

就是分布式拒绝服务攻击,指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,可使目标服务器进入瘫痪状态。
防御:
1、尽可能对系统加载最新补丁,并采取有效的合规性配置,降低漏洞利用风险;
2、采取合适的安全域划分,配置防火墙、入侵检测和防范系统,减缓攻击。
3、采用分布式组网、负载均衡、提升系统容量等可靠性措施,增强总体服务能力。

RAID

可以充分发 挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能够确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会 受到损坏硬盘的影响。
以下为RAID 1的特点:

为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。

本份面试集锦涵盖了

  • 174 道运维工程师面试题
  • 128道k8s面试题
  • 108道shell脚本面试题
  • 200道Linux面试题
  • 51道docker面试题
  • 35道Jenkis面试题
  • 78道MongoDB面试题
  • 17道ansible面试题
  • 60道dubbo面试题
  • 53道kafka面试
  • 18道mysql面试题
  • 40道nginx面试题
  • 77道redis面试题
  • 28道zookeeper

总计 1000+ 道面试题, 内容 又全含金量又高

  • 174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

n有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值