为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
>
(大于)
看看调整后的 XSL 样式表:
示例
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select="catalog/cd[artist='Bob Dylan']">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
XSLT <xsl:sort>
元素
<xsl:sort>
元素用于对输出进行排序。
排序信息放在哪里
要对输出进行排序,只需在 XSL 文件的 <xsl:for-each>
元素内部添加一个 <xsl:sort>
元素:
示例
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<xsl:sort select="artist"/>
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
注意:select
属性指示要排序的 XML 元素。
XSLT <xsl:if>
元素
<xsl:if>
元素用于根据 XML 文件的内容进行条件测试。
<xsl:if>
元素
要对 XML 文件的内容进行条件 if 测试,请将 <xsl:if>
元素添加到 XSL 文档中。
语法
<xsl:if test="expression">
... 如果表达式为真,则输出一些内容...
</xsl:if>
将 <xsl:if>
元素放在哪里
要添加条件测试,请在 XSL 文件中的 <xsl:for-each>
元素内部添加 <xsl:if>
元素:
示例
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
<th>Price</th>
</tr>
<xsl:for-each select="catalog/cd">
<xsl:if test="price > 10">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
<td><xsl:value-of select="price"/></td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
注意:所需 test
属性的值包含要评估的表达式。
上面的代码只会输出价格高于 10 的 CD 的标题和艺术家元素。
XSLT <xsl:choose>
元素
<xsl:choose>
元素与 <xsl:when>
和 <xsl:otherwise>
结合使用,用于表达多个条件测试。
<xsl:choose>
元素
语法
<xsl:choose>
<xsl:when test="expression">
... 一些输出 ...
</xsl:when>
<xsl:otherwise>
... 一些输出 ....
</xsl:otherwise>
</xsl:choose>
选择条件的放置位置
要对 XML 文件进行多个条件测试,请将 <xsl:choose>
、<xsl:when>
和 <xsl:otherwise>
元素添加到 XSL 文件中:
示例
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<xsl:choose>
<xsl:when test="price > 10">
<td bgcolor="#ff00ff">
<xsl:value-of select="artist"/></td>
</xsl:when>
<xsl:otherwise>
<td><xsl:value-of select="artist"/></td>
</xsl:otherwise>
</xsl:choose>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
上述代码将在 CD 的价格高于 10 时,为“Artist”列添加粉色背景颜色。
另一个示例
以下是包含两个 <xsl:when>
元素的另一个示例:
示例
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<xsl:choose>
<xsl:when test="price > 10">
<td bgcolor="#ff00ff">
<xsl:value-of select="artist"/></td>
</xsl:when>
<xsl:when test="price > 9">
<td bgcolor="#cccccc">
<xsl:value-of select="artist"/></td>
</xsl:when>
<xsl:otherwise>
<td><xsl:value-of select="artist"/></td>
</xsl:otherwise>
</xsl:choose>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
上述代码将在 CD 的价格高于 10 时为“Artist”列添加粉色背景颜色,并在 CD 的价格高于 9 且低于或等于 10 时为其添加灰色背景颜色。
XSLT <xsl:apply-templates>
元素
<xsl:apply-templates>
元素将一个模板规则应用于当前元素或当前元素的子节点。
<xsl:apply-templates>
元素将一个模板应用于当前元素或当前元素的子节点。
如果我们给 <xsl:apply-templates>
元素添加一个 “select” 属性,它将仅处理与属性值匹配的子元素。我们可以使用 “select” 属性来指定子节点的处理顺序。
请看下面的 XSL 样式表:
示例
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="cd">
<p>
<xsl:apply-templates select="title"/>
<xsl:apply-templates select="artist"/>
</p>
</xsl:template>
<xsl:template match="title">
Title: <span style="color:#ff0000">
<xsl:value-of select="."/></span>
<br />
</xsl:template>
<xsl:template match="artist">
Artist: <span style="color:#00ff00">
<xsl:value-of select="."/></span>
<br />
</xsl:template>
</xsl:stylesheet>
XSLT - 在客户端
XSLT 可以用于在您的浏览器中将文档转换为 XHTML。通过向 XML 文件添加 XSL 样式表并让浏览器执行转换来实现这一点。即使这种方法运行良好,但并不总是希望在 XML 文件中包含样式表引用(例如,在非 XSLT 感知的浏览器中无法工作)。
一个更加灵活的解决方案是使用 JavaScript 来进行转换。
通过使用 JavaScript,我们可以:
- 进行浏览器特定的测试
- 根据浏览器和用户需求使用不同的样式表
这就是 XSLT 的美妙之处!XSLT 的一个设计目标是使其能够将数据从一种格式转换为另一种格式,支持不同的浏览器和不同的用户需求。
XML 文件和 XSL 文件
查看您在前几章中看到的 XML 文档:
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
.
.
</catalog>
查看 XML 文件
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th style="text-align:left">Title</th>
<th style="text-align:left">Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title" /></td>
<td><xsl:value-of select="artist" /></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
在浏览器中将 XML 转换为 XHTML
以下是在客户端将 XML 文件转换为 XHTML 所需的源代码:
示例
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc(filename)
{
if (window.ActiveXObject)
{
xhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
else
{
xhttp = new XMLHttpRequest();
}
xhttp.open("GET", filename, false);
try {xhttp.responseType = "msxml-document"} catch(err) {}
xhttp.send("");
return xhttp.responseXML;
}
function displayResult()
{
xml = loadXMLDoc("cdcatalog.xml");
xsl = loadXMLDoc("cdcatalog.xsl");
// IE 浏览器的代码
if (window.ActiveXObject || xhttp.responseType == "msxml-document")
{
ex = xml.transformNode(xsl);
document.getElementById("example").innerHTML = ex;
}
// Chrome、Firefox、Opera 等其他浏览器的代码
else if (document.implementation && document.implementation.createDocument)
{
xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
resultDocument = xsltProcessor.transformToFragment(xml, document);
document.getElementById("example").appendChild(resultDocument);
}
}
</script>
</head>
<body onload="displayResult()">
<div id="example" />
</body>
</html>
示例解释
loadXMLDoc()
函数执行以下操作:
- 创建一个 XMLHttpRequest 对象
- 使用 XMLHttpRequest 对象的 open() 和 send() 方法向服务器发送请求
- 获取响应数据作为 XML 数据
displayResult()
函数用于显示由 XSL 文件样式化的 XML 文件:
- 加载 XML 和 XSL 文件
- 测试用户使用的浏览器类型
- 如果是 Internet Explorer:
- 使用 transformNode() 方法将 XSL 样式表应用于 xml 文档
- 将当前文档的 body(id=“example”)设置为包含样式化的 xml 文档
- 如果是其他浏览器:
- 创建一个新的 XSLTProcessor 对象并将 XSL 文件导入其中
- 使用 transformToFragment() 方法将 XSL 样式表应用于 xml 文档
- 将当前文档的 body(id=“example”)设置为包含样式化的 xml 文档
XSLT - 在服务器端
为了使 XML 数据对所有类型的浏览器都可用,我们可以在服务器上转换 XML 文档,并将其作为 XHTML 发送回浏览器。
一个跨浏览器解决方案
在前一章中,我们解释了如何使用 XSLT 在浏览器中将文档从 XML 转换为 XHTML。我们使用了 JavaScript 和 XML 解析器进行转换。但是,在没有 XML 解析器的浏览器中,这种方法将无法工作。
为了使 XML 数据对所有类型的浏览器都可用,我们可以在服务器上转换 XML 文档,并作为 XHTML 发送回浏览器。
这是 XSLT 的另一个美妙之处。XSLT 的一个设计目标是使其能够在服务器上将数据从一种格式转换为另一种格式,向所有类型的浏览器返回可读数据。
XML 文件和 XSLT 文件
查看您在前几章中看到的 XML 文档:
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
.
.
</catalog>
查看 XML 文件
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th style="text-align:left">Title</th>
<th style="text-align:left">Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title" /></td>
<td><xsl:value-of select="artist" /></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
以下是在服务器上将 XML 文件转换为 XHTML 所需的 PHP 源代码
<?php
// 加载 XML 文件
$xml = new DOMDocument;
$xml->load('cdcatalog.xml');
// 加载 XSL 文件
$xsl = new DOMDocument;
$xsl->load('cdcatalog.xsl');
// 配置转换器
$proc = new XSLTProcessor;
// 附加 xsl 规则
$proc->importStyleSheet($xsl);
echo $proc->transformToXML($xml);
?>
以下是在服务器上将 XML 文件转换为 XHTML 所需的 ASP 源代码
<%
'加载 XML 文件
set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = false
xml.load(Server.MapPath("cdcatalog.xml"))
'加载 XSL 文件
set xsl = Server.CreateObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load(Server.MapPath("cdcatalog.xsl"))
'转换文件
Response.Write(xml.transformNode(xsl))
%>
XSLT - 编辑 XML
存储在 XML 文件中的数据可以从 Internet 浏览器中进行编辑。
打开、编辑和保存 XML
现在,我们将展示如何打开、编辑和保存存储在服务器上的 XML 文件。
我们将使用 XSL 来将 XML 文档转换为 HTML 表单。 XML 元素的值将写入 HTML 表单中的 HTML 输入字段中。 HTML 表单是可编辑的。 编辑数据后,数据将被提交回服务器,XML 文件将被更新(我们将显示 PHP 和 ASP 的代码)。
XML 文件和 XSL 文件
首先,看一下 XML 文档(“tool.xml”):
<?xml version="1.0" encoding="UTF-8"?>
<tool>
<field id="prodName">
<value>HAMMER HG2606</value>
</field>
<field id="prodNo">
<value>32456240</value>
</field>
<field id="price">
<value>$30.00</value>
</field>
</tool>
然后,看一下以下样式表(“tool.xsl”)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<form method="post" action="edittool.asp">
<h2>工具信息(编辑):</h2>
<table border="0">
<xsl:for-each select="tool/field">
<tr>
<td><xsl:value-of select="@id"/></td>
<td>
<input type="text">
<xsl:attribute name="id">
<xsl:value-of select="@id" />
</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select="@id" />
</xsl:attribute>
<xsl:attribute name="value">
<xsl:value-of select="value" />
</xsl:attribute>
</input>
</td>
</tr>
</xsl:for-each>
</table>
<br />
<input type="submit" id="btn\_sub" name="btn\_sub" value="Submit" />
<input type="reset" id="btn\_res" name="btn\_res" value="Reset" />
</form>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
上面的 XSL 文件循环遍历 XML 文件中的元素,并为每个 XML “field” 元素创建一个输入字段。 XML “field” 元素的 “id” 属性的值被添加到每个 HTML 输入字段的 “id” 和 “name” 属性中。 每个 XML “value” 元素的值被添加到每个 HTML 输入字段的 “value” 属性中。 结果是一个可编辑的 HTML 表单,其中包含来自 XML 文件的值。
然后,我们有第二个样式表:“tool_updated.xsl”。 这是将用于显示更新的 XML 数据的 XSL 文件。 这个样式表不会导致可编辑的 HTML 表单,而是静态的 HTML 表:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>更新的工具信息:</h2>
<table border="1">
<xsl:for-each select="tool/field">
<tr>
<td><xsl:value-of select="@id" /></td>
<td><xsl:value-of select="value" /></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
在上面的 “tool.xsl” 文件中,将 HTML 表单的 action 属性更改为 “edittool.php”。
“edittool.php” 页面包含两个函数:loadFile() 函数加载和转换 XML 文件以供显示,updateFile() 函数将更改应用于 XML 文件:
<?php
function loadFile($xml, $xsl)
{
$xmlDoc = new DOMDocument();
$xml
Doc->load($xml);
$xslDoc = new DOMDocument();
$xslDoc->load($xsl);
$proc = new XSLTProcessor();
$proc->importStyleSheet($xslDoc);
echo $proc->transformToXML($xmlDoc);
}
function updateFile($xml)
{
$xmlLoad = simplexml\_load\_file($xml);
$postKeys = array\_keys($\_POST);
foreach($xmlLoad->children() as $x)
{
foreach($\_POST as $key=>$value)
{
if($key == $x->attributes())
{
$x->value = $value;
}
}
}
$xmlLoad->asXML($xml);
loadFile($xml,"tool\_updated.xsl");
}
if($\_POST["btn\_sub"] == "")
{
loadFile("tool.xml", "tool.xsl");
}
else
{
updateFile("tool.xml");
}
?>
注意: 我们正在服务器上进行转换并将更改应用于 XML 文件。 这是一个跨浏览器解决方案。 客户端将只从服务器收到 HTML - 这将在任何浏览器中工作。
ASP 文件
为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!