天天看点

美团运维SRE+运维开发一面面经汇总网搜面经    简历部分

目录

网搜面经

1.怎么理解SRE

2.说说你在实习的主要工作

3.工作期间遇到问题,服务出现报错会怎么解决(上网查啊,看日志定位,修改)

4.Linux了解多少,项目中会用到吗,你会负责些什么(还不错,比较熟练,必然用到,配置更改服务上线)

5.nginx了解多少,有什么作用(反向代理,负载均衡)

6.怎么做的负载均衡,有没有用过什么负载均衡算法(nginx做,用nginx自带那几个配置,目前没有自己写过相关负载均衡算法)

7.有没有用过Python写一些自动化脚本,说说过程(无,我是真的菜)

8.devops开发流程(这个能说好多,建议自己去看)

9.对于Apache Tomcat服务器这些了解多少(就项目入手说经常用Tomcat啊,也会经常看经常改配置文件启动脚步什么的)

10.说说你的日志分析方法(kafka拿数据然后给flink做正则清洗,采集端集成了字节码增强agent可以配合打点,具体参考google dapper论文)

11.大数据工具了解多少,都说说(Hadoop,spark,MapReduce,HBASE都有了解,搭建过很多大数据完全分布式集群在上面跑过APM,个人做得是流计算方面所以说了一下flink)

12.数据存储端,数据库和缓存的可靠性设计(MySQL和Redis相关知识)

13.输入URL的整个过程(访问www.baidu.com的过程)

14.HTTP 怎么传图片的

15.osi七层模型、tcp四层、五层模型及每层功能

16.对于交换机和路由器自己做过配置没?

17.UDP包的结构

18.三次握手与四次挥手过程?什么时候进入time_wait状态

19.如何新增用户

20.给普通用户下放权限

21.Shell学习的情况:变量加载顺序,用户下.bashrc文件和/etc/bashrc文件中变量冲突是怎么读取变量的?

22.Shell的参数:$0 $1 $# 之类的意义,编写脚本输入是字符串 输出是是否是ip;shell的正则表达式,如何进行提取ip(awk);怎么拼接两个字符;怎么对两个数相加

23.怎么修改ip地址(永久和临时)

24.Du –sh 和 ls –l 查看文件大小的区别

25.怎么查看文件最后一行

26.查看过Nginx开启的进程没有?nginx有哪些模块?service模块的作用?

27.装过Mysql没有?主从复制原理

28.Python:编写简单的装饰器;python中使用过哪些内建的包?有哪些数据类型?命名空间与变量查找顺序?

29.TCP与UDP的区别

30.get与post的区别,什么时候get、什么时候post

31.四次挥手的过程。什么时候time_wait,为什么time_wait,为什么是2MSL。

32.python算法复杂度

简历部分

网搜面经

1.怎么理解SRE

网站可靠性工程师(SRE),就像解决运维和基础设施的软件工程师。SRE 专注于创建可扩展、高可用且可靠的软件系统。

DevOps是为了填补开发端和运维端之间的信息鸿沟,改善团队之间的协作关系。不过需要澄清的一点是,从开发到运维,中间还有测试环节。DevOps其实包含了三个部分:开发、测试和运维。

DevOps = Development + Operations,简而言之,通过研发(dev)把运维(ops)全部自动化(automation)

所涉及的范围呢:代码管理和部署,配置管理,监控,应急响应,故障处理,压力测试,容灾等等

Devops的核心概念就是通过脚本实现自动化 -> Automation

2.说说你在实习的主要工作

论文、专利

3.工作期间遇到问题,服务出现报错会怎么解决(上网查啊,看日志定位,修改)

先查日志,根据日志定位出错原因与位置,看是不是配置文件出的问题,若出现问题自己不知如何修改,可以上开源软件官网查看标准配置。

4.Linux了解多少,项目中会用到吗,你会负责些什么(还不错,比较熟练,必然用到,配置更改服务上线)

5.nginx了解多少,有什么作用(反向代理,负载均衡)

nginx是一个高性能的HTTP和反向代理服务器,其特点是占用内存少,并发能力强.

反向代理

            客户端(用户A)向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。而客户端始终认为它访问的是原始服务器B而不是服务器Z。由于防火墙作用,只允许服务器Z进出,防火墙和反向代理共同作用保护了院子资源服务器B。

美团运维SRE+运维开发一面面经汇总网搜面经    简历部分

