19个运维工程师面试集锦
第一部分:Linux基础
-
题目1:
有一百个图片文件,它们的地址都是
http://down.xiaomi.com/img/1.png
http://down.xiaomi.com/img/2.png
…
一直到 http://down.xiaomi.com/img/100.png
如何批量下载这100个图片文件,并找出其中大于500KB的文件。
$: echo http://down.xiaomi.com/img/{1..100}.png > url.txt
#得到的100个图片的url地址是以空格分隔的,我们可以用vim编辑该文件,把空格替换成回车
:s/ /\r/g
#再用 wget 命令批量下载
wget -i url.txt -P .
#最后查找大于500k的文件
find . -size +500k
-
题目2:
一个文本文件 info.txt 的内容如下:
aa,201
zz,502
bb,1
ee,42
每行都是按照逗号分隔,其中第二列都是数字,请对该文件按照第二列数字从大到小排列。
awk -v FS=',' '{print $2}' info.txt | sort -rn
-
题目3:
查看当前 Linux 服务器是否监听80端口,如果在监听,请找出其进程ID,并结束该进程。
kill `lsof -i:80 | tail -2 | awk '{print $2}'`
-
题目4:
使用 curl 或 wget 命令获取 http 服务的 header 信息。
curl -I www.baidu.com
wget --server-response www.baidu.com
-
题目5:
关于 Linux 的用户账号,下面说法正确的有:
A.用户的密码,是以明文形式存储在 /etc/passwd 文件中的
B.用户的密码,是以密文形式存储在 /etc/passwd 文件中的
C.用户的密码,是以密文形式存储在 /etc/shadow 文件中的
D.用户登录的时候,会把用户的密码明文与保存的密码做对比
答案:C
-
题目6:
对于N块硬盘组成的硬盘阵列,下面的说法哪个是错误的:
A.raid1 与 raid5 相比,读取数据的速度 raid5 更快
B.raid1 与 raid5 相比,raid5 的磁盘空间利用率更高
C.raid1 在 (N-1)块磁盘损坏的情况下,不影响数据的完整性
D.raid0 相比于raid1、raid5,读写速度最快
-
题目7:
负载均衡,你了解的常用软件有哪些?
请写出至少三种以上,并评价各自的缺点。
(1)nginx
缺点:
1.nginx仅能支持http,https和email协议,这样就在使用范围上面小了。
2.对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测。不支持session的直接保持,但能通过ip_hash来解决。
3.nginx工作在应用层,所以负载均衡会受到socket个数影响。
(2)LVS
缺点:
1.软件本身不支持正则表达式处理,不能做动静分离;而现在许多网站在这方面都要较强需求,这个就是Nginx/HAproxy + Keepalived的优势所在。
2.如果网站比较庞大的话,LVS+Keepalived实施起来就比较复杂了,特别是有Windows Server机器。
(3)HAproxy
1.HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS。
2.如果是用作有关网站负载均衡工作的话,HAproxy比不上Nginx,因为Nginx本身就提供有HTTP服务。
-
题目8:
执行 $ time sleep 2
,输出如下:
real 0m2.003s
user 0m0.004s
sys 0m0.000s
请说明 real、user、sys三者具体代表的意思和区别。
real时间是指挂钟时间,也就是命令开始执行到结束的时间。这个短时间包括其他进程所占用的时间片,和进程被阻塞所花费的时间。
user时间是指进程花费在用户模式的CPU时间,这是唯一真正用于执行进程所花费的时间,其他进程和花费阻塞状态中的时间没有计算在内。
sys时间是指花费在内核模式中的CPU时间,代表在内核中执行系统调用所花费的时间,这也就是真正由进程使用的CPU时间。
-
题目9:
nginx rewrite 规则中 last、break、redirect、permanent 的含义
1.rewrite break -url
重写后,直接使用当前资源,不再执行location里余下的语句,完成本次请求,地址栏url不变。
2.rewrite last -url
重写后,马上发起一个新的请求,再次进入server块,重试location匹配,超过10次匹配不到报500错误,地址栏不变
3.rewrite redirect
返回302临时重定向,地址栏显示重定向后的url,,爬虫不会更新url(临时)
4.rewrite permanent
返回301永久重定向,地址栏显示重定向后的url,爬虫更新url
-
题目10:
WEB 服务 cookies 和 session 的区别
Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群,数据库,文件中。
Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。
-
题目11:
http 1.0 和 http 1.1 下有何区别?http 2.0 的主要变化或优势有哪些?
区别:
1.HTTP/1.0协议使用非持久连接,即在非持久连接下,一个tcp连接只传输一个Web对象;
2.HTTP/1.1默认使用持久连接(然而,HTTP/1.1协议的客户机和服务器可以配置成使用非持久连接)。在持久连接下,不必为每个Web对象的传送建立一个新的连接,一个连接中可以传输多个对象!
http2.0的优势:
1.采用二进制格式传输数据,而非http1.1文本格式,二进制格式在协议的解析和优化扩展上带来了很多的优势和可能。
2.对消息头采用Hpack进行压缩传输,能够节省消息头占用的网络流量,http1.1每次请求,都会携带大量冗余的头信息,浪费了很多带宽资源。
3.异步连接多路复用。
4.Server Push,服务器端能够更快的把资源推送到客户端。
5.保持与HTTP1.1语义的向后兼容性也是该版本的一个关键。
第二部分:安全部分
-
题目12:
请列举 WEB 常见安全问题(不少于三项),阐述其原理、危害。
sql注入:拖库,撞库,爆破,删除数据
跨站脚本攻击:向web页面里插入恶意html代码 用户浏览该页面时,嵌入其中的html代码会被执行
失效的身份认证和会话管理
-
题目13:
请列举常见DOS攻击类型,并分别介绍其原理和防御方法。
Land攻击:向某个设备发送数据包,并将数据包的源IP和目的IP都设置成攻击目标的地址。
Teardrop攻击:利用OS处理分片重叠保温的漏洞进行攻击。
DDos分布式拒绝服务攻击:攻击者攻破了多个系统。并利用这些系统去集中攻击其他目标。成千上万的主机发送大量的请求,受害设备因为无法处理而拒绝服务。
Ping of Death攻击:通过构造出重缓冲区大小异常的ICMP包进行攻击,不断ping。。
Smurf攻击:攻击者冒充受害主机的IP地址,向一个大的网络发送echo request的定向广播包,此网络的许多主机都作出回应,受害主机会受到大量的echo reply消息。
SYN Flooding攻击:利用TCP连接的3此握手过程进行攻击。攻击者主机使用无效的IP地址,与受害主机进行TCP3次握手。在完成第二步后,受害主机就会处于开放会话
的请求之中,但会话并未真正完成。受害主机必须等待连接超时,之后才能清除未完成的对话。在此期间,受害主机将会连续收到这样的请求,最终因耗尽用来管理绘画资源的资源而停止响应。
-
题目14:
服务器遭到入侵,作为安全管理人员,你应做如何处理?
系统遭受攻击并不可怕,可怕的是面对攻击束手无策,下面就详细介绍下在服务器遭受攻击后的一般处理思路。
1.切断网络
所有的攻击都来自于网络,因此,在得知系统正遭受黑客的攻击后,首先要做的就是断开服务器的网络连接,这样除了能切断攻击源之外,也能保护服务器所在网络的其他主机。
2.查找攻击源
可以通过分析系统日志或登录日志文件,查看可疑信息,同时也要查看系统都打开了哪些端口,运行哪些进程,并通过这些进程分析哪些是可疑的程序。这个过程要根据经验和综合判断能力进行追查和分析。下面的章节会详细介绍这个过程的处理思路。
3.分析入侵原因和途径
既然系统遭到入侵,那么原因是多方面的,可能是系统漏洞,也可能是程序漏洞,一定要查清楚是哪个原因导致的,并且还要查清楚遭到攻击的途径,找到攻击源,因为只有知道了遭受攻击的原因和途径,才能删除攻击源同时进行漏洞的修复。
4.备份用户数据
在服务器遭受攻击后,需要立刻备份服务器上的用户数据,同时也要查看这些数据中是否隐藏着攻击源。如果攻击源在用户数据中,一定要彻底删除,然后将用户数据备份到一个安全的地方。
5.重新安装系统
永远不要认为自己能彻底清除攻击源,因为没有人能比黑客更了解攻击程序,在服务器遭到攻击后,最安全也最简单的方法就是重新安装系统,因为大部分攻击程序都会依附在系统文件或者内核中,所以重新安装系统才能彻底清除攻击源。
6.修复程序或系统漏洞
在发现系统漏洞或者应用程序漏洞后,首先要做的就是修复系统漏洞或者更改程序bug,因为只有将程序的漏洞修复完毕才能正式在服务器上运行。
7.恢复数据和连接网络
将备份的数据重新复制到新安装的服务器上,然后开启服务,最后将服务器开启网络连接,对外提供服务。
第三部分:网络部分
-
题目15:
请简述TCP的三次握手过程。
首先Client端发送连接请求报文,Server端接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了
-
题目16:
发现系统中存在大量TIME_WAIT,分析原因并提出三条以上优化建议。
对于一个处理大量短连接的服务器,如果是由服务器主动关闭客户端的连接,将导致服务器端存在大量的处于TIME_WAIT状态的socket, 严重影响服务器的处理能力,甚至耗尽可用的socket,停止服务.
TIME_WAIT是TCP协议用以保证被重新分配的socket不会受到之前残留的延迟重发报文影响的机制,是必要的逻辑保证.
解决方法:
1、缩短TIME_WAIT的等待时间
2、允许将TIME-WAIT sockets重新用于新的TCP连接
3、开启TIME-WAIT sockets的快速回收
4、使用长连接
第四部分:Python部分
-
题目17:
xrange 和 range 的异同。
range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。xrange生成的不是一个数组,而是一个生成器。
-
题目18:
列表 A 和 B,使用Python快速获取 A 和 B 中的共有元素。
a = set(A)
b = set(B)
print(a.intersection b)
-
题目19:
有20台服务器,需要在所有机器上 echo “123”,要求同时并行操作5台服务器,请使用Python或shell写出相关代码。
import time
import sys
import os
import threadpool
def cmd(ip):
#需先设置远程无密码执行命令
os.system(‘ssh ip echo "123" 2>&1’)
time.sleep(2)
pool = threadpool.ThreadPool(5) #创建一个线程池,包括线程数10个
requests = threadpool.makeRequests(cmd, ip_list) #传递函数和参数
[pool.putRequest(req) for req in requests] #将请求放入线程池进行处理
pool.wait()
来源:IT运维技术圈
相关文章:
19个运维工程师面试集锦
第一部分:Linux基础 题目1: 有一百个图片文件,它们的地址都是 http://down.xiaomi.com/img/1.png http://down.xiaomi.com/img/2.png … 一直到 http://down.xiaomi.com/img/100.png 如何批量下载这100个图片文件,并找出其中大…...
一芯解锁「看家」新体验,航芯高性价比猫眼智能锁方案,让安全看得见!
随着智能门锁市场规模逐年递增,行业“内卷”也持续激烈。伴随着一路加码的功能卖点,智能门锁制造商正面临着产品功能芯片增多和成本优化的双重挑战。消费者不仅追求易用性、智能化和美观性,更期待产品具有良好的性价比。 而在智能门锁的众多…...
IPv4 vs IPv6:了解这两大协议的关键差异
我发现,很多找代理IP的朋友在后台问我的问题都很相似!都被配置IP的最后一步:选择IPv4还是IPv6?给难住了。昨晚我一晚没睡,终于整理出对IPv4和IPv6的对比总结,从概念阐述到特点对比,再解答IPv6总…...
C#知识|XML文件操作
哈喽,你好啊,我是雷工! 之前有朋友在群里聊XML文件操作的问题,今天正好学习相关内容, 以下为学习笔记。 01 XML介绍 ①:XML是eXtensible Markup Language的缩写,即扩展标记语言。 ②:XML是一种可以用来创建自定义的标记语言,由W3C(万维网协会)创建,用来克服HTML的局…...
TCP 和 UDP 之间的区别?
从 连接,可靠性,传输方式等方面: TCP 是面向连接的协议,在发送数据的时候需要先通过 TCP 的三次握手,而 UDP 是无连接的协议,可以直接传输数据TCP 通过超时重传,流量控制和拥塞控制等方法保障了…...
共用体、枚举类型、typedef定义,位运算
共用体 union 共用体名 { 数据类型1 成员变量1; 数据类型2 成员变量2; 数据类型3 成员变量3; ... }; 共用体所有成员变量,所占空间重叠,占共同的空间。 枚举 将变量的值一一列举出来。 enum 枚举类型名…...
【运维】Linux如何批量解压文件夹下的很多个`.tar.gz`文件
要在Linux中批量解压这些.tar.gz文件,你可以使用tar命令配合find或者bash的通配符功能。这里是一个简单的步骤来解压所有这些.tar.gz文件: 方法 1: 使用 find 命令 find . -type f -name "*.tar.gz" -exec tar -xzvf {} \;这个命令的意思是从…...
centos9安装jumpserver并导入域用户
jumpserver是使用最广泛的开源堡垒机,依赖 mysql/mariadb、postgresql、redis 3个数据库。 当前版本为 4.0.1,安装包: jumpserver-ce-v4.0.1-x86_64.tar.gz 0、安装centos9,安装docker 1、解压安装包 cd /opt tar -xf jumpser…...
将一批 csv 的第一行抄进 Excel
某目录下有一批结构相同的 csv 文件: stock_301500.csvstock_320688.csv CODE,DT,OP,CL 301500,2023-06-02,71,67.8 301500,2023-06-05,79.35,72.61 301500,2023-06-06,75.8,77.65 CODE,DT,OP,CL 320688,2023-06-02,33,32 320688,2023-06-05,28.37,30.23 320688,2…...
【传知代码】LAD-GNN标签注意蒸馏(论文复现)
近年来,随着图神经网络(GNN)在各种复杂网络数据中的广泛应用,如何提升其在大规模图上的效率和性能成为了研究的热点之一。在这个背景下,标签注意蒸馏(Label Attention Distillation,简称LAD&…...
JVM调优篇:探索Java性能优化的必备种子面试题
JVM内存模型 首先面试官会询问你在进行JVM调优之前,是否了解JVM内存模型的基础知识。这是一个重要的入门问题。JVM内存模型主要包括程序计数器、堆、本地方法栈、Java栈和方法区(1.7之后更改为元空间,并直接使用系统内存)。 正常…...
常见的内存泄漏及其解决方案
内存泄漏是Java开发中一个常见且令人头疼的问题,即使在使用垃圾回收机制的Java中,也无法完全避免内存泄漏的出现。当对象不再需要时却仍然占据着内存,导致内存使用量不断增加,最终可能导致 OutOfMemoryError。本文将深入探讨Java中…...
SQLSERVER 触发器记录表某个字段更新记录
想要记录该字段的原值和现有值,触发器写法: CREATE TRIGGER tr_UpdateEmployeeDepartment ON Employees AFTER UPDATE AS BEGINSET NOCOUNT ON; -- 避免多余的计数消息IF UPDATE(Department) -- 检查是否更新了 Department 字段BEGININSERT INTO Update…...
现代前端架构介绍(第一部分):App是如何由不同的构建块构成的
远离JavaScript疲劳和框架大战,了解真正重要的东西 几周前,我的同事们对我们的前端架构、代码结构和面临的挑战很感兴趣。在做了几次关于如何构建可扩展且健壮的前端的演讲后,我觉得把它们都总结一下并与社区分享我们的策略是一个不错的主意。…...
Android 11 关于按键拦截/按键事件处理分享
系统在frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java处理按键事件,不管是物理按键还是 SystemUI的nav_bar上的虚拟按键(使用了KeyEvent类中的,比如:KeyEvent.KEYCODE_VOLUME_UP). 主要注意的有两个函数: interceptKeyBef…...
最新TomatoIDC开源虚拟主机销售系统源码/有插件系统模块+模版系统
源码简介: 最新TomatoIDC开源虚拟主机销售系统源码,它有一个方便扩展的插件和模版系统模块,使用实用。 TomatoIDC,一款遵循GPL3.0协议的开源虚拟主机销售系统,不仅有着可以轻松扩展的插件系统和模版系统,…...
简单的docker学习 第4章docker容器
第4章 Docker容器 4.1 容器基础 4.1.1 容器启动流程 通过 docker run 命令可以启动运行一个容器。该命令在执行时首先会在本地查找指定的镜像,如果找到了,则直接启动,否则会到镜像中心查找。如果镜像中心存在该镜像,则会下载到…...
PHP中如何声明数组
数组是一种数据结构,用于存储一系列的值或对象,这些值或对象可以通过索引(或键)来访问。在PHP中,数组是一种复合类型的数据结构,可以存储多个值,这些值可以是整型、字符串、布尔值,甚…...
JavaScript前端面试题——fetch
什么是fetch? fetch:fetch是浏览器内置的api,用于发送网络请求 ajax&axios&fetch的关系 ajax:ajax 是一种基于原生 JavaScript 的异步请求技术。它使用 XMLHttpRequest 对象来发送请求和接收响应。 axios:…...
在Qt中获取Windows中进程的PID
主要是用到了系统自带的工具【tasklist.exe】 利用 QProcess调用这个tasklist有一点坑,已经在代码中指出了。 指定为csv格式输出的话,在后处理时比较方便。 QList<quint64> listProcessIdentifier(QString processName) {QProcess process;QStrin…...
8.1-java+tomcat环境的配置+代理
一、回顾 1.安装nodejs,这是一个jdk一样的软件运行环境 yum -y list installed|grep epel yum -y install nodejs node -v 2.下载对应的nodejs软件npm yum -y install npm npm -v npm set config .....淘宝镜像 3.安装vue/cli command line interface 命令行…...
gorm框架实现基本的增删改查
连接数据库 package mainimport ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql" )func main() {db, err : gorm.Open("mysql","root:roottcp(127.0.0.1:3306)/test?charsetutf8mb4&parseTimeTrue&locLocal…...
AUTOSAR介绍
1、AUTOSAR架构介绍 AUTOSAR(AUTomotive Open System ARchitecture,汽车开放系统架构)是汽车和软件行业领先公司的全球合作联盟,为智能移动开发和建立标准化的软件框架以及开放的E/E系统架构。考虑到目前和未来市场中不同的汽车E/E架构,AUTOS…...
10. 计算机网络HTTP协议
1. 前言 无论是作为后端开发、前端开发、测试开发程序员或者是运维人员,在面试过程中,大概率都会被问到 HTTP 协议相关题目。 因为伴随着 2010 年之后移动互联网在全世界的高速发展,各种各样的浏览器(Chrome、FireFox、Safari 等)层出不穷,也诞生了诸多服务端开发的语言…...
“职场中,不要和上司作对”,真的很重要吗?你认同这句话吗?
在职场上,领导对下属的期望永远都只有两个字,不是忠诚,也不是能力,而是省心。 领导对下属的要求就是别让我操心。 在职场中,通常面临的首要问题就是如何与领导相处。 把职场中的前辈当作老师来尊重,你尊…...
可视化目标检测算法推理部署(一)Gradio的UI设计
引言 在先前RT-DETR模型的学习过程中,博主自己使用Flask框架搭建了一个用于模型推理的小案例: FlaskRT-DETR模型推理 在这个过程中,博主需要学习Flask、HTML等相关内容,并且博主做出的页面还很丑,那么,是…...
【PyTorch】基于YOLO的多目标检测项目(一)
【PyTorch】基于YOLO的多目标检测项目(一) 【PyTorch】基于YOLO的多目标检测项目(二) 目标检测是对图像中的现有目标进行定位和分类的过程。识别的对象在图像中显示有边界框。一般的目标检测方法有两种:基于区域提议的…...
spring boot 实现 Stream 钉钉事件订阅
1: 参考链接 https://open.dingtalk.com/document/orgapp/develop-stream-mode-push-server 2:钉钉开放平台订阅配置 配置之后运行一下上面提供的链接 里面的main方法,验证通道 3:订阅启动方式 EventListenerThread eventListenerThrea…...
基于 Rough.js 的 Vue 散点图绘制
本文由ScriptEcho平台提供技术支持 项目地址:传送门 基于 Rough.js 的 Vue 散点图绘制 应用场景 本代码展示了如何使用 Rough.js 库在 Vue 应用程序中绘制散点图。Rough.js 是一个轻量级 JavaScript 库,用于创建具有手绘风格的可视化效果。散点图是一…...
【c++】用c++指针传递来模拟“靶向治疗”
一:源码: #include <iostream>void targetedTherapy(bool* flag) {if (*flag == false) {*flag = true;} }int main() {//代表一系列癌细胞//true为健康细胞 false为癌变细胞bool cancerCell[7] = {true, false, true, true, true, true, false};for (int i = 0; i &…...
joomla 网站建设教程/代运营公司哪家好一些
11.25事物隔离级别事物日志redo undo事物锁 begin; update事物日志性能优化 innodb_flush_log_at_trx_commit0|1|2|3innodb事务日志相关配置; show variables like %innodb_log%;通用日志通用日志:记录对数据库的通用操作,包括错误的SQL语句通…...
资海集团网站建设/网站怎么做外链
Mybatis通用Mapper极其方便的使用Mybatis单表的增删改查 2.2.0 新增SqlMapper,可以使用MyBatis直接执行sql,详细文档2.2.0版本之后,通过SqlMapper可以支持多表的操作,但是需要在代码中直接写SQL。 即使不使用通用mapper࿰…...
品牌策划包括哪些内容/巩义关键词优化推广
近年备孕夫妻出现宫外孕大出血,医院上演生死时速的新闻屡见不鲜,而我们不孕医生对于碰到宫外孕的病人也是精神紧绷,究其原因是宫外孕一旦发生破裂,短时间内就会失血过多,危及孕妇生命。本文就具体了解关于宫外孕的知识…...
做网站 信科网站建设便宜/成都网站制作费用
关于base64编码Encode和Decode编码的几种方式 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便。在实际应用上,Base64除了能将Binary资料可视化之外,也…...
陕西交通建设集团网站/谷歌搜索引擎大全
将HTML加载到webview后,我会在布局的右侧和底部出现白色条纹.对于正确的我使用以下方法解决它:setScrollBarStyle(WebView.SCROLLBARS_INSIDE_OVERLAY);但是,我尝试了很多选项来删除底部的一个没有成功.即使在我阅读了所有相关帖子之后.如果需要更多代码,请告诉我.a…...
wordpress 加入js/seo免费课程视频
此博文通过MATLAB APP Design实现对学生成绩的处理,具体的功能包括读取表格数据、添加学生数据、计算总成绩、成绩排序+以及表格的保存。 一、APP 界面设计展示 1. 在画布中拖入面板、表格和四个按钮,布局如下。将面板的title写为“学生成绩计算器”并居中,将四个按钮的t…...