为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
如果您当前还没有ubuntu的开发环境,可以参考 VMware Workstation安装Ubuntu-22.04虚拟机 这篇教程来安装ubuntu系统。
编译qemu模拟器
安装工具
安装编译qemu源码需要用到的工具,命令和日志如下:
max@ubuntu2204:~$ sudo apt update
[sudo] password for max:
Hit:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy InRelease
Hit:2 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy-updates InRelease
……
……
Building dependency tree... Done
Reading state information... Done
407 packages can be upgraded. Run 'apt list --upgradable' to see them.
max@ubuntu2204:~$
max@ubuntu2204:~$ sudo apt -y install python3.10-venv python3-sphinx ninja-build libpixman-1-dev pkg-config flex bison libfdt-dev libglib2.0-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
……
……
Setting up python3-docutils (0.17.1+dfsg-2) ...
Setting up python3-sphinx (4.3.2-1) ...
max@ubuntu2204:~$
下载qemu源码
qemu模拟器的官网地址为https://www.qemu.org/,主页如下:
在qemu官网download页面查看qemu发布的所有的版本源码包,如下:
通过wget下载qemu模拟器的源码,命令和日志如下:
max@ubuntu2204:~$ wget https://download.qemu.org/qemu-8.2.0.tar.xz
--2024-01-13 21:46:41-- https://download.qemu.org/qemu-8.2.0.tar.xz
Resolving download.qemu.org (download.qemu.org)... 143.244.51.238, 89.187.187.12, 185.180.13.211, ...
……
……
qemu-8.2.0.tar.xz 100%[===============================================================================================================>] 123.99M 2.54MB/s in 58s
2024-01-13 21:47:42 (2.14 MB/s) - ‘qemu-8.2.0.tar.xz’ saved [130008888/130008888]
max@ubuntu2204:~$
编译qemu模拟器
解压下载的qemu-8.2.0.tar.xz压缩包,并编译qemu源码,命令和日志如下:
max@ubuntu2204:~$ tar xvJf qemu-8.2.0.tar.xz
qemu-8.2.0/
qemu-8.2.0/.patchew.yml
qemu-8.2.0/ebpf/
……
……
qemu-8.2.0/subprojects/libvhost-user/libvhost-user-glib.h
qemu-8.2.0/subprojects/keycodemapdb.wrap
qemu-8.2.0/qemu.nsi
max@ubuntu2204:~$
max@ubuntu2204:~$ cd qemu-8.2.0
max@ubuntu2204:~/qemu-8.2.0$
max@ubuntu2204:~/qemu-8.2.0$ ./configure
Using './build' as the directory for build output
python determined to be '/usr/bin/python3'
python version: Python 3.10.12
……
……
Found ninja-1.10.1 at /usr/bin/ninja
Running postconf script '/home/max/qemu-8.2.0/build/pyvenv/bin/python3 /home/max/qemu-8.2.0/scripts/symlink-install-tree.py'
max@ubuntu2204:~/qemu-8.2.0$
max@ubuntu2204:~/qemu-8.2.0$ make -j8
changing dir to build for make ""...
make[1]: Entering directory '/home/max/qemu-8.2.0/build'
ninja: no work to do.
/home/max/qemu-8.2.0/build/pyvenv/bin/meson introspect --targets --tests --benchmarks | /home/max/qemu-8.2.0/build/pyvenv/bin/python3 -B scripts/mtest2make.py > Makefile.mtest
……
……
[9342/9342] Linking target tests/qtest/dbus-display-test
make[1]: Leaving directory '/home/max/qemu-8.2.0/build'
max@ubuntu2204:~/qemu-8.2.0$
上面命令会把qemu支持的所有平台的模拟器都编译出来,耗时会较长。如果想要节省编译时间,在执行configure命令时可以通过配置 target-list参数来选择只编译aarch64的模拟器,如下:
./configure --target-list=aarch64-softmmu,aarch64-linux-user,aarch64_be-linux-user --enable-kvm --enable-debug
到此qemu模拟器就编译完成了,查看生成的各个平台的模拟器,如下:
max@ubuntu2204:~/qemu-8.2.0$ ls build/qemu-system-*
build/qemu-system-aarch64 build/qemu-system-hppa build/qemu-system-microblazeel build/qemu-system-nios2 build/qemu-system-riscv64 build/qemu-system-sparc build/qemu-system-xtensaeb
build/qemu-system-alpha build/qemu-system-i386 build/qemu-system-mips build/qemu-system-or1k build/qemu-system-rx build/qemu-system-sparc64
build/qemu-system-arm build/qemu-system-loongarch64 build/qemu-system-mips64 build/qemu-system-ppc build/qemu-system-s390x build/qemu-system-tricore
build/qemu-system-avr build/qemu-system-m68k build/qemu-system-mips64el build/qemu-system-ppc64 build/qemu-system-sh4 build/qemu-system-x86_64
build/qemu-system-cris build/qemu-system-microblaze build/qemu-system-mipsel build/qemu-system-riscv32 build/qemu-system-sh4eb build/qemu-system-xtensa
后面就可以通过 build/qemu-system-aarch64 模拟arm64平台处理器来运行Linux kernel了。
安装arm64交叉编译工具链
当前我们选择用linaro的交叉编译工具链来编译uboot、kernel、busybox等,linaro交叉编译工具链的下载网址为:https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/,网页如下:
我们先创建一个~/cross-compiler目录,然后在该目录下下载交叉编译工具链压缩包gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz 并解压,命令和日志如下:
max@ubuntu2204:~$ mkdir ~/cross-compiler && cd ~/cross-compiler
max@ubuntu2204:~/cross-compiler$ wget https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
--2024-01-14 00:07:24-- https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
Resolving releases.linaro.org (releases.linaro.org)... 52.215.200.125
……
……
gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu. 100%[===============================================================================================================>] 112.43M 1.13MB/s in 4m 37s
2024-01-14 00:12:04 (416 KB/s) - ‘gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz’ saved [117896452/117896452]
max@ubuntu2204:~/cross-compiler$
max@ubuntu2204:~/cross-compiler$ tar xf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
max@ubuntu2204:~/cross-compiler$
把该交叉编译工具链的bin目录添加到 PATH 环境变量中,如下:
PATH=/home/max/cross-compiler/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin:$PATH
这样我们就可以使用这个交叉编译工具链了,如下:
max@ubuntu2204:~/cross-compiler$ aarch64-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=aarch64-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/home/max/cross-compiler/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/../libexec/gcc/aarch64-linux-gnu/7.5.0/lto-wrapper
……
……
Thread model: posix
gcc version 7.5.0 (Linaro GCC 7.5-2019.12)
max@ubuntu2204:~/cross-compiler$
到此arm64交叉编译工具链就安装完成了。
编译linux kernel
安装工具
在ubuntu上安装编译内核需要用到的工具,命令和日志如下:
max@ubuntu2204:~$ sudo apt install -y build-essential libncurses-dev bison flex libssl-dev libelf-dev git
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
……
……
Setting up build-essential (12.9ubuntu3) ...
Processing triggers for man-db (2.10.2-1) ...
Processing triggers for libc-bin (2.35-0ubuntu3.1) ...
max@ubuntu2204:~$
下载linux内核源码
我们这里下载的是linux官方最新的longterm版本linux-6.1.y 的内核,从linux官网下载源码耗时较长,所以我们选择从清华仓库中下载。大家可以参考 获取Linux内核源码 这篇文章来查看linux官方发布的所有版本和各种快速下载内核源码方法。下载命令和日志如下:
max@ubuntu2204:~$ git clone https://mirrors.tuna.tsinghua.edu.cn/git/linux-stable.git -b linux-6.1.y
Cloning into 'linux-stable'...
remote: Enumerating objects: 12104695, done.
Receiving objects: 100% (12104695/12104695), 2.58 GiB | 6.23 MiB/s, done.
remote: Total 12104695 (delta 0), reused 0 (delta 0), pack-reused 12104695
Resolving deltas: 100% (10399156/10399156), done.
Checking objects: 100% (33554432/33554432), done.
Updating files: 100% (78744/78744), done.
max@ubuntu2204:~$
进入linux-stable目录查看下载的内核的版本为Linux 6.1.72,命令和日志如下:
max@ubuntu2204:~$ cd linux-stable/
max@ubuntu2204:~/linux-stable$ git branch -vv
* linux-6.1.y 7c58bfa711cb [origin/linux-6.1.y] Linux 6.1.72
max@ubuntu2204:~/linux-stable$
编译linux内核源码
进入到linux-stable 内核目录下,通过menuconfig配置内核选项,命令和日志如下:
max@ubuntu2204:~/linux-stable$ make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 O=build menuconfig
make[1]: Entering directory '/home/max/linux-stable/build'
GEN Makefile
#
# using defaults found in arch/arm64/configs/defconfig
#
*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.
make[1]: Leaving directory '/home/max/linux-stable/build'
max@ubuntu2204:~/linux-stable$
执行上面的命令会进入到menuconfig 菜单页面,如下:
在菜单中依次选择如下选项:
Device Drivers > Block devices > RAM block device support
并且把 “Default RAM disk size (kbytes)”调整为65536,调整后界面如下:
然后选择save保存,并退出menuconfig菜单,到此内核选项就配置完成了。下面开始编译内核镜像,命令和日志如下:
max@ubuntu2204:~/linux-stable$ make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 O=build -j8
make[1]: Entering directory '/home/max/linux-stable/build'
SYNC include/config/auto.conf.cmd
GEN Makefile
……
……
LD [M] sound/soc/tegra/snd-soc-tegra210-sfc.ko
make[1]: Leaving directory '/home/max/linux-stable/build'
max@ubuntu2204:~/linux-stable$
查看生成的Image内核镜像,命令和日志如下:
max@ubuntu2204:~/linux-stable$ file build/arch/arm64/boot/Image
build/arch/arm64/boot/Image: Linux kernel ARM64 boot executable Image, little-endian, 4K pages
max@ubuntu2204:~/linux-stable$
到此内核镜像Image就编译完成了。
编译busybox
Busybox的官方网页为https://busybox.net/ ,我们通过wget下载主页上的BusyBox 1.36.1版本的源码,命令和日志如下:
max@ubuntu2204:~$ wget https://busybox.net/downloads/busybox-1.36.1.tar.bz2
--2024-01-14 11:50:58-- https://busybox.net/downloads/busybox-1.36.1.tar.bz2
Resolving busybox.net (busybox.net)... 140.211.167.122
……
……
busybox-1.36.1.tar.bz2 100%[================================================================================>] 2.41M 1.11MB/s in 2.2s
2024-01-14 11:51:15 (1.11 MB/s) - ‘busybox-1.36.1.tar.bz2’ saved [2525473/2525473]
max@ubuntu2204:~$
解压busybox源码并进入源码目录,然后通过menuconfig菜单选择静态编译,即选择“Build static binary (no shared libs)”选项,命令和日志如下:
max@ubuntu2204:~$ tar xf busybox-1.36.1.tar.bz2
max@ubuntu2204:~$ cd busybox-1.36.1/
max@ubuntu2204:~/busybox-1.36.1$ make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 menuconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/basic/split-include
……
……
*** End of configuration.
*** Execute 'make' to build the project or try 'make help'.
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
pts/basic/fixdep
HOSTCC scripts/basic/split-include
……
……
*** End of configuration.
*** Execute 'make' to build the project or try 'make help'.
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**