运维面试官喜欢问的问题_机房运维面试题库及答案

3、网站各层面监控、统计的覆盖度,软件、硬件、运行状态,能监控的都需要监控统计,避免监控死角、并能实时了解应用的运转情况。

4、通过创新思维解决运维效率问题;目前各公司大部份运维主要工作还是依赖人工操作干预,需要尽可能的解放双手。

5、运维知识的积累与沉淀、文档的完备性,运维是一个经验性非常强的岗位,好的经验与陷阱都需积累下来,避免重复性范错。

6、计划性和执行力;工作有计划,计划后想法设法达到目标,不找借口。

7、自动化运维;能对日常机械化工作进行提炼、设计并开发成工具、系统,能让系统自动完成的尽量依靠系统;让大家更多的时间用于思考、创新思维、做自已喜欢的事情。

以上只是技术上的一些层面,当然个人意识也是很重要的。

运维职业的迷惘、现状与发展前景

运维岗位不像其它岗位,如研发工程师、测试工程师等,有非常明确的职责定位及职业规划,比较有职业认同感与成就感;而运维工作可能给人的感觉是哪方面都了解一些,但又都比上专职工程师更精通、感觉平时被关注度比较低(除非线上出现故障),慢慢的大家就会迷惘,对职业发展产生困惑,为什么会有这种现象呢?除了职业本身特点外,主要还是因为对运维了解不深入、做得不深入导致;其实这个问题其它岗位也会出现,但我发现运维更典型,更容易出现这个问题;

针对这个问题我谈一下网站运维的现状及发展前景(也在思考中,可能不太深入全面,也请大家斧正补充)

运维现状:

1、处于刚起步的初级阶段,各大公司有此专职,但重视或重要程度不高,可替代性强;小公司更多是由其它岗位来兼顾做这一块工作,没有专职,也不可能做得深入。

2、技术层次比较低;主要处于技术探索、积累阶段,没有型成体系化的理念、技术。

3、体力劳动偏大;这个问题主要与第二点有关系,很多事情还是依靠人力进行,没有完成好的提练,对于大规模集群没有成熟的自动化管理方法,在此说明一下,大规模集群与运维工作是息息相关的如果只是百十来台机器,那就没有运维太大的生存空间了。

4、优秀运维人才的极度缺乏;目前各大公司基本上都靠自已培养,这个现状导致行业内运维人才的流动性非常低,非常多好的技术都局限在各大公司内部,如 google 50万台机器科学的管理,或者国内互联公司top 10 的一些运维经验,这些经验是非常有价值的东西并决定了一个公司的核心竞争力;这些问题进而导致业内先进运维技术的流通、贯通、与借签,并最终将限制了运维发展。

5、很多优秀的运维经验都掌握在大公司手中;这不在于公司的技术实力,而在于大公司的技术规模、海量PV、硬件规模足够大,如baidu可怕的流量、 http://51.com海量数据~~~~这些因素决定了他们遇到的问题都是其它中/小公司还没有遇到的,或即将遇到。但大公司可能已有很好的解决方案或系统。

什么是中间件?什么是jdk?
中间件介绍:
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。
中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口。但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递通过中间件,应用程序可以工作于多平台或OS环境。
jdk:jdk是Java的开发工具包。它是一种用于构建在 Java 平台上发布的应用程序、applet 和组件的开发环境。

讲述一下Tomcat8005、8009、8080三个端口的含义?
8005==》 关闭时使用
8009==》 为AJP端口,即容器使用,如Apache能通过AJP协议访问Tomcat的8009端口
8080==》 一般应用使用

Tomcat和Resin有什么区别,工作中你怎么选择?
区别:Tomcat用户数多,可参考文档多,Resin用户数少,可考虑文档少。最主要区别则是Tomcat是标准的java容器,不过性能方面比resin的要差一些但稳定性和java程序的兼容性,应该是比resin的要好。
工作中选择:现在大公司都是用resin,追求性能;而中小型公司都是用Tomcat,追求稳定和程序的兼容。

Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
Squid、Varinsh和Nginx都是代理服务器

什么是代理服务器:
能当替用户去访问公网,并且能把访问到的数据缓存到服务器本地,等用户下次再访问相同的资源的时候,代理服务器直接从本地回应给用户,当本地没有的时候,我代替你去访问公网,我接收你的请求,我先在我自已的本地缓存找,如果我本地缓存有,我直接从我本地的缓存里回复你如果我在我本地没有找到你要访问的缓存的数据,那么代理服务器就会代替你去访问公网 。

区别:
1)Nginx本来是反向代理/web服务器,用了插件可以做做这个副业但是本身不支持特性挺多,只能缓存静态文件;

2)从这些功能上。varnish和squid是专业的cache服务,而nginx这些是第三方模块完成;
3)varnish本身的技术上优势要高于squid,它采用了可视化页面缓存技术;在内存的利用上,Varnish比Squid具有优势,性能要比Squid高。还有强大的通过Varnish管理端口,可以使用正则表达式快速、批量地清除部分缓存它是内存缓存,速度一流,但是内存缓存也限制了其容量,缓存页面和图片一般是挺好的;
4)squid的优势在于完整的庞大的cache技术资料,和很多的应用生产环境;

工作中选择:
要做cache服务的话,我们肯定是要选择专业的cache服务,优先选择squid或者varnish。

简述DNS进行域名解析的过程?
用户要访问www.baidu.com,会先找本机的host文件,再找本地设置的DNS服务器,如果也没有的话,就去网络中找根服务器,根服务器反馈结果,说只能提供一级域名服务器.cn,就去找一级域名服务器,一级域名服务器说只能提供二级域名服务器.com.cn,就去找二级域名服务器,二级域服务器只能提供三级域名服务器.baidu.com.cn,就去找三级域名服务器,三级域名服务器正好有这个网站www.baidu.com,然后发给请求的服务器,保存一份之后,再发给客户端。

