Linux运维工程师笔试题第十三套

这套题的出处是http://blog.51cto.com/nolinux/1670406  ,看到了周末闲着没事就做一做,答案都是我结合自己的工作得到的,不一定百分百准确,现在拿出来跟各位分享一番。

1、请写出五种系统性能分析工具,并简述其作用和特点
[我的答案] top、free、vmstat、iostat、perf等等等等,如果你想装逼,可以回答fio,blktrace,oprofile。
具体的作用和特点这里不多说了,但是我着重要推荐vmstat,很实用很棒的一个命令。可以去移步看看https://rorschachchan.github.io/2018/01/03/从vmstat命令里看服务器瓶颈/ 这篇文章。
2、请写出web服务器的调优要点
[我的答案]以nginx为例,个人总结有如下几个要点:
1)尽可能的少用http,因为http是有开销的;
2)尽可能的使用CDN;
3)添加Expire/Cache-Control头,这个头是缓存用的,可以缓存图片和flash那样不轻易更改的文件,减少访问时间;
4)启动gzip压缩,这个没啥好说的了;
5)尽可能少的重定向,重定向是需要时间的,增加一次重定向就会多一次web需求;
6)如果可以,把ajax也做缓存;
7)减少dns查询,很多网页会有外站的广告,这些广告也是会启动dns查询的,所以如果不缺钱,减少这种广告;

3、请写出你知道或使用过的nginx扩展模块(注意标注知道和使用)
[我的答案] 随便说几个我使用过的,这玩意到时候结合工作过的情况说说吧:
Nginx负载均衡模块:nginx-upstream-fair
非阻塞访问redis模块:redis2-nginx-module
分布式图片实时动态压缩:ngx-fastdfs

4、请简述你了解的自动化配置管理工具特点和运行原理
[我的答案]我用的最多的就是ansible和saltstack,这俩都是python的,对于我这个半路出家的更亲切。
ansible基于SSH协议传输数据,不用装agent,配置比较简单,对windows支持惨不忍睹;
saltstack使用消息队列zeroMQ传输数据,如果1000台以上的话它速度比ansible还要快,要安装agent,对windows支持同样惨不忍睹;

5、目前,有一个文件,内容如下:
         172.16.100.1
         172.16.100.2
         172.16.100.3
         172.16.100.4
   请使用while和ssh命令,登录文件内的ip并执行hostname命令

[我的答案]这个还真没有什么思路,不过我觉得是要搭配“<”输入重定向的吧。
PS,为啥不用ansible...哪怕pssh也可以啊!

6、请使用awk命令将如下两份文件中名字相同的两行合并起来
   A文件:
          大广州 21岁
          广州大 23岁
          州广大 22岁
          广州大 24岁
   B文件:
          广州大 男
         大广州 男
          州广大 男
          广州大 男
输出效果:
    `大广州 21岁 男`**
[我的答案]#awk 'NR==FNR{a[$1]=$2}NR>FNR{print $0,a[$1]}'  B文件名 A文件名

PS,做完这道题,我已经不认识“广”“州”这两个字了...

7、请使用绘图的方式简述TCP/IP三次握手和四次断开的交互过程
[我的答案]这种图满大街都是了,我这个灵魂画师在这里就不污染各位的眼睛,不过这里推荐各位去看一篇文章:https://mp.weixin.qq.com/s?__biz=MjM5NzA1MTcyMA==&mid=2651160450&idx=2&sn=1128438fa5287b6cee503880698642b2&scene=21 对原理讲的浅显易懂。
多说一句,网易招聘java的时候也问这个问题,不过他们问的是“为什么要三次握手?”
 
8、请根据你的理解,简述高可用服务体系的相关组件,并列举该组件的具体实现服务名字
[我的答案] 我觉得这个题是要问一些架构上的东西,以我工作环境为例:
统一配置:zookeeper、Consul、Etcd+Confd(这俩比较常见于动态管理nginx)
前端展示:nginx
消息队列:activemq、kafka
读写分离中间件:atlas
日志分析:elk

9、请根据你的理解,简述负载均衡的实现方式
[我的答案]负载均衡主要分为两种,硬件(F5)和软件(NGINX、Haproxy、LVS),硬件效果比较牛逼,它是把4-7层的负载均衡功能做到一个硬件里面,但是价格昂贵最近用的越来越少了。
软件的负载均衡又分两种,四层和七层:四层是在IP/TCP协议栈上把网络包的IP地址和端口进行修改,达到转发的目的;七层就是在应用层里把HTTP请求、URL等具体的应用数据发送到具体的服务器上。四层的效率比七层的高,四层一般安排在架构的前端,七层一般就是在具体服务器的前端。
软件负载均衡比较常见的几个分配方式如下:
轮询:访问请求依序分发给后端服务器;
加权轮询:访问请求依序分发后端服务器,服务器权重越高被分发的几率也越大;
最小连接数: 将访问请求分发给当前连接数最小的一台后端服务器,服务器权重越高被分发的几率也越大;

