那些没有答上来的面试题

1、docker run 和 docker create 有什么区别

docker run 是拉镜像创建一个容器并运行该容器,运行完之后退出,状态是Exited

docker create 是拉镜像创建一个容器,但是不启动,容器状态是Created

2、du 和 df 有何区别

du 是Disk used 的缩写,统计磁盘有已经使用的空间。它是直接统计各文件各目录的大小,而不是从硬盘获得信息的

df 是 Disk free 的缩写,命令会查看磁盘的空余用量和已使用的大小占比,统计的是磁盘的空闲空间

3、free 命令查看出来的 buffer/cache 是什么意思(问到2次)

  • total:总计物理内存的大小。
  • used:已使用的物理内存的大小。
  • free:可用物理内存有多少。
  • shared:多个进程共享的内存总额。
  • buffers:写入磁盘内存缓冲区的大小(经常进行磁盘IO的效率比较低,所以先将要写入磁盘的文件进行一定数量的缓冲,等缓冲数据到达一定大小是一次性写进磁盘,提升效率)
  • cached:从磁盘中读取内容的缓存大小(原理差不多)。
  • available:下面会介绍。

在 free 命令的输出中,有一个 free 列,同时还有一个 available 列。这二者到底有何区别?

free 是真正尚未被使用的物理内存数量。至于 available 就比较有意思了,它是从应用程序的角度看到的可用内存数量。Linux 内核为了提升磁盘操作的性能,会消耗一部分内存去缓存磁盘数据,就是我们介绍的 buffer 和 cache。所以对于内核来说,buffer 和 cache 都属于已经被使用的内存。当应用程序需要内存时,如果没有足够的 free 内存可以用,内核就会从 buffer 和 cache 中回收内存来满足应用程序的请求。所以从应用程序的角度来说,available = free + buffer + cache。请注意,这只是一个很理想的计算方式,实际中的数据往往有较大的误差。

 参考链接:https://www.cnblogs.com/54chensongxia/p/12330592.html

4、linux中文件删除了之后,为什么磁盘空间没有被释放

 这里涉及到linux操作系统对删除一个文件的定义了,文件系统创建一个文件每个文件都有2个link计数器:i_count 和 i_link;

i_count的意义是当前文件使用者(或被调用)的数量,i_link 的意义是介质连接的数量(硬链接的数量);可以理解为i_count是内存引用计数器,i_link是磁盘的引用计数器

当一个文件被某一个进程引用时,对应i_count数就会增加;当创建文件的硬链接的时候,对应i_link数就会增加

对于删除命令rm而言,实际就是减少磁盘引用计数i_link。这里就会有一个问题,如果一个文件正在被某个进程调用,而用户却执行rm操作把文件删除了,那么会出现什么结果呢?当用户执行rm操作删除文件后,再执行ls或者其他文件管理命令,无法再找到这个文件了,但是调用这个删除的文件的进程却在继续正常执行,依然能够从文件中正确的读取及写入内容

这是因为rm操作只是将文件的i_link减少了,如果没其它的链接i_link就为0了;但由于该文件依然被进程引用,因此,此时文件对应的i_count并不为0,所以即使执行rm操作,但系统并没有真正删除这个文件,当只有i_link及i_count都为0的时候,这个文件才会真正被删除。也就是说,还需要解除该进程的对该文件的调用才行。

原文链接:https://blog.csdn.net/u012999810/article/details/86288678

5、对bgp协议有何了解

是互联网上一个核心的去中心化自治路由协议 

BGP协议的基本特点:

(1)BGP是一种外部网关协议,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最佳路由;

(2)BGP使用TCP作为其传输层协议(端口号179),提高了协议的可靠性;

(3)BGP是一种距离矢量路由协议,在设计上就避免了环路的发生;

(4)BGP提供了丰富的路由策略,能够实现路由的灵活过滤和选择;

(5)BGP采用触发式增量更新,而不是周期性的更新;

参考链接:https://cloud.tencent.com/developer/article/1922673

 

6、简述flannel 和 calico网络插件的区别和优缺点

flannel 是基于大二层的虚拟隧道网络插件 

优势就是对物理网络环境没有特殊要求,只要宿主机IP层可以路由互通即可

劣势就是性能差,这需要从以下方面看:
封包和解包耗费CPU性能;
额外的封装导致带宽浪费,大约有30%左右的带宽损耗;

calico 是基于路由的网络插件

优势就是没有封包和解包过程,完全基于两端宿主机的路由表进行转发。

劣势包含2方面:
要求宿主机处于同一个2层网络下,也就是连在一台交换机上,这样才能基于MAC通讯,而不需要在IP上动封包/解包的手脚。
路由表膨胀导致性能降低,因为宿主机上每个容器需要在本机添加一条路由规则,而不同宿主机之间需要广播自己的网段路由规则。

7、ELF的日志延迟分析,架构优化方案

 

8、mysql 的物理备份和逻辑备份区别和实现

物理备份是指备份MySQL 实际使用的数据文件,业界通常使用Percona 公司提供的开源工具XtraBackup 直接读MySQL 的数据文件进行备份,而不需要经过MySQL 进行逻辑解析,会快很多

逻辑备份是将 MySQL 里面的数据以简单的文本格式(最不容易损坏的格式)存储,常用工具包括 mysqldump 和 mydumper。

9、说说tcpdump抓包工具的常用参数

tcpdump  
# -i 参数指定网卡
tcpdump  -i  eth0  
# host 参数指定获取主机的包
tcpdump host 182.254.38.55
# src 指定来源是xxx的包
tcpdump src host hostname
# dst 指定目的是xxx的包
tcpdump dst host hostname
# tcp 指定获取tcp的包
tcpdump tcp
# 获取来自xxx的tcp协议且端口是22的网络包
tcpdump tcp port 22 and src host 123.207.116.169

tcpdump ip host 210.27.48.1 and 210.27.48.2

 

10、linux中的进程有几种类型?

 5种 

1. 运行(正在运行或在运行队列中等待)

2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)

3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)

4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)

5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

原文链接:https://blog.csdn.net/weibo1230123/article/details/82187572

 

11、k8s健康检查探针如何配置?

 

 

 

 

 

12、pod init适合什么场景使用?

  1、等待其他模块Ready;

  2、初始化配置

 

13、用什么命令可以把内存中的操作刷新到磁盘上,使用场景是啥?

 sync命令用于强制被改变的内容立刻写入磁盘,更新信息速度非常快, 在Linux/Unix系统中,在文件或数据处理过程中一般先放到内存缓冲区中,等到适当的时候再写入磁盘,以提高系统的运行效率。

 

14、如何判断k8s master节点的主节点?

 k8s的集群主节点体现在ETCD节点属性上面,etcd 有一个接口可以获取leader信息 

15、ETCD故障机制

当小于半数的从节点发生故障时,Etcd 集群仍然能够正常处理用户的请求。例如,两个从节点的故障不会影响一个 5 节点 Etcd 集群的正常操作,然而,客户端会丢失与故障节点的连接。Etcd 的客户单对用户的读请求隐藏了这些影响并自动重连其他节点,这会对其他节点带来增加负载的影响。

posted @ 2022-08-18 17:11  高佳丰  阅读(305)  评论(0编辑  收藏  举报