RabbitMQ是什么东西?
RabbitMQ也就是消息队列中间件,消息中间件是在消息的传息过程中保存消息的容器、消息中间件再将消息从它的源中到它的目标中标时充当中间人的作用。
队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用。消息队列不会保留消息,直到可以成功地传递为止,当然,消息队列保存消息也是有期限地。

mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

mysql的innodb如何定位锁问题:
在使用 show engine innodb status检查引擎状态时,发现了死锁问题;
在5.5中,information_schema 库中增加了三个关于锁的表(MEMORY引擎);

innodb_trx ## 当前运行的所有事务

innodb_locks ## 当前出现的锁

innodb_lock_waits ## 锁等待的对应关系

mysql如何减少主从复制延迟:

如果延迟比较大,就先确认以下几个因素:

  1. 从库硬件比主库差,导致复制延迟;
  2. 主从复制单线程,如果主库写并发太大,来不及传送到从库就会导致延迟。更高版本的mysql可以支持多线程复制;
  3. 慢SQL语句过多;
  4. 网络延迟;
  5. master负载

主库读写压力大,导致复制延迟,架构的前端要加buffer及缓存层

  1. slave负载
    一般的做法是,使用多台slave来分摊读请求,再从这些slave中取一台专用的服务器

只作为备份用,不进行其他任何操作.另外, 2个可以减少延迟的参数:
–slave-net-timeout=seconds 单位为秒 默认设置为 3600秒

#参数含义:当slave从主数据库读取log数据失败后,等待多久重新建立连接并获取数据
–master-connect-retry=seconds 单位为秒 默认设置为 60秒

#参数含义:当重新建立主从连接时,如果连接建立失败,间隔多久后重试
通常配置以上2个参数可以减少网络问题导致的主从数据同步延迟

MySQL数据库主从同步延迟解决方案

最简单的减少slave同步延时的方案就是在架构上做优化,尽量让主库的DDL快速执行还有就是主库是写,对数据安全性较高,比如sync_binlog=1,innodb_flush_log_at_trx_commit

= 1 之类的设置,而slave则不需要这么高的数据安全,完全可以讲sync_binlog设置为0或者关闭binlog

innodb_flushlog也可以设置为0来提高sql的执行效率。另外就是使用比主库更好的硬件设备作为slave

如何重置mysql root密码?

一、 在已知MYSQL数据库的ROOT用户密码的情况下,修改密码的方法:

1、 在SHELL环境下,使用mysqladmin命令设置:

   mysqladmin –u root –p password “新密码”   回车后要求输入旧密码

2、 在mysql>环境中,使用update命令,直接更新mysql库user表的数据:

   Update  mysql.user  set  password=password(‘新密码’)  where  user=’root’;

   flush   privileges;

   注意:mysql语句要以分号”;”结束

3、 在mysql>环境中,使用grant命令,修改root用户的授权权限。

   grant  all  on  *.*  to   root@’localhost’  identified  by  ‘新密码’;

如查忘记了mysql数据库的ROOT用户的密码,又如何做呢?方法如下:

1、 关闭当前运行的mysqld服务程序:service mysqld stop(要先将mysqld添加为系统服务)

2、 使用mysqld_safe脚本以安全模式(不加载授权表)启动mysqld 服务

   /usr/local/mysql/bin/mysqld_safe  --skip-grant-table  &

3、 使用空密码的root用户登录数据库,重新设置ROOT用户的密码

  #mysql  -u   root

   Mysql> Update  mysql.user  set  password=password(‘新密码’)  where  user=’root’;

   Mysql> flush   privileges;

mysql数据备份工具

mysqldump工具
mysqldump是mysql自带的备份工具,目录在bin目录下面:/usr/local/mysql/bin/mysqldump
支持基于innodb的热备份,但是由于是逻辑备份,所以速度不是很快,适合备份数据比较小的场景
Mysqldump完全备份+二进制日志可以实现基于时间点的恢复。

基于LVM快照备份
在物理备份中,有基于文件系统的物理备份(LVM的快照),也可以直接用tar之类的命令对整个数据库目录
进行打包备份,但是这些只能进行泠备份,不同的存储引擎备份的也不一样,myisam自动备份到表级别
而innodb不开启独立表空间的话只能备份整个数据库。

tar包备份

percona提供的xtrabackup工具
支持innodb的物理热备份,支持完全备份,增量备份,而且速度非常快,支持innodb存储引起的数据在不同
数据库之间迁移,支持复制模式下的从机备份恢复备份恢复,为了让xtrabackup支持更多的功能扩展
可以设立独立表空间,打开 innodb_file_per_table功能,启用之后可以支持单独的表备份

keepalived的工作原理和如何做到健康检查

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了这时就需要根据VRRP的优先级来选举一个backup当master。这样就可以保证路由器的高可用了。

keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式,vrrp模块是来实现VRRP协议的。

Keepalived健康检查方式配置

HTTP_GET|SSL_GET
HTTP_GET | SSL_GET
{
url {
path /# HTTP/SSL 检查的url可以是多个
digest  # HTTP/SSL 检查后的摘要信息用工具genhash生成
status_code 200# HTTP/SSL 检查返回的状态码
}
connect_port 80 # 连接端口
bindto
connect_timeout 3 # 连接超时时间
nb_get_retry 3 # 重连次数
delay_before_retry 2 #连接间隔时间
}

Linux系统中病毒怎么解决?

1)最简单有效的方法就是重装系统

2)要查的话就是找到病毒文件然后删除中毒之后一般机器cpu、内存使用率会比较高机器向外发包等异常情况,排查方法简单介绍下

top 命令找到cpu使用率最高的进程

一般病毒文件命名都比较乱,可以用 ps aux 找到病毒文件位置

rm -f 命令删除病毒文件

检查计划任务、开机启动项和病毒文件目录有无其他可以文件等

3)由于即使删除病毒文件不排除有潜伏病毒,所以最好是把机器备份数据之后重装一下。

说说TCP/IP的七层模型

应用层 (Application):
网络服务与最终用户的一个接口。
协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP

表示层(Presentation Layer):
数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)
格式有,JPEG、ASCll、DECOIC、加密格式等

会话层(Session Layer):
建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
对应主机进程,指本地主机与远程主机正在进行的会话

传输层 (Transport):
定义传输数据的协议端口号,以及流控和差错校验。
协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层

网络层 (Network):
进行逻辑地址寻址,实现不同网络之间的路径选择。
协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP

数据链路层 (Link):
建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议)将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正

物理层(Physical Layer):
是计算机网络OSI模型中最低的一层物理层规定:为传输数据所需要的物理链路创建、维持、拆除而提供具有机械的,电子的,功能的和规范的特性

简单的说,物理层确保原始的数据可在各种物理媒体上传输。局域网与广域网皆属第1、2层物理层是OSI的第一层,它虽然处于最底层,却是整个开放系统的基础、物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境、如果您想要用尽量少的词来记住这个第一层,那就是“信号和介质”

你常用的Nginx模块,用来做什么

rewrite模块,实现重写功能
access模块:来源控制
ssl模块:安全加密
ngx_http_gzip_module:网络传输压缩模块
ngx_http_proxy_module 模块实现代理
ngx_http_upstream_module模块实现定义后端服务器列表
ngx_cache_purge实现缓存清除功能

请列出你了解的web服务器负载架构
Nginx
Haproxy
Keepalived
LVS

运维工作师需要什么样的技能及素质

做为一名运维工程师需要什么样的技能及素质呢,首先说说技能吧,如大家上面所看到,运维是一个集多IT工种技能与一身的岗位,对系统->网络 ->存储->协议->需求->开发->测试->安全等各环节都需要了解一些,但对于某些环节需熟悉甚至精通,如系统 (基本操作系统的熟悉使用,*nix,windows …)、协议、系统开发(日常很重要的工作是自动运维化相关开发、大规模集群工具开发、管理)、通用应用(如lvs、ha、web server 、db、中间件、存储等)、网络,IDC拓朴架构;

技能方面总结以下几点:

1、开发能力,这点非常重要,因为运维工具都需要自已开发,开发语言:perl、python、php(其中之一)、shell(awk,sed,expect….等),需要有过实际项目开发经验,否则工作会非常痛苦。

2、通用应用方面需要了解:操作系统(目前国内主要是linux、bsd)、webserver相关 (nginx,apahe,php,lighttpd,java。。。)、数据库(mysql,oralce)、其它杂七八拉的东东;系统优化,高可靠性;这些只是加分项,不需必备,可以边工作边慢慢学,这些东西都不难。当然在运维中,有些是有分工偏重点不一样。

3、系统、网络、安全,存储,CDN,DB等需要相当了解,知道其相关原理。

个人素质方面:

1、沟通能力、团队协作:运维工作跨部门、跨工种工作很多,需善于沟通、并且团队协作能力要强;这应该是现代企业的基本素质要求了,不多说。

2、工作中需胆大心细:胆大才能创新、不走寻常路,特别对于运维这种新的工种,更需创新才能促进发展;心细,运维工程师是网站admin,最高线上权限者,一不小心就会遗憾终生或打入十八层地狱。

3、主动性、执行力、精力旺盛、抗压能力强:由于IT行业的特性,变化快;往往计划赶不上变化,运维工作就更突出了,比如国内各大公司服务器往往是全国各地,哪里便宜性价比高,就那往搬,进行大规模服务迁移(牵扯的服务器成百上千台),这是一个非常头痛的问题;往往时间 非常紧迫,如限1周内完成,这种情况下,运维工程师的主动性及执行力就有很高的要求了:计划、方案、服务无缝迁移、机器搬迁上架、环境准备、安全评估、性能评估、基建、各关联部门扯皮,7X24小紧急事故响应等。

4、其它就是一些基本素质了:头脑要灵光、逻辑思维能力强、为人谦虚稳重、亲和力、乐于助人、有大局观。

5、最后一点,做网站运维需要有探索创新精神,通过创新型思维解决现实中的问题,因为这是一个处于幼年的职业(国外也一样,但比国内起步早点),没有成熟体系或方法论可以借鉴,只能靠大家自已摸索努力。

怎样才算是一个合格的运维工程师

1、保证服务达到要求的线上标准,如99.9%;保证线上稳定,这是运维工程师的基本责职所在。

2、不断的提升应用的可靠性与健壮性、性能优化、安全提升;这方面非常考验主动性和创新思维。

3、网站各层面监控、统计的覆盖度,软件、硬件、运行状态,能监控的都需要监控统计,避免监控死角、并能实时了解应用的运转情况。

4、通过创新思维解决运维效率问题;目前各公司大部份运维主要工作还是依赖人工操作干预,需要尽可能的解放双手。

5、运维知识的积累与沉淀、文档的完备性,运维是一个经验性非常强的岗位,好的经验与陷阱都需积累下来,避免重复性范错。

6、计划性和执行力;工作有计划,计划后想法设法达到目标,不找借口。

7、自动化运维;能对日常机械化工作进行提炼、设计并开发成工具、系统,能让系统自动完成的尽量依靠系统;让大家更多的时间用于思考、创新思维、做自已喜欢的事情。

以上只是技术上的一些层面,当然个人意识也是很重要的。

大规模集群管理问题