10、请根据你的理解,简述数据迁移工具和数据存储服务有哪些以及相关特点
[我的答案]由于我公司主要都放在了阿里云,数据库用过的就这么几个:mysql、redis和elasticsearch。对于Storm和Hadoop这俩我还是初学者。
mysql:关系型数据库;
elasticsearch:全文检索框架,这玩意逐渐向一个数据库靠拢了;
redis:键值储存数据库;
mysql的数据迁移最常见的就是mysqldump,但是要注意使用不当会锁表;
redis的数据迁移最稳妥的方法就是主从同步:在slave端启动redis,然后执行#slaveof master机器IP地址 6379,然后使用#info的时候查看#master_link_status如果是up那就是OK了,再执行#slaveof no one,提示OK就是OK了;
Elasticsearch的数据迁移工具就是Elasticsearch-Exporter,不过我对它仅仅只是了解,用的并不多;

最后的最后,如果您觉得本文对您升职加薪有帮助,那么请不吝赞助之手,刷一下下面的二维码,赞助本人继续写更多的博文!

原文地址:http://blog.51cto.com/chenx1242/2058818

时间: 2024-11-09 00:51:10

Linux运维工程师笔试题第十三套的相关文章

Linux运维工程师笔试题第十套

1.Nginx是如何实现高并发的? service nginx start之后,然后输入#ps -ef|grep nginx,会发现Nginx有一个master进程和若干个worker进程,这些worker进程是平等的,都是被master fork过来的.在master里面,先建立需要listen的socket(listenfd),然后再fork出多个worker进程.当用户进入nginx服务的时候,每个worker的listenfd变的可读,并且这些worker会抢一个叫accept_mute

Linux运维工程师笔试题第十二套

本套都是shell的命令,enjoy it~ 1)假设某变量aaa="史蒂芬周星驰",现在只想要输出后面的"周星驰",应该怎么办? aaa="史蒂芬周星驰" echo ${aaa:3:3} [评析]已知变量总字符数和要切的起始字符数,就可以用这种方法切变量了.这种方法比较常见的应用于变量是长路径的情况下. 2)使用curl获取www.163.net的响应头信息 curl -I http://www.163.net [评析]curl -i 网址除了

Linux运维工程师面试题第七套

1.解释top命令和vmstat命令 top命令是实时监控当前系统的总体进程状态以及各个程序的进程状态,vmstat可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.其中它主要用途是查看虚拟内存情况. [评析]vmstat若是直接使用的话,就是现在当前那一刻的服务器状态值,一般来说vmstat都是搭配时间和采集次数使用,比如#vmstat 2 5,就是每两秒采集一下服务器状态,一共采集5下.如果是#vmstat 2,那就是一直在采集. 2.

Linux运维工程师面试题第八套

1.从AAA.log文件中提取"james"或者"curry",同时不包含"kobe"的行,然后提取":"分割的第五个字段. cat AAA.log|grep -E "james|curry"|grep -v "kobe"|awk -F ":" '{print $5}' [评析]搜寻"A or B"的方法就是grep -E "A|B&qu

Linux运维工程师面试题第五套

本次试题全部都是写脚本,一共有十道题,enjoy it~ 1.编写个shell脚本将当前目录下大于10K的文件转移到/tmp目录下. #Author:Name #E-mail:E-mail Address #Description:          写程序的时候加上姓名,联系方式和描述是一个好习惯. #!/bin/bash ls -l|awk '$5>10240 {print $9}' >name.txt    #先把大于10K的文件名都保存到name.txt的文件 for filename

Linux运维工程师面试题第四套

Python 1.假设 AAA=[1,1,1,3,5,2,6,1,7,3,45],请问使用python如何在将list里重复的数字过滤掉? >>>list(set(AAA)) 2.简述一下list和tripe的不同 list是动态的,设定完了可以删减元素,而tripe是静态的,不能删减元素,而且tripe会自动去重. 3.简述一下search()和match()的区别 4.如何在生成一个随机数? >>>import random >>>random.r

linux运维工程师面试题练习

前两天去某游戏公司面试.面试官为运维部女主管.由于笔试写得一塌糊涂,直接被鄙视得不行.女面试官连说话都懒得说.其实很多笔试题都是基础类型,考点也都知道,奈何不好好总结准备.掉坑里了!闲着也是闲着,不如几个题目来做做吧! 题目链接: http://www.yunweipai.com/archives/4443.html 一.Linux操作系统知识 常见的Linux发行版本都有什么?你最擅长哪一个?它的官网网站是什么?说明你擅长哪一块? a,centos redhat ubuntu b.centos

Linux运维工程师面试题第一套

1)Linux启动大致过程? 加载BIOS–>读取MBR–>Boot Loader–>加载内核–>用户层init依据inittab文件来设定系统运行的等级(一般3或者5,3是多用户命令行,5是界面)–>init进程执行rc.syninit–>启动内核模块–>执行不同级别运行的脚本程序–>执行/etc/rc.d/rc.local(本地运行服务)–>执行/bin/login,就可以登录了. [评析]基本看过<鸟哥私房菜>的目录就能知道,这是第五

《Linux运维工程师面试题汇总》 第一套

1.简述常用服务端口 答案: HTTP: 80    FTP: 21    DNS: 53    POP3:110    SMTP: 25    SSH: 22    NGINX: 80    SQUID: 3128    NAGIOS: 5666 MEMCHACHED:11211    MYSQL: 3360    TOMCAT: 8080    NFS: 2049    TLENET: 23    HTTPS:443    SAMBA:  UDP 138  TCP 139 POSTFIX: