面试随笔

面试准备
1、tcp/ip的三次握手过程

第一次:客户端发送syn包,同时进入syn_send状态

第二次:服务端收到syn包,同时返回一个syn+ack包给客户端,同时服务端进入syn_recv状态

第三次:客户端收到syn+ack包,返回一个ack包给服务端,客户端服务端进入established状态,正式建立连接
2、iostat的各个字段的意义、top各个字段的意义、free各个字段的意义

有三个参数需要重点理解:avgqu-sz svctm await %util,其中avgqu-sz与svctm之和等于await,svgqu-sz表示队列长度,svctm表示设备IO操作的平均服务时间,await表示每一个IO请求的处理平均时间,%util的等于处理IO的总时间除以统计时间,这个值越大表示系统越繁忙


3、mysql主从的原理、mongodb与mysql的区别,事务有哪些特性

mysql主从复制是基于其二进制日志可以跟踪主服务器的所有操作记录,从服务器的IO线程读取主服务器的二进制日志,然后传输到自己的中继日志,接着使用sql线程读取中继日志并应用到自身的数据库中,实现主从数据同步

mysql是传统的关系型数据库,其结构层级关系为database table record,mongodb为非关系型数据库,其层级关系为database collection document,mongodb没有字段和列的关系,它比较适合个事不确定的数据,它的优势是可以分布式存储数据,这样可以进行数据的高性能和高可用存储,很容易通过横向增加节点来提高存储性能,其劣势是事物支持较弱

事务具有四个特性:原子性、一致性、隔离性、持久性

事物的原子性是在一组具有逻辑性的一系列操作中,这些操作会有两个结果,要么全部成功,要么全部失败

事务的一致性是指执行事务的前后数据库都必须处于同一状态

事务的隔离性是指并发的事务是隔离的

事务的持久性表示一旦某个事务被提交,这个改动对数据库来说是永久性的

 
4、redis具有哪些特性

redis属于KVDB型数据,也叫内存数据库,具有数据持久化的特性,可以将内存中的数据写入到磁盘,当系统重启时可以再次将数据重载到内存当中,支持事物,支持主从,读写性能高,redis的所有操作都是原子性(事务)的


5、什么是僵尸进程,如何通过ps来查看僵尸进程

僵尸进程是指子进程先于父进程挂掉,但是父进程回收子进程失败导致的,可以通过top查看僵尸进程数量或者ps aux|grep Z进行具体查看


6、zabbix的原理是什么,如何搭建zabbix监控系统
7、nginx屏蔽爬虫的字段为http_user_agent
8、find关于时间的选项为哪几个

mtime: 表示文件数据内容被改动的时间;

ctime:表示文件状态信息被改动的时间,比如文件用户权限等

atime:表示文件被访问的时间

find / -mtime +n 表示查找n天前数据被修改的文件

find / -mtime -n表示查找n天内数据被修改的文件

9、计算机网络里的主机是如何进行通信的

主机a首先会查找自己的路由表,如果主机b在同一网络,直接交付,不在同一网路,就将数据包发送给网络中的路由器,路由器会查找自己的路由表,可以知道需要将数据包发给哪一个路由器,就这么一直传下去,直到某个路由器在自己的路由表中发现主机b,然后交付

10、linux系统的启动过程

按下电源,加载BIOS查找MBR并加载MBR,找到磁盘上的bootload信息加载grub,grub查找kernel并加载内核,/sbin/init(pid=1)进程初始化,os初始化

11、docker镜像的原理  

docker镜像是由文件系统叠加而成,最底层是一个引导文件系统bootfs,容器启动后该引导系统会被卸载,第二层是root文件系统,比如centos等,在传统的linux系统引导过程中,root文件系统会最先以只读的方式加载,引导结束并完成完整性检查后才会切换为读写模式,但是docker里,root文件系统永远只能使只读状态,并且docker利用联合加载技术又会在root文件系统层上加载更多的只读文件系统,但是这些在外面看来只能看到一个文件系统,这样的文件系统成为镜像,最底层的称为基础镜像,当从一个镜像中启动容器时,docker会在该镜像的最顶层加载一个读写文件系统,我们想在docker中运行的程序就是在这个读写层中执行的,当第一次启动容器时,初始的读写层是空的,当文件系统发生变化时这些变化会应用到读写层,但是读写层下面的只读层是永远不会发生变化的,这是什么意思呢?改变的内容会从只读层复制到读写层,读写层的只读版本还是存在的,只是被读写层的副本隐藏了,这种特性叫做写时复制

12、复习已有的shell脚本,复习the liuux command line笔记

13、tcp/icp协议的原理 http协议的原理 smtp协议的原理 snmp协议的原理

14、mysql redis mongodb的权限管理

15、nginx apache反向代理

16、操作系统相关的面试问题

17、jenkins自动构建的原理

18、主从复制的原理、mongodb分片集群原理、mongodb复制集的原理

19、Dns原理

dns域名系统,将域名映射解析成ip,具体原理描述如下:应用需要将ip映射成ip,首先会调用解析程序resolver,成为dns的客户,将域名放到dns请求报文当中并以udp数据报的形式发送给域名服务器,域名服务器查找后找到映射的ip将其放入dns响应报文中  返回给应用,这时候应用就可以通过该ip来与目的主机进行通信

20、Openvpn原理

21、vsftpd的原理

22、docker-compose里有哪些参数,各自的意义,Dockerfile有哪些参数,各自的意义  

23、RAID0-1 5 10的原理以及各自的优缺点

24、Nfs原理

25、 负载均衡有哪几种方式 ,各自的原理是什么

26、prometheus和cacti的原理

27、ssh公钥与私钥的原理

28、scp与rsync的各自传输原理以及区别

29、ansible的原理,如何使用ansible去远程部署    

30、Dockerfile的常用参数

CMD 指定容器启动时要运行的命令 docker run命令行中指定的命令可以覆盖CMD

ENTRYPOINT  他无法被docker run命令行中的命令覆盖,反而会传递到它里面

WORKDIR为后续的指令设置工作目录

ENV 指定环境变量,这个环境变量可以在后面的RUN指令中使用

USER指定容器运行的用户

VOLUME卷,在容器内提供挂载点,具有数据持久化的功能,可以多个容器复用

ADD 将构建环境下的文件和目录复制到镜像中,具有解压提取的功能,如果目的目录已经存在与添加文件或目录同名的,目的位置的文件或目录不会被覆盖,ADD会使得构建缓存失效

COPY功能类似于ADD,但不具有提取解压的功能,其目的位置必须是绝对路径

LABEL元数据,以键值对的形式存在

STOPSIGNAL容器停止时发送给系统调用的信号

ARG在Dockerfile中定义的参数,docker run命令行中如果不使用--build-arg,就会使用默认值

ONBULLD触发器,当一个镜像被用做其他镜像的基础镜像时,基础镜像中的触发器将会被执行,且触发器会紧跟在FROM指令后面

04bu-huo

31、cdn的原理

32、iptables和firewalld的常见命令

33、linux操作系统的磁盘分区原理

34、devops理念

35、http协议的原理  

36、tcp/ip的原理

个人理解:

网络路由层面:

主机先回查找自己的路由表,如果目标主机处于同一网络,直接交付,如果不处于同一网络,到达自身路由,

查找路由的路由表,看下一跳是去哪个路由,到达目的路由后查找路由表,重复以上直到找到目的主机所处

的网络,然后交付

数据传输层面  

TCP/IP体系分为四层:网际层(物理层、数据链路层)、网络层、传输层、应用层,计算机网络上主机之间的数据的传输基于这四层的相关协议

就拿最常见的http文本传输来讲,当点击一个链接,客户端会向服务端发送一个请求,最终服务端收到请求然后返回数据给

客户端。具体的过程大致如下:

首先,在应用层发送请求,形成http报文

然后,在发送报文前,需要在客户端与服务端之间建立tcp连接

然后,连接建立后,报文分组发送到传输层

然后,在网络层数据以ip数据报的形式传输

然后,在链路层以MAC帧的形式传输

然后,物理层以比特流的形式传输

由此自上而下,客户端的数据通过网络中的路由器交换机到达服务端,然后逆向自下而上的将数据传输到服务端的应用,服务端返回数据类似前面这个过程

37、NAT和bridge的区别  

VMWare提供了三种工作模式,它们是bridged(bridged模式)、NAT(网络地址转换模式)和host-only(主机模式)。要想在网络管理和维护中合理应用它们,了解一下这三种工作模式。  

bridged(桥接模式)在bridged模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。在bridged模式下,需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。同时,由于这个虚拟系统是局域网中的一个独立的主机系统,那么就可以手工配置它的TCP/IP配置信息,以实现通过局域网的网关或路由器访问互联网。使用bridged模式的虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑。想让它们相互通讯,就需要为虚拟系统配置IP地址和子网掩码,否则就无法通信。如果想利用VMWare在局域网内新建一个虚拟服务器,为局域网用户提供网络服务,就应该选择bridged模式。这种方式最简单,直接将虚拟网卡桥接到一个物理网卡上面,和linux下一个网卡 绑定两个不同地址类似,实际上是将网卡设置为混杂模式,从而达到侦听多个IP的能力。在此种模式下,虚拟机内部的网卡(例如linux下的eth0)直接连到了物理网卡所在的网络上,可以想象为虚拟机和host机处于对等的地位,在网络关系上是平等的,没有谁在谁后面的问题。使用这种方式很简单,前提是可以得到1个以上的地址。    

NAT(网络地址转换模式)使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。也就是说,使用NAT模式可以实现在虚拟系统里访问互联网。NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手工修改,因此虚拟系统也就无法和本局域网中的其他真实主机进行通讯。采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。这种方式也可以实现Host OS与Guest OS的双向访问。但网络内其他机器不能访问Guest OS,Guest OS可通过Host OS用NAT协议访问网络内其他机器。NAT方式的IP地址配置方法是由VMware的虚拟DHCP服务器中分配一个IP ,在这个IP地址中已经设置好路由,就是指向192.168.138.1的。如果想利用VMWare安装一个新的虚拟系统,在虚拟系统中不用进行任何手工配置就能直接访问互联网,建议你采用NAT模式。这种方式下host内部出现了一个虚拟的网卡vmnet8(默认情况下),如果有过 做nat服务器的经验,这里的vmnet8就相当于连接到内网的网卡,而虚拟机本身则相当于运 行在内网上的机器,虚拟机内的网卡(eth0)则独立于vmnet8。发现在这种方式下,vmware自带的dhcp会默认地加载到vmnet8界面上,这样虚拟机就可以使用dhcp服务。更为重要的是,vmware自带了nat服务,提供了从vmnet8到外网的地址转换,所以这种情况是一个实实在在的nat服务器在运行,只不过是供虚拟机用的。

37、什么是微服务网关
答: