• 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/ /
    /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()
  • 相关阅读:
    ~/.fvwm/.fvwm2rc
    我的.Xresources
    getopt得用法
    C语言编程好习惯(持续更新)
    关于stm32的USB学习笔记之usbcore.c
    Fvwm.desktop内容
    XP下JDK不能安装的解决办法
    以后网络上的好东东,在这里加个链接,呵呵!太丰富了!
    ISO/OSI七层参考模型
    VC 和 MFC 的一些常见问题
  • 原文地址:https://www.cnblogs.com/Xuuuuuu/p/9687228.html
Copyright © 2020-2023  润新知