概述

按面试项目分为笔试题、面试题,有的公司会有机试题(带你到工位电脑让你操作),如何才能临危不惧,应对自如?

答案是:提前研究公司岗位的需求,制定大的战略,做到腹有良谋,口若悬河,言简意赅、控制时间(自我介绍1分半;面试官感兴趣,又是你擅长的时间长些,但不要超过限度,注意,反馈,不要偏离中心)。

考察点分为:有固定答案型、无固定答案型;有固定答案型:比如:Raid的特点与原理,这是固定的,提前背下,就行;无固定答案型,你对服务器安全方面有什么看法?考察的是,你的思维深度,和结构思维,我们一般,先说大的概述,比如:策略、账号管理、定期杀毒等;再往小的方面缩,提前做好灾备,监控,将问题消灭在萌芽中。

还有,非技术问题,做好运维工作是技术更重要还是服务更重要?回答,哪个重要都不是最佳答案,考察的是应变能力!参考一下:技术和服务是相辅相成的,技术在不断的发展也在不断的进步,作为技术人员,不但需要有良好的技能也,同时需要有良好的服务态度,全面考虑问题才能保证设备正常的运转,避免给公司带来不必要的在损失。

非技术问题

1、介绍一下你(以我为例,您说的必须真实、巧妙,一分钟半内说完,他反馈内容也要能答上)

答:xxx,性格沉稳,为了适应云计算岗位,做了很多学习、研究,在CSDN发表相关文章,上过热榜,考虑问题全面做事把握轻重缓急。

分析:投其所好、重量级优先;控制时间、结构统一 要说对岗位,有优势又可直观体现,具体优秀到哪个程度。简言之,就是为了胜任岗位要求做了什么?取得了什么成绩?(这成绩不是自己吹的,是CSDN官方综合认定的),我说的这个,即和岗位相关,又很直观,他可以现在就打开我的博客验证,而且得到专业机构认可;我说的这些优势都是统一在一个中心,还有心理素质要好,只要面试官没说结束面试,您就有机会,有次去面试,他把简历当面撕掉了,我想,肯定没戏了,说句客气的话,走吧!但他说,明天带上需要的材料,来公司上班!。

2、你对加班的看法?(或者会问您类似的问题,我们公司处在发展阶段,加班会比较频繁,你能接受吗?)

答:工作需要我义不容辞加班,我现在单身,没有家庭负担,可以全身心的投入工作。同时,我也会提高工作效率,减少不必要的加班。

分析:一般是人事面试问题,并不证明一定加班,也不要说的太假,没机智的体现,此类问题,不要和人家扯的太长,毕竟人家只是简单考考你是不是乐于奉献。

3、说说你最大的缺点?
答:英语发音不太准,我正在通过软件学习提高,已经明显得到改善了。(前提是你面试的岗位对英语发音没有严格要求,非外企、翻译类岗位)
分析:不要说对岗位有影响的缺点,比如,学历低,就不要提了,除非,他问你,想以此来压压你的工资,你可以说,我是个不断追求进步的人,在业余时间,会抽出时间,学习,报考学历,提升学历。说很容易补足缺点,你是努力弥补的,表面上看起来是缺点,其实只要及时学习就可以轻松改变。从自己的小缺点说起,中间加一些优点,我有缺点,但是针对缺点,我已经做了改善,并获得了成果。比如,已经在通过什么方式来弥补了,最后再把问题转回到优点上,突出优点的部分,企业喜欢聪明的求职者。

5、上家公司为什么离职?
不要按你的说,要分析面试官想要什么?也许上家公司真的有种种弊端,但是你要成功,就不能说。也不要千篇一律。篇幅勿过长,这不是重点内容,谈的多反而不好。

6、在公司做什么?
说你做的出色的业务,擅长的方面,展示亮点的时候到了!

故障排查

1、cpu100% 如何排查?或者,面试官问Linux服务器CPU负载高如何排查,语言不一样,考察点相同。

