网易游戏基础架构工程师(SRE) 面经

  • 用过的Linux系统
    Kali
    Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统。Kali Linux预装了许多渗透测试软件,Metasploit,Wireshark ,BeEF,Hydra等。
    CentOS
    CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS完全开源。
    Deepin
    Deepin操作系统是由武汉深之度科技有限公司开发的Linux发行版。Deepin操作系统是一个基于Debian的Linux操作系统,专注于使用者对日常办公、学习、生活和娱乐的操作体验的极致,适合笔记本、桌面计算机和一体机。包含了所有需要的应用程序,网页浏览器、幻灯片演示、文档编辑、电子表格、娱乐、声音和图片处理软件,即时通讯软件等等。Deepin 的历史可以追溯到 2004年,其前身 Hiweed Linux 是中国第一个基于 Debian的本地化衍生版,并提供轻量级的可用LiveCD,旨在创造一个全新的简单、易用、美观的 Linux 发行版。
  • 熟知的Linux命令
    常用的50个Linux命令
  • netstat有哪些信息
    netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。从整体上看,netstat的输出结果可以分为两个部分,一个是Active Internet connections,称为有源TCP连接,另一个是Active UNIX domain sockets,称为有源Unix域套接口。输出结果中,第一部分有5个输出结果,显示有源TCP连接的情况,而第二部分的输出结果显示的是Unix域套接口的连接情况。Proto显示连接使用的协议;RefCnt表示连接到本套接口上的进程号;Types显示套接口的类型;State显示套接口当前的状态;Path表示连接到套接口的其它进程使用的路径名。
    在这里插入图片描述
  • netstat怎么查看UDP和TCP连接
    查看TCP连接:netstat -nt
    在这里插入图片描述
    查看UDP连接:netstat -nua
    查看UDP和TCP连接:netstat -a
    在这里插入图片描述
  • free命令有哪些信息
    在这里插入图片描述
    free命令详解
参数 释义
total 内存总数,物理内存总数
used 已经使用的内存数
free 空闲的内存数
shared 多个进程共享的内存总数
buffers Buffer 缓存内存数
cached Page 缓存内存数
-buffers/cache 应用使用内存数
+buffers/cache 应用可用内存数
Swap 交换分区,虚拟内存

第一部分Mem行:
total 内存总数: 972M
used 已经使用的内存数: 135M
free 空闲的内存数: 694M
shared 当前已经废弃不用,总是7M
对操作系统来讲是Mem的参数,buffers/cached 都是属于被使用,所以它认为free只有93M。
我们通过free命令查看机器空闲内存时,会发现free的值很小。这主要是因为,在Linux系统中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的。
第二部分(-/+ buffers/cache):
(-buffers/cache) used内存数:135M (指的第一部分Mem行中的used – buffers – cached)
(+buffers/cache) free内存数: 694M(指的第一部分Mem行中的free + buffers + cached)
可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数.
对应用程序来讲是(-/+ buffers/cach).buffers/cached 是等同可用的,因为buffer/cached是为了提高程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。

  • 怎么查看系统有哪些进程
    Windows:任务管理器
    在这里插入图片描述
    Linux:top命令
    在这里插入图片描述
  • top命令有什么信息
    top显示的信息
  • 软链接了解吗
    软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。
    链接文件甚至可以链接不存在的文件,这就产生一般称之为”断链”的现象,链接文件甚至可以循环链接自己。类似于编程语言中的递归。
    软链接文件只是其源文件的一个标记,当删除了源文件后,链接文件不能独立存在,虽然仍保留文件名,但却不能查看软链接文件的内容了。
  • 一般什么场景用软链接
    ①修改path变量,指向软连接jdk1.8和hadoop
vi /etc/profile

②生效配置修改

source /etc/profile

③检查配置是否修改成功