首先我们先要明确集群的概念,集群不是泛指各功能服务器的总合,而是指为了达到某一目的或功能的服务器、硬盘 资源的整合(机器数大于两台),对于应用来说它就是一个整体,目前常规集群可分为:高可用性集群(HA),负载均衡集群(如lvs),分布式储、计算存储集群(DFS,如google gfs ,yahoo hadoop),特定应用集群(某一特定功能服务器组合、如db、cache层等),目前互联网行业主要基于这四种类型;对于前两种类似,如果业务简单、应用上post操作比较少,可以简单的采用四层交换机 解决(如f5),达到服务高可用/负责均衡的作用,对于资源紧张的公司也有一些开源解决办法如lvs+ha,非常灵活;对于后两种,那就考验公司技术实力及应用特点了,第三种DFS主要应用于海量数据应用上,如邮件、搜索等应用,特别是搜索要求就更高了,除了简单海量存储,还包括数据挖掘、用户行为分析;如 google、yahoo就能保存分析近一年的用户记录数据,而baidu应该少于30天、soguo就更少了。。。这些对于搜索准备性、及用户体验是至关重要的。

接下来,我们再谈谈如何科学的管理集群,有以下关键几点:

I、监控

主要包括故障监控和性能、流量、负载等状态监控,这些监控关系到集群的健康运行,及潜在问题的及时发现与干预;

a、服务故障、状态监控:主要是对服务器自身、上层应用、关联服务数据交互监控;例如针对前端web server,我们就可以有很多种类型的监控,包括应用端口 状态监控,便于及时发现服务器或应用本身是否crash、通过icmp包探测服务器健康状态,更上层可能还包括应用各频道业务的监控,常用方法是采用面业特征码进行判断,或对重点页面进行签名,以网站被黑篡改(报警、并自动恢复被篡改数据)等等,这些只是一部份,还有N多监控方式,依应用特点而定,还有一些问题需解决,如集群过大,如何高性能的进行监控也是一个现实问题。

b、其它就是集群状态类的监控或统计,为我们合理管理调优集群提供数据参考、包括服务瓶颈、性能问题、异常流量、攻击等问题。

2、故障管理

a、硬件故障问题;对于成百上千或上万机器的N多集群,服务器死机、硬件故障概率是非常大的,几乎每时每刻都有服务硬件问题,死机、硬盘损坏、电源、内存、交换机。针对这种情况,我们在设计网站架构时需要充分考虑到这些问题,并将其视为常态;更多的依靠应用的冗余机制来规避这种风险,但给系统工程师足够宽裕的处理时间。(如google不是号称同时死800台机器,服务不会受到任何影响吗);这就是考验运维工程师及网站架构师功能的地方了,好的设计能达到google所描述自恢复能力,如gfs,糟糕的设计那就是一台服务器的死机可能会造成大面积服务的连锁故障反映,直接对用户拒绝响应。

b、应用故障问题;可能是某一bug被触发、或某一性能阀值被超越、攻击等情况不一而定,但重要的一点,是要有对这些问题的预防性措施,不能想当然,它不会出问题,如真出问题了,如何应对?这需要运维工程师平时做足功夫,包括应急响应速度、故障处理的科学性、备用方案的有效等。

3、自动化

自动化:简而言之,就是将我们日常手动进行的一些工作通过工具,系统自动来完成,解放我们的双手及枯燥的重复性劳动,例如:没有工具前,我们安装系统需要一台一台裸机安装,如2000台,可能需要10人/10天,搞烂N张光盘,人力成本更大。。。而现在通过自动化工具,只需几个简单命令 就能搞定、还有如机器人类程序,自动完成以往每天人工干预的工作,使其自动完成、汇报结果,并具备一定的专家系统能力,能做一些简单的是/非判断、优化选择等。。。这些好处非常明显不再多说。。。应该说,自动化运维是运维工程师职业化的一个追求,利已利公,虽然这是一个异常艰巨的任务:不断变更的业务、不规范化的应用设计、开发模式、网络架构变更、IDC变更、规范变动等因素,都可能会对现有自动化系统产生影响,所以需要模块化、接口化、变因参数化等因此,自动化相关工作,是运维工程师的核心重点工作之一,也是价值的体现。

你们公司是如何来管理用户权限的?
答 : 通过sudo来管理权限的,不论是运维还是开发,一般都不会给root权限,只有核心级开发或者研发总监或以上级别的我们才可能给相应服务器级别的权限;对核心运维或者运维总监才会给root权限。

在规划服务器的时候,在服务器上都跑几个普通用户?

答 : 普通用户是根据项目来的,在不同公司它的项目产品线不一样。我们公司只有十几个产品线,我们为每一个项目建立一个普通用户,因此不论nginx还是tomcat都是跑在普通用户下。

说说你对运维的看法?
答 : 我对运维的理解是,运维做运维的事情,开发做开发的事情。运维负责网络系统,只要系统没有故障,只要网络没有故障,只要系统资源还够用,那么我们运维的职责就到位了。而我们公司的理念是项目负责制,也就是说每个项目的责任人是开发,我们运维大概占30%-40%的责任。我们的开发占60%的责任。当进程上线的时候,这个服务是由普通用户跑的。它的每个站点目录都是普通用户的权限,也就是700的权限普通用户,这个是最安全的。无论是项目的启动,停止,以及代码上线,日志收集,日志分析都是通过我们进程跑的普通用户实现的。我们在管理这个项目的时候,我们可以把开发的用户加到这个项目组里面,这样负责相应项目的开发人员就有对应项目的所有权限.

专业是跟计算机行业毫不相关的专业吗,转行原因

答:1 我对linux十分感兴趣,近些年一直在自学和研究linux的技术,有个朋友推荐我转型运维,这样可以工作兴趣集一身。
2 我对贵公司十分向往,而且我完全满足对该职位的要求,我非常有信心能做好这份工作。
自学,平时和做运维的朋友交流学习很多

你觉得你有什么缺点?
答 :人比较宅,周末一般待在家里,看看电影,或者在上海市内出去转转,吃个自助餐什么的。

你未来三五年的规划是什么?
答: 至少,要本着高级运维去,或者运维开发去。

