Linux常见面试题,应对面试分享(上)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: Linux常见面试题,应对面试分享(上)

操作系统基础



1.cpu占⽤率太⾼了怎么办? 排查思路是什么,怎么定位这个问题,处理流程


其他程序:

1.通过top命令按照CPU使⽤率排序找出占⽤资源最⾼的进程

2.lsof查看这个进程在使⽤什么⽂件或者有哪些线程

3.询问开发或者⽼⼤,是什么业务在使⽤这个进程

4.是否可以将这台机器隔离,不影响其他业务

5.然后经过同意后可以杀死或重启进程,然后再观察


2.top⻚⾯中怎么排序能快速看到进程使⽤cpu最⾼


top

-P


3.HTTP常⻅状态码有哪些?


200 正常

301 永久跳转

302 临时跳转

403 拒绝访问 ⽬录没权限 没有⾸⻚

404 ⻚⾯没找到

500 反向代理后端没有可以响应的服务器

502 反向代理后端没有可以响应的服务器

503 反向代理后端没有可以响应的服务器


4.服务的常⽤端⼝有哪些?


SSH 22

HTTP 80

Nginx 80 1.16.0

HTTPS 443

MySQL 3306 5.7

Redis 6379 5.0

Mongo 27017 4.0

Elasticsearch 9200 9300 7.9

Kibana 5601 7.9

Tomcat 8080 8


5.cpu、内存、流量、⽂件连接数等查询命令


CPU: top uptime

内存: free -h

流量: iftop

磁盘: df -h fdisk -l iotop

⽹络: netstat -lnatup


6.查看进程打开⽂件


ps

-ef #查看进程信息

lsof

-c #显示指定程序名所打开的⽂件

-i #显示符合条件的进程,IPv[46][proto][@host|addr

[:svc_list|port_list]

-p #显示指定进程pid所打开的⽂件

-u #显示指定⽤户UID的进程

+d #列出⽬录下被打开的⽂件

+D #递归累出⽬录下被打开的⽂件


7.实时显示⽹络流量


iftop

-i

-n

-t


8.删除⽂件后磁盘空间不释放


⽂件删了,但是还有进程在使⽤这个⽂件,所以需要终⽌被占⽤的进程.


9./proc⽬录都有什么内容


/proc/cpuinfo #当前CPU信息

/proc/meminfo #当前内存信息

/proc/loadavg #当前系统平均负载信息

/proc/mounts #当前设备挂载表信息


10.raid0 raid1 raid5 raid10 的区别


RAID0

最少1块

容量是所有磁盘加起来的容量

速度最快

安全性最低

RAID1

最少2块

容量是所有磁盘的⼀半

速度⼀般

安全性⾼

RAID5

最少3块

容量是所有磁盘减1块

速度⼀般

安全性较⾼

RAID10

最少4块

容量是所有磁盘⼀半

速度较快

安全性最⾼


11.shell写过什么脚本


思路:

1.先想好功能

2.有能⼒的直接写函数,先写函数名,但是不要写内容

3.最后在填充函数⾥的内容

参考:

#1.拉取代码
git_pull(){
git pull xxxxx
}

#2.构建镜像

docker_build(){
docker build -t
}

#3.上传harbor

docker_push(){
docker push xxxxx
}

#4.远程替换镜像

docker_deploy(){
for i in ip
do
ssh $i docker pull xxxx &&
docker stop app &&
docker rm app &&
docker run --name app -it xx -d xxxxx
done
}

#5.主函数

main(){
git_pull
docker_build
docker_push
docker_deploy
}
main


12.如何查看⼀个进程的端⼝?


netstat -lnatup|grep nginx


13.如何查看当前系统磁盘使⽤量?


df -h


14.给你200台服务器如何规划?


物理服务器:

1.使⽤kickstart+cobbler⾃动化批量装机安装操作系统

2.明确并规划好服务器运⾏的服务

3.编写shell脚本批量⾃动分发SSH密钥

4.使⽤ansible⻆⾊批量安装服务

5.使⽤ansible批量安装监控组件

云服务器:

1.因为云服务器不需要装系统

2.编写shell脚本批量⾃动分发SSH密钥

3.使⽤ansible⻆⾊批量安装服务


15.你们公司服务器的配置是什么?


node节点:

16C 32G

系统盘RAID1 1T SATA

数据盘SSD 500G

不做RAID

数据库:

16C 64G

系统盘RAID1 1T SATA