java -version
javac -version
hadoop version
  • 软链接和硬链接的区别
    ①定义不同
    软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。
    硬链接就是一个文件的一个或多个文件名。把文件名和计算机文件系统使用的节点号链接起来。因此我们可以用多个文件名与同一个文件进行链接,这些文件名可以在同一目录或不同目录。
    ②限制不同
    硬链接只能对已存在的文件进行创建,不能交叉文件系统进行硬链接的创建;
    软链接可对不存在的文件或目录创建软链接;可交叉文件系统;
    ③创建方式不同
    硬链接不能对目录进行创建,只可对文件创建;
    软链接可对文件或目录创建;
    ④影响不同
    删除一个硬链接文件并不影响其他有相同 inode 号的文件。
    删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。

  • 你配置过Linux网络吗
    Linux网络配置(博主博客)

  • 交换机和路由器的区别
    两者都是连接互联网的设备,它们之间主要区别就是,交换机发生在网络的第二层数据链路层,而路由器发生在第三层网络层。这个区别是两者各自工作方式的根本区别。路由器可以根据IP地址寻找下一个设备,可以处理TCPIP协议,而上一篇我们讲过交换机是根据MAC地址寻址的。
    交换机是分配网络数据,路由器可以给网络分配IP地址,分配给你地址而且可以随时通过地址过来找到你。
    路由器可以在不同时间内把一个IP分配给多台主机使用。交换机是通过MAC地址和识别各个不同的主机。

  • 一个进程的cpu使用率会超过100%吗
    会。

  • 进程和线程的区别
    线程和进程的区别:①调度的基本单位:传统OS中进程是作为独立调度和分派的基本单位,因而进程是能独立运行的基本单位,在引入线程的OS中线程作为调度和分派的基本单位,因而线程是能独立运行的基本单位②并发性:在引入线程的OS中进程,线程进程都可并发执行③拥有资源:进程可以拥有资源并作为系统中拥有资源的一个基本单位,线程本身并不拥有系统资源,而是仅有一点必不可少的能保证独立运行的资源④独立性:在同一进程中的不同线程之间的独立性要比不同进程之间的独立性低得多⑤系统开销:在创建或撤销进程时OS所付出的开销比线程的大得多⑥支持多处理机系统:传统进程即单线程进程只能运行在一个处理机上,多线程进程可以将一个进程的多个线程分配到多个处理机上.

  • Linux进程和线程有上限吗
    ①linux系统支持的最大进程数
    限制1:既然系统使用pid_t表示进程号,那么最大进程数不能超过pid_t类型的最大值。
    限制2:使用命令ulimit -u查看系统中限制的最大进程数,我的机器上是65535。/etc/security/limits.conf里面是硬限制,ulimit -u是软限制,内核参数kernel.pid_max也做了限制。
    限制3:受系统资源限制,创建一个新进程会消耗系统资源,最主要的就是内存,有人做过测试,在创建6千多个进程时,程序运行得很慢,通过vmstat命令观察,发现swap内存的置入置出很频繁,可以判断是由于内存不足,使用虚拟内存,导致频繁的IO操作,让测试代码变得很慢,所以创建过多进程时,系统的内存是重要衡量的一个方面。
    ⑥单进程最大线程数
    linux 系统中单个进程的最大线程数有其最大的限制 PTHREAD_THREADS_MAX,这个限制可以在 /usr/include/bits/local_lim.h 中查看,对 linuxthreads 这个值一般是 1024,对于 nptl 则没有硬性的限制,仅仅受限于系统的资源, 这个系统的资源主要就是线程的 stack 所占用的内存,用 ulimit -s 可以查看默认的线程栈大小,一般情况下,这个值是 8M。

  • TCP有哪些连接状态
    TCP连接的状态

  • 讲一下三次握手
    TCP三次握手四次挥手(博主博客)

  • 三次握手最后一次丢包会发生什么
    如果最后一个「ACK」包丢了,服务端因为收不到「ACK」会走重传机制,而客户端此时进入 ESTABLISHED 状态。