工作之余,你经常做哪些事情?
答 :工作一段时间,活动、活动,舒展一下身体;下班之后,打打羽毛球,跑跑步,或者和异性朋友、同学聊聊天。

运维这个职位会经常半夜起来处理问题,这也许会影响到你的生活,你怎么看待?
答 :故障,是随机的,运维主要是服务器方面的问题,问题 并不是想开发那么频繁,所以适当的加班,不影响生活。

为什么要离职呢?

回答示范1: 促使我决定离职的原因是多方面的, 第一个原因, 老实说, 是追求变化。您看, 我这一年以来,做的都是驻场, 我特别特别渴望去体会一下外面的世界。 第二个原因就是职业本身的缺陷, 因为目前这家公司比较小, 也争取不到其他的补贴,加班之类的。当然最重要的原因是我想从事Linux系统运维方面的工作, 这两年我读了不少Linux系统运维方面的书籍, 觉得自己很适合这类工作。

你在工作中有没有经历过与他人意见不合的时候呢?你是怎么处理的呢?

回答示范1: 肯定有, 我一直做运维工程师, 在工作中和别人意见不合的时候挺多的, 您可以想象得到, 同事们本来就挺有主见的, 能在公司里做同一份工作的就更加有想法, 所以每次活动大家都会有不同的意见。 我觉得, 处理不同意见并不难, 因为大家都是为了解决事情, 没有人故意唱反调。意见不合的时候, 我一般会要求自己和对方拿出具体的事实和数据来, 这样就容易看出谁对谁错。不过, 大多数情况下, 我发现矛盾双方其实都对, 大家的想法各有合理之处, 您知道, 我们毕竟都是搞运维时间都不久, 每个人单独考虑问题不可能太成熟。所以说, 意见不合反而是一件好事, 我们把不同意见综合起来, 计划就完善多了。

你觉得压力最大的时候是什么时候呢?
回答示范1: 我觉得压力最大的时候是刚刚接受一个任务或者是刚刚给自己制订了一个大目标的时候。之所以这样, 是因为我的一个习惯, 就是那句谚语, Well begun is half done. 所以, 任务开始的时候, 我会逼着自己做尽可能完整的计划, 并且尽可能把各项工作都提前做。比方说, 参加一个活动的时候, 我会在刚一确定参加活动的那个阶段拼命准备, 找资料, 提前很长时间就模拟练习。这样的话, 越到最后我反而越放松。

你最大的优点是什么呢?
回答示范0: 我是一个持之以恒的人。我从大学开始写日记一直坚持到现在, 我也一直坚持健康饮食和早晨锻炼的习惯, 我在一个社团工作了三年, 而不是像很多同学那样尝试了很多社团。工作上我也希望自己能够在一个好公司里长远发展, 而不是换来换去

你最大的缺点是什么呢?
回答示范1: 我的公开演讲能力比较差, 在公共场合讲话的时候我会感到紧张, 不过谈论我熟悉的领域我会比较放松。所以当我需要做公开发言的时候, 我必须要准备得很充分。我确实羡慕那些无论什么话题都能够高谈阔论的人。

回答示范2: 我有时候急于求成, 或者说做事爱急躁。一旦接手一个任务, 总是想要尽快把它赶完, 总觉得做完了一件事情心里才舒服。但是, 欲速则不达, 太追求efficiency, 就会牺牲accuracy。我现在总是提醒自己accuracy第一位, efficiency第二位, 这样会好得多。

回答示范3: 我有时候会设立不切实际的目标, 比方说一个月要减肥10公斤, 一个小时把表格打出来。我觉得, 设立不切实际的目标对我个人来讲的确不是一件坏事, 所谓Aim at the Sun, land on the Moon.(向着太阳飞, 至少落在月亮上。) 有了高目标就会有很大的动力, 即使完不成也无所谓。但是, 当我在一个团队里工作的时候, 这就变成了一个很大的缺点。在团队里, 一旦目标定得太高, 就会引发很多管理上的问题。我想这是我需要克服的一个缺点。

回答示范4: 我觉得我有时候会过分在意别人的感受, 比方说, 不敢直接表达不同意见, 因为觉得会让对方丢面子, 其实这样做很不利于快速有效地开展工作。我希望自己能够逐渐学会更加爽快, 对人对事更加直接。

回答示范5: 我的缺点是工作需要压力, 在有要求、 有竞争的时候我效率更高。我的学习成绩很好, 因为有考试的压力。但是在大学里面, 我没有做太多的兼职活动, 因为没有赚钱的压力。所以我特别希望自己的老板能比较严格, 多给我一些压力, 呵呵。(点评: 面试官暗喜——就要这样的受虐狂!)

回答示范6: 我的缺点是容易受到别人的影响, 比方说, 大家都学习我也就学得很拼命, 大家纷纷找兼职, 我也开始做兼职。我发现自己有从众的心理, 呵呵, 所以, 如果能加入腾讯就好了, 腾讯里有很多优秀人才, 我就可以受到好的影响了。

如果让你去问问题,你应该问哪些?
答 :
技术类
1、公司目前的服务器规模
2、用到的技术都有哪些
3、如果我到贵公司,我将负责哪些工作

4、公司有没有固定加薪周期
5、公司社保、公积金是否是全额标准。
6、有无职级评定通道(就是评级,看我们属于是初级、中级还是高级,不同级别薪资也就不同了)

举例说明你很能吃苦?
答 :在大学里面,为了减轻父母的负担,寒暑假都是做一些兼职工作,比如服务员、工厂工人、洗车。

作为一个运维你觉得最重要的性格特点是什么?
严谨细心、有耐心、沉稳、逻辑思维强、善于总结。

你认为怎么样完成工作才算认真负责?
答 :
1、根据领导的要求,按时完成工作
2、不确定的地方奥及时沟通,一定要明确领会领导的要求?
3、如果有发现一些不足或者隐患要主动提出来
4、如果有一些更好的方法或者思路应该主动向领导沟通商讨。