数据盘RAID10 2T SSD 4块

代码上线:

8C 16G

系统盘RAID1 1T SATA

数据盘RAID10 1T SATA 4块

prometheus:

8C 16G

系统盘RAID1 1T SATA

数据盘RAID10 1T SATA 4块


16.AWK提取⽇志信息,最⾼的IP,排名前10的IP


awk '{nums[$1]+=1;} END{for(i in nums){print nums[i],i}}' access_log | sort | tail


17.编写脚本停⽌正在运⾏的程序


问开发这个程序的停⽌命令是什么?或者是否有停⽌的接⼝地址

停⽌之前确定还是否有其他的服务在使⽤这个程序

我的思路是⾸先⽤ps加grep查出这个进程号,然后使⽤kill 进程号命令结束进程

最后脚本检查程序是否安全退出,然后给出⼀个状态码

kill $(ps -ef|grep nginx|awk ‘{print $2}’)


web服务



1.HTTP常⽤状态码有哪些?分别代表什么意思?


200 正常

301 永久跳转

302 临时跳转

403 拒绝访问 ⽬录没权限 没有⾸⻚

404 ⻚⾯没找到

499 数据库没有响应超时

500 反向代理后端没有可以响应的服务器

502 反向代理后端没有可以响应的服务器

503 反向代理后端没有可以响应的服务器


2.如何保证反向代理服务器的⾼可⽤?


使⽤keepalived的VIP保证⾼可⽤


3.常⽤服务的端⼝ http https ssh mysql redis mongo elasticsearch


http 80

https 443

ssh 22

mysql 3306

redis 6379

mongo 27017

elasticsearch 9200


4.⽤过哪些web服务组件?


nginx

haproxy

tomcat


5.Nginx⽤过哪些模块?作⽤是什么?


ngx_http_core_module 核⼼模块 localtion

ngx_http_rewrite_module 重写模块

ngx_http_proxy_module 反向代理

ngx_http_upstream_module 负载均衡

ngx_http_autoindex_module 索引模块

ngx_http_stub_status_module 状态监控

ngx_http_access_module ⽩名单⿊名单

ngx_http_auth_basic_module 简单认证

ngx_http_limit_req_module 请求限速


6.Nginx如何实现反向代理?反向代理和负载均衡什么关系?


⾸先使⽤反向代理模块将请求发送到后端服务器地址池

然后使⽤负载均衡模块将流量平均负载到后端服务器

通过反向代理实现了流量平均负载到后端服务器


7.web⽹⻚访问慢如何排查?经典问题


现象:

⽤户反映打开⽹⻚速度慢

思路:

1.是某些⽤户慢,还是所有的⽤户都反映慢

2.打开监控,查看服务器内存/CPU/磁盘负载情况

3.打开ELK,查看关键连接的响应时间,是否能查看出规律,⽐如突然某个时间段升⾼,或者间歇性的

4.如果发现某个服务器负载变⾼,导致流量转发到这台服务器的时候慢,那么先把这台服务器从反向代理⾥摘掉,

然后在具体的分析排查问题.

5.如果web服务器负载正常,但是访问慢,那么⼜可能是数据库响应不了或者负载变⾼.

6.通过分析⽇志发现,昨天正常,今天变慢,有可能是因为发布了新版本的代码,数据库语句有变化,可能导致索引

失效

7.查看数据库是否存在慢语句,是否有语句执⾏卡死被锁

8.通过分析慢语句的执⾏计划查看语句是否⾛索引,如果没做索引,可能是因为开发发版了新代码,数据库语句有

变化,可能导致索引失效

9.将执⾏分析结果汇报给⽼⼤,决定是否建⽴合适的索引或者回滚⽼版本,然后再分析问题

10.CDN缓存失效导致请求转发了服务器上

11.DNS解析是否有问题


8.Nginx⽇志怎么处理?多久切割⼀次?


使⽤logrotate定期滚动切割⽇志,每天切割⼀次

我们使⽤了ELK⽇志收集分析平台


9.你们公司并发量有多⼤?PV多少?


PV ⻚⾯访问量 30万-50万 – 150万/天 100M 公⽹带宽 CDN分布式缓存

UV 独⽴访问量 运营那边才能看


10.nginx七层和四层代理的区别


四层代理解析的是端⼝号

七层代理解析的是http的报⽂

四层代理应⽤场景是⾼速转发,不解析http

七层代理的应⽤场景根据解析的域名匹配转发到后端合适的服务器