多数情况下,客户端进入 ESTABLISHED 状态后,则认为连接已建立,会立即发送数据。但是服务端因为没有收到最后一个「ACK」包,依然处于 SYN-RCVD 状态。
那么这里的关键,就在于服务端在处于 SYN-RCVD 状态下,收到客户端的数据包后如何处理?
这也是比较有争议的地方,有些资料里会写到当服务端处于 SYN-RCVD 状态下,收到客户端的数据包后,会直接回复 RTS 包响应,表示服务端错误,并进入 CLOSE 状态。
但是这样的设定有些过于严格,试想一下,服务端还在通过三次握手阶段确定对方是否真实存在,此时对方的数据已经发来了,那肯定是存在的。
所以当服务端处于 SYN-RCVD 状态下时,接收到客户端真实发送来的数据包时,会认为连接已建立,并进入 ESTABLISHED 状态。
实践出真知,具体测试流程可以参考这篇文章:https://blog.csdn.net/zerooffdate/article/details/79359726
那么实际情况,为什么会这样呢?
当客户端在 ESTABLISHED 状态下,开始发送数据包时,会携带上一个「ACK」的确认序号,所以哪怕客户端响应的「ACK」包丢了,服务端在收到这个数据包时,能够通过包内 ACK 的确认序号,正常进入 ESTABLISHED 状态。
TCP三次握手的异常情况

  • 服务器有大量TIME_WAIT是什么原因
    我们首先要弄清楚TIME_WAIT状态是什么?TIME_WAIT状态是主动关闭TCP连接的一方(即先发起FIN包的一方),在发送完最后一个ACK包后进入的状态。系统需要在TIME_WAIT状态下等待2MSL(maximum segment lifetime )后才能释放连接(端口)。根据RFC 793 MSL是2分钟,一般的TCP实现有30秒、1分钟和2分钟不等。进入TIME_WAIT状态等待2MSL主要有两个目的:一方面是主动关闭连接的一方在对方没有收到最后一个ACK包时(这时对方还会重发FIN,收到两个FIN的时间间隔一定小于2MSL)有时间可以重发ACK包,另一方面处于TIME_WAIT的连接(IP和端口组合)不能重用,这样可以保证被重新分配的socket不会受到之前残留的延迟重发报文影响。
    由于主动关闭TCP连接的一方才会进入TIME_WAIT状态,一般情况服务器端不会出现TIME_WAIT状态,因为大多数情况都是客户端主动发起连接并主动关闭连接。但是某些服务如pop/smtp、ftp却是服务端收到客户端的QUIT命令后主动关闭连接,这就造成这类服务器上容易出现大量的TIME_WAIT状态的连接,而且并发量越大处于此种状态的连接越多。另外,对于被动关闭连接的服务在主动关闭客户端非法请求或清理长时间不活动的连接时(这种情况很可能是客户端程序忘记关闭连接)也会出现TIME_WAIT的状态。
  • 怎么优化上面这种情况
    服务器出现大量TIME_WAIT的解决办法
  • shell和python有了解吗
    有。
  • shell脚本怎么查看上一条命令执行的结果
    通过 $? 获取上一次命令执行的结果,0表示成功,非0表示失败。
test -e /mnt/111
if [ $? -eq 0 ]; then
cd /mnt/111
echo "I come here"
else
mkdir /mnt/111
echo "It's created"
fi

也可以先将结果赋给一个变量 ret=echo $?,然后再判断变量的值是否为0。

  • shell脚本怎么查看上一个进程的ID
    运行脚本或者程序后,使用echo $! 就可以得出刚运行进程的PID。
    shell获取进程ID的方法

  • 怎么调试shell脚本
    shell脚本调试
    ①直接调试
    ②使用shell脚本调试命令调试
    ③使用Linux系统命令调试

  • shell脚本重定向实现方式
    shell如何在脚本中重定向

  • 了解哪些文本处理命令
    常用文本处理命令

  • 怎么使用awk输出文本中每一行的最后一个字段,用空格分割,每行列数不定

awk '{print $NF}' 文件名

awk的使用

发布了69 篇原创文章 · 获赞 12 · 访问量 7328

猜你喜欢

转载自blog.csdn.net/weixin_43291459/article/details/104144754