你平时是如何学习运维知识的?
答 : 通过看书、网上视频、看官方文档或者其他人分享的文档来学习,学习过程中会记录笔记,并且会动手实验,最终会整理一份自己的文档。

你对自己的职业生涯是如何规划的?
答 :目前阶段的方向是运维,至少要在运维领域踏实的干3,4年,之后会转向运维开发方面,如果公司能提供机会,也会选择管理方向

你认为你自己有哪些优点和缺点?
答 :
优点 : 比较稳重,遇事冷静不会手忙脚乱,做事情比较细心,有耐心等
缺点 : 爱较真,有点完美主义,吹毛求疵,偏内向。

是否能接受加班?
答: 能接受加班,但希望公司有补助

讲一下LAM和LNMP的区别?
答 : LAMP构架中PHP作为apache的模块来处理PHP请求;而在LNMP中,有独立的php-fpm服务,Nginx把php的请求通过代理的形式给php-fpm处理。由于apache和Nginx构架设计不同,Nginx对于静态文件的处理能力相对apache来说更强。

他可能会问你,在构架设计上有何不同呢?
答 :Nginx是基于事件驱动的模型,她只需要一个value进程就可以支持上万个请求并发,而apache即使是最新版本,也是多线程多进程模型,apache要想支持更多并发,需要开启更多的线程。

公司服务器有多少台,分别做什么角色?简单描述一下构架?
答 :
1、两台阿里服务器,一台web一台数据库,这个就没啥构架可说,没啥经验
2、15台服务器,大概思路按照大作业的构架来说。
3、100多台服务器,可以说公司大大小小一共10几个业务,最大的业务用了有50台服务器,其中最前端是nginx+keepalived,最多的有30多台都是web服务器,数据库一主多从,用mycat作为中间件,另外还有一个redis,作为缓存服务。

公司业务有用自动化运维工具吗?
答 : 有用到ansible,我们用ansible来更改一些服务的配置、管理计划任务、管理用户、还会批量执行一些命令或者脚本。

公司业务上线流程是怎么样的?用什么工具上线?
答 : 公司使用jenkins上线部署代码。
流程是 :开发人员现在自己的电脑上开发功能代码,然后把代码推送到gitlab,测试通过webbook自动把代码代码拉取到测试机,开发人员先做一次测试,功能没问题,会把代码发布到预上线的机器上,此时测试人员会测试,才会正式发布到生产环境。有时候也会先灰度发布一两台生产环境。

公司的代码存在哪里?
答 : 存到了自建的gitlab上,只有一两台服务器,就说到了码云,或者说放到了github上。

你是一个服务器的管理员,为了保障服务器上的数据安全,你能想到哪些安全措施?

1.服务器配备不间断 ups 2. 磁盘做 radi1 或者 5 10(除 0 以外,因为 0 不具体冗余
3.加强用户账号的安全,定期修改密码,权限的合理设定
4. 软件补丁,漏动修复 5. 配置防火墙,只开放特定应用端口

公司所在地经常停电,造成服务器非正常关机而丢失了部份文件,你如何解决这个问题?

1)当务之急是确认文件是否要恢复,要就备份恢复,没有就磁盘阵列校验恢复;
2)机房没有备用电源和发电机,这不合常理,机房是否有存在必要性,如果要,就添加硬件设施;
3)添加硬件设施要多长时间,这段时间内的临时措施是什么;
4)机房添加设施要怎样部署;
解答:

  1. 首先要解决机房意外断电的情况,可以使用 ups 电源,
  2. 数据要有备份数据(最好是异地备份),

请问交换机和路由器的区别?vlan 和 VPN 是什么?

  1. 交换机主要用于局域网(相同网段)内设备连接和信息交换,它工作在一个广播域中,属于二层设备,主要是对 mac 地址过行转发
  2. 路由器主要是功能是跨网段访问和路由寻址,可以隔防广播,工作在 3 层,可以解析 ip 地址
    vlan 是虚拟局域网,用于逻辑的方式隔离网络设备之间的通信,实现防止大面积的广播风暴,提高网络安全性,同时也可以通过路由器实现不同网段间的通信。
    是虚拟专用网络,类拟于我们说的虚拟专线,主要用于企业与企业之间的内部连接和出差人员接入公司网络办公。

Zabbix/Nagios、cacti 维护过吗?平时都监控些什么?

  1. 本地资源: 负载 uptime cpu(top,sar),磁盘 df 内存 free IO(iostat),RAID,温度,passwd 文件的变化,本地所 有文件指纹识别
  2. 网络服务:端口,URL,丢包(ping),进程数,网络流量
  3. 其他设备:路由器,交换机端口流量,打印机, 监控光衰 windows 等
  4. 业务数据:用户登录失败次数,用户登录网站次数,输入验证失败的次数,某个 API 接口流量并发,电商网站订单, 支付交易的数量
  5. 监控软件本身仅仅是一个平台,我们想监控的内容,理论上只要在服务器命令行可以获取到就可以被监控软件监控
    基本监控
  6. CPU 使用率(%)
  7. 网络流入速率(bps)
  8. 网络流入速率(bps)
  9. 系统磁盘 BPS(bps)
  10. 系统盘 IOPS(Count/Second)
  11. 网络入流量(Bytes)
  12. 网络出流量(Bytes)
  13. 内存使用率(%)
  14. 平均负载
  15. 磁盘 IO 读(bps)
  16. 磁盘 IO 写(bps)
  17. 磁盘使用率(%)
  18. TCP 连接数(Count)
  19. 进程总数(Count)
  20. inode 使用率(%)
  21. CPU 秒级监控

你为什么离职,离职的原因是什么?

因为我比较喜欢 Linux,所以我想更深入的学习 Linux 技术,而且现在的公司 linux 架构比较单一,涉及的技术面不多,所以我想到网络公司去锻炼一下。

要求 zhongliang 用户 7 天内不能更改密码,60 天以后必须修改密码 过期前 10 天通知 zhongliang 用户过期

后 30 天后禁止用户登陆

#passwd -n 7 -x 60 -w 10 -i 30 olboy

-n :後面接天數,多久不可修改密碼天數
-x :後面接天數,多久內必須要更動密碼
-w :後面接天數,密碼過期前的警告天數
-i :後面接『日期』,密碼失效日期

现场工程师因误作,使用 a 用户执行了一个死循环的脚本 bad.sh 导致 a 用户家目录/home/a 下生成了一个

bad.log 的文件并且不断增大,需要采取措施解决,请写出解决方法及命令格式
ps -ef |grep bad.sh |awk ‘{print $2}’|xargs kill -9

给出正确的关机和重起服务器的命令

shutdown -h now 立刻关机(最安全)
shutdown -h +1 1 分钟后关机
init 0 到 0 级别,关关
halt 立即停止系统,需要人工关电源
halt -p
poweroff 立即停止系统,并且关闭电源
reboot 重启
shutdown -r now 重启
shutdown -r +1 1 分钟后重启
logout 退出
exit 退出
ctrl+d 退出

定时任务

1、每隔 2 小时将系统文件/etc/services 文件打包备份到/tmp 下,每次备份时间生成不同的备份包

00 \*/2 \* \* \* /bin/tar zcf /tmp/tar_`date +%F-%H`.tar.gz /tmp/ >/dev/null 2>&1

2、每天晚上 12 点,打包站点目录/var/www/html 备份到/data 目录下,每次备份时间成生不同的备份包

00 00 \* \* \* /bin/tar zcf /data/www_`date +%F-%H`.tar.gz /data>/dev/null 2>&1

3、每周六,日,上午 9:00 和下午 14:00 来京峰教育这里学习,执行程序/server/script/jflinux.sh

00 09,14 \* \* 6,0 /bin/sh /server/script/jflinux.sh >/dev/null 2>&1

4、 每天晚上 00 点,把刚才生包的包删除 7 天前的

00 00 \* \* \* /bin/find /tmp -type f -name "\*.tar.gz" -ctime +7 | xargs rm -f

5、在每周 6 的凌晨 3:15 执行/home/shell/collect.pl。并将标准输出和标准错误输出到/dev/null 设备,

15 03 \* \* 6 /home/shell/collect.pl >/dev/null 2>&1

6、 crontab 在 11 月内,每天的早上 6 点到 12 点中,每隔 2 小时执行一次/usr/bin/httpd.sh

06-12/2 \* 11 \* /bin/sh /usr/bin/httpd.sh >/dev/null 2>&1

7、crontab 文件由六个域组成,每个域之间用空格分割,其排列如下:B

A: MIN HOUR DAY MONTH YEAR COMMAND
B: MIN HOUR DAY MONTH DAYOFWEEK COMMAND
C: COMMADN HOUR DAY MONTH DAYOFWEEK
D: COMMAND YEAR MONTH DAY HOUR MIN

只查看 ett.txt 文件(100 行)内第 20 到第 30 行的内容?

seq 100 >ett.txt #
方法 1:sed -n '20,30'p ett.txt
方法 2:head -30 ett.txt | tail -11 ett.txt
方法 3:awk '{if(NR<31 && NR>19) print $1}' ett.txt
方法 4:grep "25" -C 5 ett.txt

已知 apache 服务的记问日志按天记录在服务器本地目录/app/log/下,由于磁盘空间 现在要求只能保留最近7 天访问日志,请问如何解决

find /app/log -type -f -name "access\*.log" -ctime +7 | xargs rm -rf

已知配置文件,打印行号

方法 1: cat -n httpd.conf
方法 2:nl httpd.conf
方法 3: grep -n "." httpd.conf
方法 4: awk '{print NR,$0}' httpd.conf
方法 5: sed '=' httpd.conf
方法 6:grep -n $ /etc/passwd
# 过滤内容显示行号 grep -n "20" httpd.conf

tar命令使用案例

请用 tar 打包/etc/ 整个目 录(打包及压缩)

tar zcvf etc.tar.gz /etc

请用 tar 打包/etc/整个目录(打包及压缩,但需要排除/etc/services 文件)

tar zcvf etc.tar.gz --exclude=/etc/service /etc

请把压缩包解压到/tmp 指定目录下(最好只用 tar 命令实现)

tar xvf etc.tar.gz -C /tmp

查找所有文件并打包

find /etc -type f | xargs tar zcvf etc.tar.gz
tar zcvf etc.tar.gz `find /etc -type f`

说出不低于 8 个正则表达式的特殊字符及含义

  1. . 任意一个字符
  2. .* 任意多个字符
  3. [0-9] 范围
  4. {n}匹配次数
  5. ^ 以什么开头
  6. $ 以什么结束
  7. (.*) 引用
  8. [^] 取反
  9. \ 转义

请执行命令取出 linux 中 eth0 的 IP 地址(请用 cut,有能力者也可分别用 awk,sed 命令答)。

解答:

方法 1: ifconfig eth0 | sed -nr '2s#^.\*r:(.\*)Bcast.\*$#\1#gp'
172.18.242.97
方法 2: ifconfig eth0 | awk -F":" ' NR==2 {print $2}' | awk -F" " '{print $1}'
172.18.242.97
方法 3:ifconfig eth0 | awk -F '[: ]+' 'NR==2 {print $4}'
172.18.242.97
方法 4: ifconfig eth0 | grep "Bcast" | awk -F":" '{print $2}'| awk '{print $1}'
172.18.242.97
方法 5:ifconfig eth0 | grep "inet addr" | cut -d ":" -f2 | cut -d " " -f1
172.18.242.97 