11.Nginx怎么限流


根据每个IP的请求数基于请求限速模块进⾏限制


12.Nginx有哪些负载均衡算法?


RR 平均轮询

权重轮询

URL

IP_HASH


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
6月前
|
算法 Java 调度
《面试专题-----经典高频面试题收集四》解锁 Java 面试的关键:深度解析并发编程进阶篇高频经典面试题(第四篇)
《面试专题-----经典高频面试题收集四》解锁 Java 面试的关键:深度解析并发编程进阶篇高频经典面试题(第四篇)
74 0
|
4月前
|
Linux 数据安全/隐私保护 Perl
解锁Linux高手秘籍:文件操作+命令解析大揭秘,面试场上让你光芒万丈,技术实力惊艳四座!
【8月更文挑战第5天】Linux作为服务器与嵌入式系统的基石,其文件管理和命令行操作是技术人员必备技能。本文从文件操作和基础命令两大方面,深入浅出地解析Linux核心要义,助你在面试中脱颖而出。首先探索文件系统的树状结构及操作,包括使用`ls -la`浏览文件详情、`touch`创建文件、`rm -r`慎删目录、`cp`与`mv`复制移动文件、以及利用`find`搜索文件。接着掌握命令行技巧,如用`cat`、`more`和`less`查看文件内容;借助`grep`、`sed`与`awk`处理文本;运用`ps`、`top`和`kill`管理进程;并通过`chmod`和`chown`管理文件权限。
83 8
|
4月前
|
监控 Linux 数据安全/隐私保护
Linux大神养成记:掌握这些逆天命令与快捷方式,面试秒变MVP,让你的技术实力燃爆全场!
【8月更文挑战第5天】Linux作为开源领域的核心,熟悉其基本命令对系统管理员和技术人员至关重要。本文精选了面试中常考的Linux命令,覆盖文件管理、文本处理、进程监控及权限调整等关键领域,并介绍了提高效率的快捷方式。通过掌握如`ls -l`、`grep "error"`、`top`、`chmod 755`等实用命令,以及Tab自动补全、历史命令浏览等功能,不仅能显著提升日常工作效能,还能在求职面试时展现出扎实的技术功底。
68 4
|
5月前
|
Linux 编译器 Shell
拼多多面试 Linux下一个应用程序开始执行到main被调用之间经历了什么?
在Linux中,程序启动到`main`调用涉及加载器、内核、动态链接器和C运行时。`execve`系统调用加载ELF文件,内核创建进程,加载段,设置栈和调用动态链接器。动态链接器解析符号,重定位,执行初始化。C运行时初始化堆栈,调用`main`。从`_start`到`main`的流程包括环境设置和函数调用。
73 0
|
6月前
|
存储 设计模式 Java
java实习生面试题_java基础面试_java面试题2018及答案_java面试题库
java实习生面试题_java基础面试_java面试题2018及答案_java面试题库
|
5月前
|
存储 安全 Java
Java面试题:Java内存管理、多线程与并发框架:一道综合性面试题的深度解析,描述Java内存模型,并解释如何在应用中优化内存使用,阐述Java多线程的创建和管理方式,并讨论线程安全问题
Java面试题:Java内存管理、多线程与并发框架:一道综合性面试题的深度解析,描述Java内存模型,并解释如何在应用中优化内存使用,阐述Java多线程的创建和管理方式,并讨论线程安全问题
45 0
|
5月前
|
存储 并行计算 安全
Java面试题:Java内存管理、多线程与并发框架的面试题解析与知识点梳理,深入Java内存模型与垃圾回收机制,Java多线程机制与线程安全,Java并发工具包与框架的应用
Java面试题:Java内存管理、多线程与并发框架的面试题解析与知识点梳理,深入Java内存模型与垃圾回收机制,Java多线程机制与线程安全,Java并发工具包与框架的应用
82 0
|
5月前
|
存储 Java Linux
Java面试之Linux和docker
Java面试之Linux和docker
47 0
|
6月前
|
XML Java 数据库连接
面试必备!Java核心技术100+面试题
面试必备!Java核心技术100+面试题
|
6月前
|
安全 Java 中间件
《面试专题-----经典高频面试题收集一》解锁 Java 面试的关键:深度解析常见高频经典面试题(第一篇)
《面试专题-----经典高频面试题收集一》解锁 Java 面试的关键:深度解析常见高频经典面试题(第一篇)
51 0