答:

1)用top命令, 查找到cpu占用高的进程对应的PID

2)top -p PID -H , 查看指定服务内部线程cpu占用情况

面试做百里挑一还是千里挑一?万里挑一的云计算岗位面试题_持久化

3)程序big,如果是Java语言开发的提供的信息,使用jstack命令保存信息,提供给开发部门。
程序无big,则需升级CPU。

2、磁盘100% 限于web或mysql日志信息过多情况

答:查看存放日志目录;找到无用的文件,用rm -fr删除。使用命令du -sh /opt/(目录名)

查看磁盘占用情况,磁盘占用率还是高,是删除文件还在后台运行,空间没有释放。使用命令lsof | grep delete 查找删除文件PID号。使用kill加PID杀掉这些进程即可

面试做百里挑一还是千里挑一?万里挑一的云计算岗位面试题_apache_02


3、在无网的环境下,解决依赖环境

答:配置本地yum源;或者有网的主机下载所需包及依赖,上传到服务器

4、二进制与rpm包区别
答:二进制包
二进制包里面包括了已经编译的文件,可以马上运行的程序。只需要下载和解包(安装)它们以后,就马上可以使用。.tar.gz结尾;安装方式,直接解压安装。

RPM是redhat系列发行版本所用的格式软件包。一般在RHEL、CentOS、下都可以安装。标准的安装方法是rpm -ivh。还有红帽系列经常使用的yum,其实就是自动判断rpm包的依赖,然后一次性把所有需要安装的N个rpm统一下载安装,其实原理和一个个的安装rpm没有什么本质区别。rpm结尾;rpm -ivh 或者yum

概念

1、centos7开机启动流程

1)开机自检BIOS:根据BIOS中设置,检测内存、硬盘、CPU等硬件信息,决定启动介质,找到MBR扇区

2)MBR引导:读取硬盘第一个扇区,将MBR加载到内存,根据MBR的设置,去找系统的grub引导

3)GRUB2菜单:显示启动菜单给用户,根据所选项或采用默认值,加载内核文件,将系统控制权转交内核

4)加载内核:加载内核文件vmlinuz、虚拟文件系统模块initramfs

5)systemd进程初始化:挂载/etc/fstab文件中的系统,从虚拟文件系统模块initramfs挂载磁盘根目录,内核初始化,加载/usr/lib/systemd/systemd文件,执行默认target配置(运行级别)。

2、简述Raid的特点与原理

级别

特点

缺点

场景

Raid0

读写速度最快;成本低;最少两块硬盘

损坏几率高;无冗余

mysql slave、集群节点

Raid 1

读性能提升,写性能下降;有冗余;两块或2的倍数硬盘组成

硬盘利用率50%

重要数据:监控、系统盘等

Raid 5、6

读性能提升,写性能一般;有冗余;最少由三、四块

磁盘利用率是n-1、n-2块盘

对性能安全要求不是很高业务

Raid 10

读写性能很快 ;最少4块硬盘;有冗余

磁盘利用率50% ,同组不能都坏掉

数据库、存储的主节点

Raid 01

读写性能很快 ;最少4块硬盘;有冗余

磁盘利用率50%,同组都可坏,不同组相同标号不能坏

数据库、存储的主节点

Raid0(独立磁盘冗余阵列):

最少两块硬盘组成
是所有动态磁盘中,数据读写速度最快的
损坏几率相对最高
没有容错功能

Raid1:

由两块或2的倍数硬盘组成
硬盘使用率只有50%,读性能提升,写入速度降低
拥有容错功能

Raid5:

由三块或三块以上硬盘组成
磁盘利用率是n-1块盘
利用奇偶校验,拥有磁盘容错功能(只支持一块硬盘损坏)

Raid6:

Raid6是Raid5的增强版
由4块或以上硬盘组成
磁盘利用率是n-2块盘
支持容错,可以支持两块硬盘损坏

Raid10:(Raid01不常用,损坏率相对Raid10较高)

最少4块硬盘组成
两两硬盘先组成Raid1,再组成Raid0
兼顾Raid0和Raid1的特点,中和两种Raid的缺点

软Raid:是由操作系统模拟的Raid,一旦硬盘损坏,操作系统就会损坏,Raid会丧失作用
硬Raid:是由独立于硬盘之外的,硬件Raid卡组成;就算硬盘损坏,也不会导致Raid卡损坏,磁盘容错才能起作用。

3、简述TCP三次握手与四次挥手的过程?

答: 三次握手建立连接,四次挥手断开连接;SYN:同步位; ACK:确认位 ;ack:确认号;seq:序号(随机生成)FIN用于释放连接。第一次客户端A向服务端B主动发建立连接请求,SYN=1,seq=x;第二次服务端B响应请求,发送ACK=1,SYN=1,ack=x+1,seq=y;
第三次客户端A收到响应,回复ACK=1,ack=y+1,seq=x+1;客户端与服务器建立连接,可以传输数据。
第一次客户端A向服务端B主动发断开连接请求,FIN=1,seq=u并停止传输数据;第二次服务端B响应请求,ACK=1,ack=u+1,seq=v;第三次服务端B向客户端A发送响应请求,FIN=1,ACK=1,seq=w,ack=u+1;第四次客户端A向服务端B发送ACK=1,ack=w+1,seq=u+1,服务器端与客户端断开连接。

4、HTTP返回状态码(status-code),由3位数字组成,简述各自含义。
答:
2xx、3xx正常
200 请求成功
201 上传文件成功
301 永久重定向(redirect)
302,307 临时重定向(redirect)

304 浏览器缓存
4xx 用户方面问题(无权限,或请求的方式不支持)
403 请求不到首页,没有权限(文件没有设置权限,或权限不足以完成这个请求)
404 请求的资源在前端查明不存在
405 请求方法不支持(以未做重定向为例,仅允许https的方式访问,如果用http不支持)

5xx服务端程序错误
500 服务器的内部错误,程序错误
502 请求的资源前端有记录,指向后端数据库,却找不到后端资源(多为php或mysql问题,如:Apache有记录,Apache向mysql请求数据,找不到资源,或php配置错误,连接不到mysql)
503 服务暂时不可用(服务器的程序出现问题)
504 请求超时(规定时间,没有收到响应)

5、说一说yaml(非标记语言)的要素?
答:缩进:两个字符
冒号:冒号后面需要空格,除了以冒号结尾
短横杆:列表项,后面要空格

6、使用touch test时报错分区磁盘已满,但利用df -h查看后磁盘空间还有,请解释原因
答:小文件过多,导致inode耗尽,可以使用命令查找到小文件,把确定无用的删除。

7、突然发现一台Linux系统只读,应该怎么处理,请写出详细步骤。(问法可能不一样考察点一样,比如:磁盘空间还有写不进去东西了)

答:文件系统只读,可能是误操作,挂载的时候加了ro的挂载选项。也可能是文件系统损坏,这时候可以使用fsck -y 分区 来尝试修复一下,但在修复之前最好是把重要数据做一个备份以防万一。如果修复失败,那说明是磁盘损坏,这就需要更换磁盘了。

8、格式的加密解密压缩在哪一层?

答:表示层

数据库

一、Memcache与Redis的区别都有哪些?
答:
1)、存储方式 Memecache把数据全部存在内存之中,断电后消失,要持久化存储需借助其他工具;数据不能超过内存大小。 Redis有部份存在硬盘上,redis本身可以持久化存储数据

2)、支持数据类型 memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型 ,提供list,set,zset,hash等数据结构的存储
3)、底层模型不同 它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。 Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求所有, redis的速度比memcached快很多。
4)、value 值大小不同:Redis 最大可以达到 512M;memcache 只有 1mb。
5)、数据的备份 Redis支持数据的备份,即master-slave模式的数据备份。

二、Redis 的持久化机制是什么?各自的优缺点?
答: RDB 和 AOF 机制。

Redis DataBase持久化方式:
是指用数据集快照的方式记录redis 数据库的所有键值对,在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,达到数据备份。

优点:
(1)只有一个文件 dump.rdb,方便持久化。

(2)容灾性好,一个文件可以保存到安全的磁盘。

(3)性能最大化,fork 子进程来完成写操作,让主进程继续处理命令,所以是 IO最大化。保证了 redis的高性能

(4)相对于数据集大时,比 AOF 的启动效率更高。

缺点:

数据安全性低。RDB 是间隔一段时间进行持久化,如果持久化之间 redis 发生故障,会发生数据丢失。所以这种方式更适合数据要求不严谨的时候

AOFAppend-only file持久化方式:
是指所有的命令行记录以 redis 命令请求协议的格式完全持久化存储保存为 aof 文件。

优点:

(1)数据安全,aof 持久化可以配置 appendfsync 属性,有 always,每进行一次命令操作就记录到 aof 文件中一次。

(2)通过 append 模式写文件,即使中途服务器宕机,可以通过 redis-check-aof工具解决数据一致性问题。

(3)AOF 机制的 rewrite 模式。AOF 文件没被 rewrite 之前(文件过大时会对命令进行合并重写),可以删除其中的某些命令(比如误操作的 flushall))

缺点:

(1)AOF 文件比 RDB 文件大,且恢复速度慢。

(2)数据集大的时候,比 rdb 启动效率低。

三、Redis集群的原理是什么?
答:
(1)Redis Sentinal(哨兵) 着眼于高可用,在 master 宕机时会自动将 slave 提升为master,继续提供服务。

(2)Redis Cluster 着眼于扩展性,在单个 redis 内存不足时,使用 Cluster 进行分片存储。

四、Redis 集群最大节点个数是多少?

答:16384 个。

五、Redis 最适合的场景?
答:
1、会话缓存(Session Cache)

把session会话存在redis,过期删除
缓存用户信息,缓存Mysql部分数据,用户先访问redis,redis没有再访问mysql
商城优惠卷过期时间

2、全页缓存(FPC)

除基本的会话 token 之外,Redis 还提供很简便的 FPC 平台。回到一致性问题,即使重启了 Redis 实例,因为有磁盘的持久化,用户也不会看到页面加载速度的下降,这是一个极大改进,类似 PHP 本地 FPC。 再次以 Magento 为例,Magento提供一个插件来使用 Redis 作为全页缓存后端。 此外,对 WordPress 的用户来说,Pantheon 有一个非常好的插件 wp-redis,这个插件能帮助你以最快速度加载你曾浏览过的页面。

3、队列

Reids 在内存存储引擎领域的一大优点是提供 list 和 set 操作,这使得 Redis能作为一个很好的消息队列平台来使用。Redis 作为队列使用的操作,就类似于本地程序语言(如 Python)对 list 的 push/pop 操作。 如果你快速的在 Google中搜索“Redis queues”,你马上就能找到大量的开源项目,这些项目的目的就是利用 Redis 创建非常好的后端工具,以满足各种队列需求。例如,Celery 有一个后台就是使用 Redis 作为 broker,你可以从这里去查看。

4,排行榜/计数器

Redis 在内存中对数字进行递增或递减的操作实现的非常好。集合(Set)和有序集合(Sorted Set)也使得我们在执行这些操作的时候变的非常简单,Redis 只是正好提供了这两种数据结构。所以,我们要从排序集合中获取到排名最靠前的 10个用户–我们称之为“user_scores”,我们只需要像下面一样执行即可: 当然,这是假定你是根据你用户的分数做递增的排序。如果你想返回用户及用户的分数,你需要这样执行: ZRANGE user_scores 0 10 WITHSCORES Agora Games 就是一个很好的例子,用 Ruby 实现的,它的排行榜就是使用 Redis 来存储数据的,你可以在这里看到。