查找当前目录下所有文件,并把文件中的 www.etiantian.org 字符串替换成 www.jflinux.cc
解答:

#find . -type f | xargs sed -ir 's#www.etiantian.org#www.jflinux.me#g'

已知 A,B 服务器 SSH 服务的端口均为 52113,用户为 root,想把 A 服务器的/etc/目录拷贝到 B 服务器/tmp

目录,要求文件属性不能改变,请通过 scp 命令给出详细操作命令

scp -p52113 -rp [email protected]:/tmp

加一个用户 jflinux,并指定属于 sa 组,要求组 id 为 801 uid 为 808 并且不建立家目录及禁止其登陆

useradd -u 808 -M -s /sbin/nologin -g sa jflinux

192.168.0.0/24 网段通过 192.168.0.1 网关连入 172.16.1.0/24 ip 段,如何添加路由

route add -net 172.168.1.0 netmask 255.255.255.0 gw 192.168.0.1

MYSQL 一主多从,主库宕机,如何合理切换到从库,其它从库如何处理?

1:登陆所有从库查看 post 信息,使用 POST 最大的做为新的主库,然后将从为提升为新的主库,登陆从库
(新的主库)执行 stop slave,
2:修改 my.cnf 配置文件,开启 log-bin 并重新启动数据库服务,登陆数据库执行 restet master ,show master
status\G;查看主库信息,最后创建授权同步用户与权限和网站使用数据库的用户与权限,同步所有机器的
/etc/hosts 文件(这时就体现了之前全网用域名则不是用 IP 的作用了,不然还得修改网站程序切换到新主库
服务器 IP 上,否则无法连接到数据库)
2:登陆其它从库,执行 change master 操作,查看同步状态

误操作 drop 语句导致数据库数据破坏,请给出恢复的实际大体步骤

所有数据恢复的基础都在于备份,必须要有完整的备份,否则恢复无从谈起
误操作导致的数据库破坏需要使用增量恢复的方法进行恢复数据库,具体步骤如下
查看备份与 binlog 文件
刷新并备份 binlog 文件

mysqladmin -uroot -pmysql123 -S /data/mysql.sockflush-logs

将 binlog 文件恢复成 sql 语句

mysqlbinlog --no-defaults mysql-bin.000061 mysql-bin.000062 >bin.sql

将其中误操作的语句删除(就是 drop 的动作)
解压全备文件,恢复全备文件

gzip -d mysql_backup_2016-10-12.sql.gz
mysql -uroot -pmysql123 -S/data/3306/mysql.sock < mysql_backup_2016-10-12.sql

如果有对表的操作,恢复数据时需要接表名
恢复误操作前的 binlog 文件记录的 sql 语句

mysql -uroot -pmysql123 -S/data/3306/mysql.sock < bin.sql

最后登陆数据库,查看数据是否恢复成功,如果有确定的误操作时间,就直接恢复这段时间的数据即可

linux 系统中添加路由的方法

主机路由

route add -host 192.168.197.100 dev eth0

网关路由

route add default gw 192.168.197.1

网络路由

route ad -net 192.168.1.0 netmask 255.255.255.0 deveth1
route ad -net 192.168.1.0 netmask 255.255.255.0 gw192.168.197.1

mysql 导致网站访问速度慢

问题情况描述:
突然有一天,有同事反应,网站访问速度很慢,有时候会出现打不开网站的情况,刷新等待好长时间后又正
常打开
解决步骤:
登陆数据库执行 show full processlist 看到有很多相同的查询动作且征对同一张表,因此确定网站打不开的
原因是这个,故将此 IP 禁止访问。日常工作中避免此类问题发生解决方法如下:可以将数据库读写分离;
安装数据缓存服务器,尽量将大部分的请求不直接对接数据库;
分析思路:
通过浏览器检测页面访问情况
查询系统的负载 uptime
检查 mysql 的 show full processlist;多执行几次,看是否有正在连接的请求专用
检查慢查询语句
情景再现:
2008-12-22 日,mysql 负载很高,uptime 执行结果 6.44 5.76 5.38
show full processlist 可以看到大量线程等待
找出待优化的语句
用 explain 命令检查语句的执行情况
对需要优化的语句建立索引
如果是多个表,我们创建联合索引

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

运维面试官喜欢问的问题_机房运维面试题库及答案_第1张图片

给大家整理的电子书资料:

运维面试官喜欢问的问题_机房运维面试题库及答案_第2张图片

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
gw192.168.197.1


## mysql 导致网站访问速度慢


问题情况描述:  
 突然有一天,有同事反应,网站访问速度很慢,有时候会出现打不开网站的情况,刷新等待好长时间后又正  
 常打开  
 解决步骤:  
 登陆数据库执行 show full processlist 看到有很多相同的查询动作且征对同一张表,因此确定网站打不开的  
 原因是这个,故将此 IP 禁止访问。日常工作中避免此类问题发生解决方法如下:可以将数据库读写分离;  
 安装数据缓存服务器,尽量将大部分的请求不直接对接数据库;  
 分析思路:  
 通过浏览器检测页面访问情况  
 查询系统的负载 uptime  
 检查 mysql 的 show full processlist;多执行几次,看是否有正在连接的请求专用  
 检查慢查询语句  
 情景再现:  
 2008-12-22 日,mysql 负载很高,uptime 执行结果 6.44 5.76 5.38  
 show full processlist 可以看到大量线程等待  
 找出待优化的语句  
 用 explain 命令检查语句的执行情况  
 对需要优化的语句建立索引  
 如果是多个表,我们创建联合索引  


### 最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

### 资料预览

给大家整理的视频资料:

[外链图片转存中...(img-vspbEJIo-1714393938852)]

给大家整理的电子书资料:

  

[外链图片转存中...(img-JPXrBbej-1714393938853)]



**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618542503)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

你可能感兴趣的:(程序员,运维,面试,职场和发展)