6.怎么做的负载均衡,有没有用过什么负载均衡算法(nginx做,用nginx自带那几个配置,目前没有自己写过相关负载均衡算法)

7.有没有用过Python写一些自动化脚本,说说过程(无,我是真的菜)

参见主机信息监控脚本

8.devops开发流程(这个能说好多,建议自己去看)

哪些公司在用?

DevOps正在增长,尤其是在大企业中:调查发现,DevOps的接受度有了显著提高。74%的受访者已经接受了DevOps,而去年这一比例为66%。目前,在81%的大企业开始接受DevOps,中小企业的接受度仅为70%。

那么具体而言都有些公司在采用DevOps呢?Adobe、Amazon、Apple、Airbnb、Ebay、Etsy、Facebook、LinkedIn、Netflix、NASA、Starbucks、Target(泛欧实时全额自动清算系统)、Walmart、Sony等等。

他们怎么实施的?

首先,大企业正在自下而上接受DevOps,其中业务单位或部门(31%)以及项目和团队(29%)已经实施DevOps。不过,只有21%的大企业在整个公司范围内采用了DevOps。 

其次,在工具层面上,DevOps工具的用量大幅激增。Chef和Puppet依然是最常用的DevOps工具,使用率均为32%。Docker是年增长率最快的工具,用量增长一倍以上。Ansible的用量也有显著增加,使用率从10%翻倍至20%。

9.对于Apache Tomcat服务器这些了解多少(就项目入手说经常用Tomcat啊,也会经常看经常改配置文件启动脚步什么的)

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。其主要的应用场景是解析动态程序代码(JAVA) JSP程序可以处理Tomcat界面

tomcat+nginx的负载均衡:

安装jdk

cd /usr/local/tomcat/webapps/ROOT    vim test.jsp

sh startup.sh 开启tomcat服务

nginx配置文件写入后端 加入反向代理 reload

主机curl 172.25.1.2/test.jsp测试

tomcat+nginx+memcache会话保持

购物车 当前登录状态、最新发布的消息及好友状态

cookie是存储在本地浏览器,而session存储在服务器。

美团运维SRE+运维开发一面面经汇总网搜面经    简历部分

10.说说你的日志分析方法(kafka拿数据然后给flink做正则清洗,采集端集成了字节码增强agent可以配合打点,具体参考google dapper论文)

11.大数据工具了解多少,都说说(Hadoop,spark,MapReduce,HBASE都有了解,搭建过很多大数据完全分布式集群在上面跑过APM,个人做得是流计算方面所以说了一下flink)

redis:

hadoop:用Java编写的一个开源软件框架,用于分布式存储和对在计算机集群上的超大型数据集的分布式处理。

12.数据存储端,数据库和缓存的可靠性设计(MySQL和Redis相关知识)

13.输入URL的整个过程(访问www.baidu.com的过程)

(1)浏览器获取输入的域名www.baidu.com

(2) 浏览器向DNS请求解析www.baidu.com的IP地址

(3) 域名系统DNS解析出百度服务器的IP地址 (详细介绍DNS)-通过网关出去

(4) 浏览器与该服务器建立TCP连接(默认端口号80)

(5) 浏览器发出HTTP请求,请求百度首页

(6) 服务器通过HTTP响应把首页文件发送给浏览器

(7) TCP连接释放

(8) 浏览器将首页文件进行解析,并将Web页显示给用户。

https://blog.csdn.net/wlk2064819994/article/details/79756669?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159775782619724843348062%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=159775782619724843348062&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v3~rank_business_v1-1-79756669.ecpm_v3_rank_business_v1&utm_term=%E4%BB%8E%E8%BE%93%E5%85%A5URL%E5%88%B0%E5%8A%A0%E8%BD%BD%E5%9B%BE%E7%89%87%E7%9A%84%E8%BF%87%E7%A8%8B&spm=1018.2118.3001.4187

14.HTTP 怎么传图片的

15.osi七层模型、tcp四层、五层模型及每层功能

OSI七层模型 功能 对应的网络协议 TCP/IP四层概念模型
应用层 文件传输,文件管理,电子邮件的信息处理——apdu HTTP、TFTP, FTP, NFS, WAIS、SMTP 应用层
表示层 确保一个系统的应用层发送的消息可以被另一个系统的应用层读取,编码转换,数据解析,管理数据的解密和加密,最小单位——ppdu Telnet, Rlogin, SNMP, Gopher
会话层 负责在网络中的两节点建立,维持和终止通信,在一层协议中,可以解决节点连接的协调和管理问题。包括通信连接的建立,保持会话过程通信连接的畅通,两节点之间的对话,决定通信是否被终端一斤通信终端是决定从何处重新发送,最小单位——spdu SMTP, DNS
传输层 定义一些传输数据的协议和端口。传输协议同时进行流量控制,或是根据接收方接收数据的快慢程度,规定适当的发送速率,解决传输效率及能力的问题——tpdu TCP, UDP 传输层
网络层 控制子网的运行,如逻辑编址,分组传输,路由选择最小单位——分组(包)报文 IP, ICMP, ARP, RARP, AKP, UUCP 网络层
数据链路层 主要是对物理层传输的比特流包装,检测保证数据传输的可靠性,将物理层接收的数据进行MAC(媒体访问控制)地址的封装和解封装,也可以简单的理解为物理寻址。交换机就处在这一层,最小的传输单位——帧 FDDI, Ethernet, Arpanet, PDN, SLIP, PPP,STP。HDLC,SDLC,帧中继 数据链路层
物理层 定义物理设备的标准,主要对物理连接方式,电气特性,机械特性等制定统一标准,传输比特流,因此最小的传输单位——位(比特流) IEEE 802.1A, IEEE 802.2到IEEE 802.
美团运维SRE+运维开发一面面经汇总网搜面经    简历部分
美团运维SRE+运维开发一面面经汇总网搜面经    简历部分

16.对于交换机和路由器自己做过配置没?

17.UDP包的结构

18.三次握手与四次挥手过程?什么时候进入time_wait状态

19.如何新增用户

useradd

20.给普通用户下放权限

sudo

21.Shell学习的情况:变量加载顺序,用户下.bashrc文件和/etc/bashrc文件中变量冲突是怎么读取变量的?

22.Shell的参数:$0 $1 $# 之类的意义,编写脚本输入是字符串 输出是是否是ip;shell的正则表达式,如何进行提取ip(awk);怎么拼接两个字符;怎么对两个数相加

23.怎么修改ip地址(永久和临时)

24.Du –sh 和 ls –l 查看文件大小的区别

du查看占磁盘内存大小(真实大小)

ls  -l 查看文件占目录大小

25.怎么查看文件最后一行

tail -n 1 

26.查看过Nginx开启的进程没有?nginx有哪些模块?service模块的作用?

ngx_http_access_module模块 

ngx_http_auth_basic_module模块 

ngx_http_stub_status_module模块 

ngx_http_log_module模块 

ngx_http_gzip_module模块 

ngx_http_ssl_module模块 

ngx_http_rewrite_module模块 

ngx_http_referer_module模块 

ngx_http_headers_module模块

service 模块

name参数:此参数用于指定需要操作的服务名称,比如 nginx。 

state参数:此参数用于指定服务的状态,比如,我们想要启动远程主机中的 nginx,则可以将 state 的值设置为 started;如果想要停止远程主机中的服务,则可以将 state 的值设置为 stopped。此参数的可用值有 started、stopped、restarted、reloaded。 

enabled参数:此参数用于指定是否将服务设置为开机 启动项,设置为 yes 表示将对应服务设置为开机启动,设置为 no 表示不会开机启动。

arguments 给命令提供一些选项

runlevel  运行等级

sleep 如果运行看restarted 则stop and start 之间沉睡几秒中

测试用例

# 测试mysqld
ansible test -m service -a 'name=mysqld state=restarted'
           

27.装过Mysql没有?主从复制原理

主机执行操作写入bin_log   

slave中的IO线程将binlog写入relaylog

sql线程执行relaylog中的操作并写入二进制日志binlog中

28.Python:编写简单的装饰器;python中使用过哪些内建的包?有哪些数据类型?命名空间与变量查找顺序?

29.TCP与UDP的区别

TCP与UDP区别总结:

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付

3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的

UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)

4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

5、TCP首部开销20字节;UDP的首部开销小,只有8个字节

6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

30.get与post的区别,什么时候get、什么时候post

一般的区别: 

(1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中) 

(2)post发送的数据更大(get有url长度限制) 

(3)post能发送更多的数据类型(get只能发送ASCII字符) 

(4)post比get慢 

(5)post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据 

若符合下列任一情况,则用POST方法:

* 请求的结果有持续性的副作用,例如,数据库内添加新的数据行。

* 若使用GET方法,则表单上收集的数据可能让URL过长。

* 要传送的数据不是采用7位的ASCII编码。