5、消息队列-发布订阅

配合ELK缓存收集来的日志

虚拟化

docker
1、什么是docker?
答:是一个把应用程序及所依赖项打包自动部署到容器的开源引擎

2、docker有哪些好处?
答:1)占用资源低,硬件开销少;2)部署快速;3)启动快速;4)快速回滚;容器技术天生带有回滚属性,因为每个历史容器或者镜像都会有保存,而替换一个容器或者某个历史镜像是非常快速和简单的。5)隔离性好;两个应用需要使用同一个依赖,或者两个应用需要的依赖之间会有一些冲突,这个时候就很容易出现问题了。

3、Docker与传统虚拟机的区别

请看这张图

面试做百里挑一还是千里挑一?万里挑一的云计算岗位面试题_redis_03

特点

docker

虚拟机

启动速度

秒级

分钟级

交付/部署/集成

开发、测试、生产环境一致

不一致会导致问题

性能

物理资源消耗小

物理资源消耗大

体量

极小(MB)

较大(GB)

迁移/扩展

跨平台方便 ,可复制

较为复杂

答:传统虚拟机占用硬件资源大;部署、启动慢;docker不仅解决了传统虚拟机的两项问题,而且还保障了更好的持续集成

4、你们公司用docker做什么?
答:测试开发的软件性能

命令

1、find

查找最后创建时间是3天前(-1是一 天内,),后缀是*.log的文件

面试做百里挑一还是千里挑一?万里挑一的云计算岗位面试题_持久化_04


如何在 /usr 目录下找出大小超过 10MB 的文件?

面试做百里挑一还是千里挑一?万里挑一的云计算岗位面试题_apache_05


当前目录下查找文件 “test” ,如发现则无需提示直接删除它们?

面试做百里挑一还是千里挑一?万里挑一的云计算岗位面试题_linux_06

shell脚本

  1. 有一段日志,编写对应的处理脚本
    输入:
    Apache
    2020-02-03 11:03:23 WARN My warning message repeated 3 times
    2020-02-03 11:03:23 ERR oops, error message repeated 8 times
    2020-02-03 11:03:26 ERR this is my error message repeated 1 times
    2020-02-03 11:03:26 WARN MY warning , so scary, repeated 1 times
    2020-02-03 11:03:26 WARN cpu utilization high, repeated 1 times
    2020-02-03 11:03:29 INFO this is for test repeated 2 times
    1.1 统计不同级别日志的行数
    输出:
    Apache
    WARN: 3
    ERR: 2
    INFO: 1
    答:编辑脚本vim log.sh


    第二种方法:
#!/bin/bash
#defined variable
W=`grep "WARN" apache.log |cut -d ' ' -f 3 | uniq -c |awk '{print $1}'`
E=`grep "ERR" apache.log |cut -d ' ' -f 3 | uniq -c |awk '{print $1}'`
I=`grep "INFO" apache.log |cut -d ' ' -f 3 | uniq -c |awk '{print $1}'`

#The results are displayed on the screen.
echo "WARN:$W"
echo "ERR:$E"
echo "INFO:$I"

验证:效果和上图一样

1.2 统计Error/WARN发生的总次数
输出:
Apache
ERR: 9
WARN: 5
答:

#!/bin/bash
W=`awk '/WARN/{print $(NF-1)}' apache.log |awk '{sum+=$1} END {print sum}'`
E=`awk '/ERR/{print $(NF-1)}' apache.log |awk '{sum+=$1} END {print sum}'`

echo "Apache"
echo "WARN:$W"
echo "ERR:$E"

执行脚本:

面试做百里挑一还是千里挑一?万里挑一的云计算岗位面试题_持久化_07

  1. 写一段代码,将一个域名反转过来
    例如:
    输入: www.toutiao.com
    输出: com.toutiao.www
    答:echo “www.toutiao.com” |awk -F “.” ‘{print $3"."$2"."$1}’