有网友碰到这样的问题“sre(运维)最常见十大面试题”。小编为您整理了以下解决方案,希望对您有帮助:
解决方案1:
SRE(运维)最常见十大面试题1. 进程和线程的区别
答案:进程是资源分配的基本单位,它包含一个执行中的程序的实例。每个进程都有自己的地址空间、内存、数据栈以及其他系统资源。线程则是CPU调度的基本单位,它是进程内的一条执行路径,共享进程的资源,如内存和文件句柄。线程之间切换的开销通常比进程之间切换的开销小。
进程:拥有的内存空间和系统资源,通过进程间通信(IPC)进行通信。线程:共享进程资源,由进程中的一条执行路径表示,线程间可以直接读写共享内存。2. CPU idle跟负载的区别答案:CPU idle指的是CPU处于空闲状态的时间百分比,即CPU没有被任何进程使用的时间比例。而负载则是指系统当前正在执行的进程和等待CPU时间片的进程总数,它反映了系统的繁忙程度。
CPU idle:表示CPU的空闲时间比例,高idle意味着系统资源较为空闲。负载:表示系统当前的任务量,高负载意味着系统资源紧张,可能有进程在等待CPU时间片。3. CPU调度算法(重点介绍CFS)答案:CPU调度算法主要解决两个问题:时间和优先级。CFS(Completely Fair Scheduler)是一种基于时间片和优先级的调度算法。
CFS的思想是用“优先级*时间”作为处理时间,通过虚拟时间来确保公平性。CFS会动态调整进程的优先级,使得每个进程都能获得相对公平的执行时间。这种算法既考虑了优先级高的进程(如交互式进程),也兼顾了资源的最合理使用。
4. 超级块、索引节点区和数据块区的关系及存放内容答案:磁盘在执行文件系统格式化时,会被分成三个存储区域:超级块、索引节点区和数据块区。
超级块:存储整个文件系统的状态,如文件系统的大小、空闲块的数量等。索引节点区:存储索引节点(inode),每个索引节点对应一个文件或目录,包含文件的元数据(如权限、大小、位置等)。数据块区:存储文件的数据内容。这种设计类似于商场管理,超级块是老板的办公室,索引节点区是档案室,数据块区是店面。
5. 异步/同步、阻塞非阻塞的关系答案:同步与异步是线程之间的关系,同步操作时调用者需要等待被调用者返回结果,而异步则不需要。阻塞与非阻塞是对同一个线程来说的,阻塞调用是指调用结果返回之前,当前线程会被挂起;非阻塞调用则不会阻塞当前线程。
同步阻塞:发送方发送请求后等待响应,接收方处理请求时若不能立即得到结果则一直等待。同步非阻塞:发送方发送请求后等待响应,接收方处理请求时若不能立即得到结果则立即返回,但发送方仍需等待。异步阻塞:发送方发送请求后不等待响应,但接收方处理请求时若不能立即得到结果则一直等待(不常用)。异步非阻塞:发送方发送请求后不等待响应,接收方处理请求时若不能立即得到结果也不等待,而是通过事件、回调等机制通知发送方结果(效率最高)。6. 说一下3次握手,4次挥手答案:三次握手用于建立TCP连接,四次挥手用于断开TCP连接。
三次握手:
A发送SYN包给B,表示A准备好建立连接。
B收到SYN包后发送SYN+ACK包给A,表示B同意建立连接并请求A确认。
A收到SYN+ACK包后发送ACK包给B,表示A确认建立连接。
四次挥手:
A发送FIN包给B,表示A关闭连接。
B收到FIN包后发送ACK包给A,表示B确认收到A的关闭请求。
B发送FIN包给A,表示B也关闭连接。
A收到FIN包后发送ACK包给B,表示A确认收到B的关闭请求。
7. 为什么会有TIME_WAIT这种状态答案:TIME_WAIT状态是TCP连接关闭过程中的一个阶段,只有发起连接终止的一方会进入TIME_WAIT状态。
确保最后的ACK能被接收:如果ACK丢失,对方会重新发送FIN,TIME_WAIT状态可以确保重新发送ACK。防止旧连接的重复分节:经过2MSL(Maximum Segment Lifetime)时间,足以让两个方向上的分组都被丢弃,确保新连接不会受到旧连接的影响。8. 什么中断答案:中断是操作系统介入开展管理工作的机制。当发生中断时,CPU需要从用户态转换为核心态,以便操作系统执行指令。
硬中断:由外部设备(如键盘、网卡)产生的中断,需要立即处理。软中断:由软件指令(如系统调用)产生的中断,可以延迟处理。中断使得操作系统能够并发执行多道程序,提高了系统的效率和响应速度。
9. 什么是软中断,什么是硬中断呢?答案:硬中断是由外部设备产生的,必须立即处理的中断,如键盘输入、网卡接收数据等。软中断则是由软件指令产生的,可以延迟处理的中断,如系统调用。
硬中断:无法延迟处理,必须立即响应,如网卡接收到数据包后通知内核。软中断:可以延迟处理,有一定的灵活性,如内核在处理完硬中断后,通过软中断通知其他进程或线程进行后续处理。10. cache和buffer有什么区别和联系答案:cache和buffer都是用于提高系统性能的内存区域,但它们的作用和用途有所不同。
cache:用于存储CPU频繁访问的数据或指令,以加快访问速度。cache通常位于CPU和主存之间,分为L1、L2、L3等多个层次。buffer:用于平滑不同速率的数据传输,如磁盘和内存之间的数据传输。buffer可以暂存数据,等待另一方准备好后再进行传输。联系:
两者都位于内存中,用于提高系统性能。两者都可以暂存数据,但cache更侧重于加速数据访问,而buffer更侧重于平滑数据传输。通过理解这些问题及其答案,SRE(运维)面试者可以更好地准备面试,并展示对操作系统和计算机网络等关键领域的深入理解。