55道面试题总结-涉及路由交换、虚拟化、Docker容器、数据库
1、osi七层参考模型有哪些?
应用层 表示层 会话层 传输层 网络层 数据链路层 物理层
2、udp协议工作在哪一层?ping工作在哪一层?
UDP工作在传输层 ping 工作在网络层
3、linux系统中用于检测通信的命令有哪些?
ping tracerroute
4、linux系统中查看硬件资源以及进程的命令有哪些?
lspci | grep -i vga //查看显卡信息
cat /proc/cpuinfo //查看CPU信息
dmesg | grep sda //查看硬盘信息
cat /proc/meminfo //查看内存信息
dmesg | grep -i eth //查看网卡信息
ps a //显示现行终端机下的所有程序,包括其他用户的程序。
5、如何杀死僵尸进程?
ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9
ps -e -o ppid,stat | grep Z | cut -d” ” -f2 | xargs kill -9
kill -HUP $(ps -A -ostat,ppid | grep -e ’^[Zz]‘ | awk ’{print $2}’)
6、查看cpu信息的命令是什么?
cat /proc/cpuinfo //查看CPU信息
7、监控参数的级别有哪些?
vmstat:搜集内存、进程,paging等信息
iostat:中央处理单元(CPU)的统计数据和设备、分区输入/输出统计信息。
8、编写一条允许外网访问内部服务器的iptables命令
iptables -I INPUT -i lo -j ACCEPT
iptables -I INPUT -s A.B.C.D -j ACCEPT
iptables -P INPUT DROP
9、exchange邮件服务器中有几种角色分别都是什么?哪一种角色需要独立安装?
服务器角色:邮箱服务器 客户端访问服务 器统一消息服务器 中心传输服务器 边缘传输服务器。
边缘传输服务器需要独立安装。
10、写出upd与tcp协议有哪些?
UDP协议(任选5条):
RIP 动态路由协议端口520
DNS 域名解析协议端口号53
TFTP 简单文件传输协议 端口号69
DHCP 动态主机配置协议 端口号67 68
NTP 网络时间协议 端口号123
TCP协议(任选5条):
HTTP 超文本传输协议 端口80
FTP 文件传输协议 端口 20 21
telnet 远程控制协议 端口23
BGP 边界网关路由协议 端口号 179
SMTP 简单邮件传输协议 端口号 25
POP3 邮局协议3 端口号 110
11、TCP IP的全称是什么?
TCP:传输控制协议
IP (Internet Protocol):网络互联协议
12、UDP的全称是什么?
UDP(User Datagram Protocol):中文名是用户数据包协议
13、WLAN 的作用是什么?
WLAN即无线局域网,是利用无线技术实现快速接入以太网的技术
14、VM 是否支持硬件平台虚拟化?
支持
15、VM是否支持linux 系统?
支持(除了IBM公司的aix系统)
16、公司有一个员工,网页打不开,让你解决,请阐述解决过程和解决思路?
首先检察网络的连通是否正常,可以用Ping命令进行测试,如果网络不通先解决网络连通
问题(对网卡 网线 交换机端口 路由配置等进行检测);如果网络连接正常就要考虑(浏
览器是否正常 DNS是否正确 有没有防火墙拦截等问题了)。
17、HA的高可用性如何实现?
HA有如下分类:
网络高可用:网络高可用性是通过匹配冗余的网络设备实现网络设备的冗余,达到
高可用的目的。
服务器高可用:主要使用的是服务器集群软件或高可用软件来实现。
存储高可用:使用软件或硬件技术实现存储的高度可用性。当一台存储出现故障时,另一台备用的存储可以快速切换,达到存储不停机的目的。
18、RIP和OSPF的区别是什么?
RIP:rip协议是距离矢量路由选择协议,管理距离120,它选择路由的度量标准(metric)是
跳数,最大跳数是15跳,如果大于15跳,它就会丢弃数据包。
OSPF:协议是链路状态路由选择协议,管理距离110,它选择路由的度量标准是带宽即COST值。
19、三层交换和防火墙的作用?
三层交换的基本功能是实现VLAN间的路由,转发性能优于路由器,在组网过程中是汇聚层和核心层的主要网络设备。
防火墙技术的核心思想是在不安全的网际网环境中构造一个相对安全的子网环境,可以实现网络间的隔离,对过往数据包进行过虑达到安全访问的目的。
20、你所知道的安全产品有哪些?
防火墙设备 入侵检测设备 入侵防御设备 VPN设备
21、数据库里如何删除表?
SQL server:
DROP TABLE table_name
MS SQL Server的语法是这样:
DROP INDEX table_name.index_name
22、如何查看linux磁盘的文件系统类型?如何查看各个分区的磁盘使用量?
使用df –T 命令 或more /etc/fstab可以查看文件系统类型
使用df –Th可以查看磁盘使用量
23、linux可通过哪些命令和哪些参数查看机器是否出现性能瓶颈?
top vmstat iostat free -s 5 sar -A –o sar -A –f
24、lvs的三种模式?及性能比较
nat、tun、dr三种模式
Dr模式性能最好,nat性能最差,tun介于dr和nat之间
25、编写一条允许内网访问外网的iptables命令
iptables -t nat –A POSTROUTING –s 内网网段 –o 出站接口 –j SNAT –to 出站接口IP
26、nginx如何支持php动态网站
一、是将php请求转发给其他LAMP网站服务器,二、是将php请求转发给本机的php-fpm
27、一个EXT3的文件分区,当用touch新建文件时报错,错误信息是磁盘已满,但是使用df -H查看分区信息时只使用了50%,请分析具体原因?
两种情况,一种是磁盘配额问题,另外一种就是EXT3文件系统的设计不适合很多小文件跟大文件的一种文件格式,出现很多小文件时,容易导致inode耗尽了。
28、请使用Linux系统命令统计出establish状态的连接数有多少?
netstat -an |grep 80 |grep ESTABLISHED |wc -l
29、mysql数据库的备份还原是怎么做的?
平时采用两种方法来做:1、利用mysql自带的使用工具mysqldump和mysql来备份还原数据库 2、利用第三方的mysql管理工具比如:mysqladmin 3)停止mysqld服务拷贝数据文件
30、Linux系统是由那些部分组成?
Linux系统内核,shell,文件系统和应用程序四部分组成。
31、查找/usr/local/apache/logs目录最后修改时间大于30天的文件,并删除?
find /usr/local/apache/logs -type f -mtime +30 -exec rm -f {} \;
32、添加一条到192.168.3.0/24的路由,网关为192.168.1.254?
route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.1.254
33、利用sed命令将test.txt中所有的回车替换成空格?
sed -i s/\r/ /g test.txt
34、在每周6的凌晨3:15执行/home/shell/collect.pl,并将标准输出和标准错误输出到/dev/null设备,请写出crontab中的语句?
15 3 * * 6 /home/shell/collect.pl > /dev/null 2>&1
35、源码编译安装apache,要求为:安装目录为/usr/local/apache,需有压缩模块,rewrite,worker模式;并说明在apache的worker MPM中,为什么ServerLimit要放到配置段最前面?
./configure --prefix=/usr/local/apache --enable-so--with-rewrite --with-mpm-worker不放在最前面,client会忽略掉的
36、请写出精确匹配IPv4规范的正则表达式?
grep "[0-9]{3}.[0-9]{3}.[0-9]{3}.[0-9]{3}" access.logs
37、dmesg命令中看到ip_conntrack: table full, dropping packet.,如何解决?
加大ip_conntrack_max 的值;降低ip_conntrack_timeout的时间;
38、查询file1以abc结尾的行?
grep "abc$" file1
39、如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.2.1?
iptables -t nat -A PREROUTING -d LOCALIP -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.1:8080iptables -t nat -A POSTROUTING -d 192.168.2.1 -p tcp -m tcp --dport 8080 -j SNAT --to-source LOCALIP:80
40、简述raid0 raid1 raid5 三种工作模式的工作原理及特点。
RAID 0:连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余,因此并不能算是真正的RAID 结构。RAID 0 只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据。因此,RAID 0 不能应用于数据安全性要求高的场合。RAID 1:它是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1 可以提高读取性能。RAID 1 是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写 ,而不需要重组失效的数据。简单来说就是:镜像结构,类似于备份模式,一个数据被复制到两块硬盘上。RAID10:高可靠性与高效磁盘结构一个带区结构加一个镜象结构,因为两种结构各有优缺点,因此可以相互补充。主要用于容量不大,但要求速度和差错控制的数据库中。RAID5:分布式奇偶校验的独立磁盘结构,它的奇偶校验码存在于所有磁盘上,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据。支持一块盘掉线后仍然正常运行。
41、redis支持的数据类型?
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)
42、为什么redis需要把所有数据放到内存中?
redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以redis具有快速和持久化的特征。如果不将数据放在内存中,磁盘I/O速度会严重影响redis的性能。如果使用了最大使用的内存,则数据已有记录数达到内存限值后不能继续插入新值。
43、redis的并发竞争问题如何解决?
方案一:可以使用独占锁的方式,类似操作系统的mutex机制,不过实现相对复杂,成本较高。
方案二:使用乐观锁的方式进行解决(成本较低,非阻塞,性能较高)
44、构建docker镜像应该遵循哪些规则?
整体原则上,尽量保持镜像功能的明确和内容的精简,要点包括:尽量选取满足需求但较小的基础系统镜像,例如docker.io/centos7清理编译生成文件、安装包的缓存等临时文件安装各个软件是要指定准确的版本号,并避免引入不需要的依赖,应用尽量使用系统的库和依赖,使用dockerfile创建镜像时要添加.dockerignore文件或使用干净的工作目录
45、如何控制容器占用系统资源(cpu、内存)的份额?
在使用 docker create 命令创建容器或使用 docker run 创建并启动容器的时候,可以使用 -c|--cpu-shares[=0] 参数来调整容器使用 CPU 的权重;使用 -m|--memory[=MEMORY] 参数来调整容器使用内存的大小
46、docker与LXC有何不同?
lxc 是 Linux 内核容器虚拟化的一项技术,可以实现资源的隔离和控制,也就是对 Cgroup 和 Namespace 两个属性的控制。对于 docker 而言,它发展到现在不仅仅是容器的代名词了,不过它的基础技术是需要依赖内核的 Cgroup 和 Namespace 特性。docker 出现之初,便是采用了 lxc 技术作为 docker 底层,对容器虚拟化的控制。后来随着 docker 的发展,它自己封装了 libcontainer (golang 的库)来实现 Cgroup 和 Namespace 控制,从而消除了对 lxc 的依赖。总结一下,lxc 是早期版本 docker 的一个基础组件,docker 主要用到了它对 Cgroup 和 Namespace 两个内核特性的控制
47、docker与Vagrant有何不同?
Vagrant适合用来管理虚拟机,而docker适合用来管理应用环境。
48、开发环境中docker与vagrant如何选择?
Docker是应用执行环境,不是虚拟机,对于宿主来说只是个隔离的进程;而Vagrant是虚拟机辅助软件,使用Vagrant既使用虚拟机,因此所运行的是一个完整操作系统。这是最本质的区别。
Docker运行需要依托Linux内核,因此对于Windows, OSX系统而言,需要有一个Linux虚拟机运行起来,才可以使用Docker。因此在这种环境下,从单一虚拟机角度来说,Docker和Vagrant没有占用资源的差别。对于 Linux工作环境来说,那就没有这个问题,使用Docker要比Vagrant轻量级很多。
而在OSX, Windows下使用Docker和Vagrant开发,很重要的一个问题在于共享文件目录上。之前大家在这两个系统上安装的Docker环境都是通过Docker Toolbox 来安装配置的,它使用的是Virtualbox,对于共享主机文件目录到Docker环境上有一些问题,大多数情况能用,但是部分情况会出故障。所以相对于 Docker Toolbox的环境而言,如果需要一些文件目录监控等高级功能,vagrant更适合开发。
但是,这个问题现在已经解决,Docker刚刚发布了Docker for Mac/Windows (beta) ,这将不在使用Virtualbox,而是使用 xhype (OSX), Hyper-V (Windows 10) 来运行一个更为精简的Linux (Alpine)。由于使用了操作系统原生虚拟框架,因此共享目录上的种种问题得到了解决,此外 Alpine 的使用,让Linux虚拟机加载更为迅速。所以在这种情况下,使用 Docker 要比 Vagrant 有更多的优势。
所以,从未来角度看,Docker是大势所趋。
49、kafka查看指定topic信息
bin/kafka-topics.sh --zookeeper node01:2181 --describe --topic t_cdr
50、git初始化和更新子模块?
git submodule init 初始化子模块git submodule update 更新子模块
51、Django中想验证表单提交是否格式正确需要用到Form中哪个函数?
is_valid()函数方法,用于检查表单提交是否正确
52、Django中如何读取和保存session,整个session的运行机制是什么?
说到session的运行机制,就一定要先说一下cookie这一段信息。一般情况下cookies都是我们的浏览器生成的(显然可以人为修改),用于服务器对户进行筛选和维护,但是这个听上去很好吃的东西,能存的东西有点少而且容易被别人利用。这时候基于cookies的session的意义就比较明显了,在客户端的cookies中我们只保存session id,而将完整信息以加密信息的形式保存到服务器端,这样服务器可以根据session id相对安全的在数据库中查询用户的更细致的信息和状态
53、nginx可以用来做什么?
反向代理 重定向 负载均衡 虚拟主机 静态HTTP服务
54、nginx负载均衡有哪几种?
轮询模式
Weight模式
Ip_hash模式
55、keepalived工作原理?
Layer3,4,&5工作在IP/TCP协议栈的IP层,TCP层,及应用层 原理: Layer3:keepalived使用layer3的方式工作时,keepalived会定期向服务器群中发送一个ICMP的数据包(即我们平时用的ping程序),如果发现某台服务器的IP地址没有激活,keepalived便会报告这台服务器是小,并将他从服务器群中剔除。Layer3的方式是以服务器的IP是否有效作为服务器工作正常与否的标准。
Layer4:主要以TCP端口的状态来决定服务器工作正常与否。如web sercer的服务端口一般是80.如果keepalived检测到80端口没有启动,则keepalived将这台服务器从服务群中删除。
Layer5:layer5就是工作在具体的应用层,比layer3,4要复杂一点,在网络上占用的宽带也要大一些。Keepalived将根据用户的设定检查服务器的运行是否正常。如果设定不相符,则keepalived将把服务器从群中踢除。