若符合下列任一情况,则用GET方法:

* 请求是为了查找资源,HTML表单数据仅用来帮助搜索。

* 请求结果无持续性的副作用。

* 收集的数据及HTML表单内的输入字段名称的总长不超过1024个字符。

31.四次挥手的过程。什么时候time_wait,为什么time_wait,为什么是2MSL。

TCP 连接的拆除需要发送四个包,因此称为四次挥手(Four-way handshake),客户端或服务端均可主动发起挥手动作。

刚开始双方都处于

ESTABLISHED

 状态,假如是客户端先发起关闭请求。四次挥手的过程如下:

  • 第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于 

    FIN_WAIT1

     状态。

    即发出连接释放报文段(FIN=1,序号seq=u),并停止再发送数据,主动关闭TCP连接,进入FIN_WAIT1(终止等待1)状态,等待服务端的确认。

  • 第二次挥手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 +1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 

    CLOSE_WAIT

     状态。

    即服务端收到连接释放报文段后即发出确认报文段(ACK=1,确认号ack=u+1,序号seq=v),服务端进入CLOSE_WAIT(关闭等待)状态,此时的TCP处于半关闭状态,客户端到服务端的连接释放。客户端收到服务端的确认后,进入FIN_WAIT2(终止等待2)状态,等待服务端发出的连接释放报文段。

  • 第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 

    LAST_ACK

     的状态。

    即服务端没有要向客户端发出的数据,服务端发出连接释放报文段(FIN=1,ACK=1,序号seq=w,确认号ack=u+1),服务端进入LAST_ACK(最后确认)状态,等待客户端的确认。

  • 第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 +1 作为自己 ACK 报文的序列号值,此时客户端处于 

    TIME_WAIT

     状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态,服务端收到 ACK 报文之后,就处于关闭连接了,处于 

    CLOSED

     状态。

    即客户端收到服务端的连接释放报文段后,对此发出确认报文段(ACK=1,seq=u+1,ack=w+1),客户端进入TIME_WAIT(时间等待)状态。此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,客户端才进入CLOSED状态。

收到一个FIN只意味着在这一方向上没有数据流动。客户端执行主动关闭并进入TIME_WAIT是正常的,服务端通常执行被动关闭,不会进入TIME_WAIT状态。

在socket编程中,任何一方执行close()操作即可产生挥手操作。

美团运维SRE+运维开发一面面经汇总网搜面经    简历部分

为什么time_wait:

1.保证客户端发送的最后一个ACK报文段能够到达服务端。

2.防止“已失效的连接请求报文段”出现在本连接中。

为什么2MSL

     客户端发送的ACK segment存活期1MSL,服务端重发FIN segment存活期1MSL,加一起2MSL。2MSL是一个临界值,利用尽量大的等待时间来确保TCP连接断开的可靠性。

32.python算法复杂度

美团运维SRE+运维开发一面面经汇总网搜面经    简历部分

简历部分

熟悉 Linux 基础知识,并熟练掌握 mkdir、tar、ls、ps、tail、head 等命令   熟练部署并维护 DNS、DHCP、NFS、FTP 等网络基础服务   熟悉 osi 七层与 TCP/IP 四层体系结构,熟悉 TCP 的三次握手与四次挥手过程及状态,熟悉 web 网页访问 过程   熟悉 shell 脚本的编写,并熟练掌握 grep、uniq、cut、diff 等命令   熟悉 python 基础知识,并用 python 实现过简单的冒泡排序、插入排序等   熟悉 python 中的 Django 框架,并用 Django 搭建过简单的图书管理系统、文件对比系统等   熟悉 ansible 与 saltstack 自动化运维工具 ,并自动化部署过 Apache、Nginx 等网络服务   熟悉 Zabbix 监控软件,实现自定义监控项,并结合云告警平台实现微信告警   熟悉主流的 web 服务器如 Apache、Nginx 的配置,例如虚拟主机设定、网页重定向、端口转发、黑白名 单等,熟悉 Nginx、Squid、Varnish 等代理软件的工作原理及配置,实现反向代理   熟悉主流的高可用架构(Nginx、Haproxy、LVS 负载均衡+keepalived)的部署,了解多层高可用架构部 署   熟悉 MySQL 基础操作与主从复制原理,熟悉 ProxySQL 数据库读写分离熟悉应用分布式 Redis 缓存数据 库(持久化方案、主从同步、高可用等),部署过基于 redis 缓存数据库的 lAMP 架构

继续阅读