linux常见面试题,持续更新~

发现自己维护的网站打不开了?

  • 用自己的电脑访问百度,看是否是自己的网络有问题
  • 联系朋友看其他人是否能打开网站
  • 用ping命令,看服务器是否宕机
  • 登录服务器用netstat查看端口是否打开,检查防火墙
  • 登录服务器,用ps -ef 查看httpd进程是否存在
  • 登录服务器,查看日志

生成随机密码

cat /dev/urandom |head -n 10 |cksum |cut -c 1-8
cat /dev/urandom |head -n 10 |md5sum |cut -c 1-8

linux内核提供的可以限制、记录、隔离进程组所使用的物理资源?

cgroups:cgroups 是Linux内核提供的一种可以限制单个进程或者多个进程所使用资源的机制,可以对 cpu,内存等资源实现精细化的控制。

cgroups子系统

  • cpu 子系统,主要限制进程的 cpu 使用率。
  • cpuacct 子系统,可以统计 cgroups 中的进程的 cpu 使用报告。
  • cpuset 子系统,可以为 cgroups 中的进程分配单独的 cpu 节点或者内存节点。
  • memory 子系统,可以限制进程的 memory 使用量。
  • blkio 子系统,可以限制进程的块设备 io。
  • devices 子系统,可以控制进程能够访问某些设备。
  • net_cls 子系统,可以标记 cgroups 中进程的网络数据包,然后可以使用 tc 模块(traffic control)对数据包进行控制。
  • freezer 子系统,可以挂起或者恢复 cgroups 中的进程。
  • ns 子系统,可以使不同 cgroups 下面的进程使用不同的 namespace。

三次握手,四次挥手

三次握手是TCP为了建立一个可靠的链接而出现的

  • 首先由客服端发起连接,向服务端发送一个数据包,里面SYN=1,seq=xxx(随机数),然后进入syn_send状态,
  • 服务器收到数据包后,会给客户端发送一个确认包,里面有ACK=1,ack=xxx+1,SYN=1,seq=zzz(随机数),然后进入syn_received状态
  • 到此,客户端可以确认的是,自己能发给服务端消息,且能收到服务端的消息,但是对于服务端,只能确认自己能收到客户端的包,不能确认客户端是否收到自己的消息,所以还得一次客户端确认包的发送。
  • 客户端发一个确认包,里面有ACK=1,ack=zzz+1,由此可以建立一个可靠的连接,然后进入established状态

四次挥手:是为了保证断开连接的准确性

  • 发起断开连接时两端都可以的,现在我们以客户端为例
  • 客户端向服务端发起断开连接请求,FIN=1,ack=xxxxx,然后进入FIN-wait1状态
  • 服务端收到报文后,会给回一个确认包ACK=1,但是之水回应我收到了包,但是我还没有准备好,你先等一下,服务端进入close-wait状态。客户端键入fin-wait2状态。
  • 服务端准备好了以后,会向客户端发一个FIN包,进入last-ack状态。
  • 客户端向服务端发一个ACK确认包,来断开连接,双方都时closed状态

注意:

  • ack是会随着报文发包数增加的一个参数
  • FIN时请求连接包里面是由0或1,1为请求连接
  • ACK是一个确认包
  • FIN时一个请求断开连接包

用户程序向磁盘发出IO请求的过程

用户程序–》系统调用处理程序–》设备驱动程序–》中断处理程序

作业调度算法

  • 1.先来先服务调度算法(FCFS)
  • 2.短作业(进程)优先调度算法
  • 3.时间片轮转调度算法(RR):分配时间片,时间片用完退出
  • 4.优先级调度算法(HPF)
  • 5.多级反馈队列调度算法: 将时间片轮转与优先级调度相结合,把进程按优先级分成不同的队列,先按优先级调度,优先级相同的,按时间片轮转。优点是兼顾长短作业,有较好的响应时间,可行性强,适用于各种作业环境
  • 6.高响应比优先调度算法:高响应比优先算法在等待时间相同的情况下,作业执行的时间越短,响应比越高,满足段任务优先,同时响应比会随着等待时间增加而变大,优先级会提高,能够避免饥饿现象。优点是兼顾长短作业,缺点是计算响应比开销大,适用于批处理系统。

排序算法

图源百度,侵删。
在这里插入图片描述

常见数据结构及特点

链表:不支持随机访问
栈:先进后出
。。。
https://blog.csdn.net/yeyazhishang/article/details/82353846这个博客讲的特别清楚

漏洞扫描工具

NMAP、AWVS、Nessus

扫描二维码关注公众号,回复: 13368301 查看本文章

用户发现打开软件慢有什么原因?

  • 用户排查是否手机的问题,网络不好、网络延时高
  • DNS缓存是否过期
  • CDN边缘节点缓存没有命中
  • Redis、Memcache的缓存没有命中
  • 系统负载情况,是否过高
  • 服务器是否遭到攻击SYN、DDOS

用户访问浏览器的具体过程

职责划分
CDN:存放HTML,CSS,JS等静态资源;
反向代理:动静分离,只缓存用户请求的静态资源;
分布式缓存:缓存数据库中的热点数据,redis,memcache
本地缓存:缓存应用字典等常用数据;

请求过程
(1)浏览器向客户端发起请求,如果CDN有缓存则直接返回;
(2)如果CDN无缓存,则访问反向代理服务器;
(3)如果反向代理服务器有缓存则直接返回;
(4)如果反向代理服务器无缓存或动态请求,则访问应用服务器;
(5)应用服务器访问本地缓存;如果有缓存,则返回代理服务器,并缓存数据;(动态请求不缓存)
(6)如果本地缓存无数据,则读取分布式缓存;并返回应用服务器;应用服务器将数据缓存到本地缓存(部分);
(7)如果分布式缓存无数据,则应用程序读取数据库数据,并放入分布式缓存在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_46495338/article/details/115706421