面试题总结

面试题总结—持续更新

linux

系统启动流程

  • 第一步:开机自检,加载BIOS
  • 第二步:读取MBR
  • 第三步:Boot Loader grub引导菜单
  • 第四步:加载kernel内核
  • 第五步:init进程依据inittab文件夹来设定运行级别
  • 第六步:init进程执行rc.sysinit
  • 第七步:启动内核模块
  • 第八步:执行不同运行级别的脚本程序
  • 第九步:执行/etc/rc.d/rc.lo

linux文件类型

  • 普通文件类型
  • 目录文件
  • 块设备文件
  • 字符设备文件
  • 套接字文件
  • 管道文件
  • 链接文件

centos6和7怎么添加程序开机自启动?

CentOS 6 : chkconfig SERVICE on|off

CentOS 7 : systemctl enable|disable service

如何升级内核,目前最新版本号多少?

版本性质:主分支ml(mainline),稳定版(stable),长期维护版lt(longterm)

方法一

# 添加第三方yum源进行下载安装。
Centos 6 YUM源:http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
Centos 7 YUM源:http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
# 先导入elrepo的key,然后安装elrepo的yum源:
rpm -import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
# 查看可用的内核相关包
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available 
yum -y --enablerepo=elrepo-kernel install kernel-ml

方法二

# 通过下载kernel image的rpm包进行安装。
官方 Centos 6: http://elrepo.org/linux/kernel/el6/x86_64/RPMS/
官方 Centos 7: http://elrepo.org/linux/kernel/el7/x86_64/RPMS/
# 获取下载链接进行下载安装即可
wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-4.4.185-1.el7.elrepo.x86_64.rpm
rpm -ivh kernel-lt-4.4.185-1.el7.elrepo.x86_64.rp

修改grub中默认的内核版本

内核升级完毕后,目前内核还是默认的版本,如果此时直接执行reboot命令,重启后使用的内核版本还是默认的3.10,不会使用新的5.2.2,首先,我们可以通过命令查看默认启动顺序

[root@localhost ~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (5.2.2-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (4.4.182-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-957.21.3.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-957.10.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-e34fb4f1527b4f2d9fc75b77c016b6e7) 7 (Core)

由上面可以看出新内核(4.12.4)目前位置在0,原来的内核(3.10.0)目前位置在1,所以如果想生效最新的内核,还需要我们修改内核的启动顺序为0:

vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

注:Centos 6 更改的文件相同,使用命令确定新内核位置后,然后将参数default更改为0即可。

接着运行grub2-mkconfig命令来重新创建内核配置,如下:

grub2-mkconfig -o /boot/grub2/grub.cfg

重启系统并查看系统内核

nginx日志访问量前十的ip怎么统计?

[root@opswy logs]# awk '{array[$1]++}END{for (ip in array)print ip,array[ip]}' access.log |sort -k2 -rn|head
123.151.43.110 262544
118.26.133.242 15523
117.101.223.131 4829
117.101.222.239 1014
117.101.202.100 782
203.91.112.74 645
123.206.90.182 643
118.247.207.155 458
121.42.242.177 400
111.230.88.143 358

删除/var/log/下.log结尾的30天前的日志文件

find /var/log/  -type f -name .*.log -mtime 30|xargs rm -f

ansible有哪些模块?功能是什么?

  • copy模块 拷贝文件到被控端
  • cron 定时任务
  • fetch 拷贝被控端文件到本地
  • file 文件模块
  • group 用户组模块
  • user 用户模块
  • hostname 主机名模块
  • script 脚本模块
  • service 服务启动模块
  • command 远程执行命令模块
  • shell 远程执行命令模块,command高级用法
  • yum 安装包组模块

nginx性能为什么比apache高?

  • nginx采用epoll模型
  • apache采用select模型

四层负载和七层负载区别是什么?

  • 四层基于IP+端口进行转发
  • 七层就是基于URL等应用层信息的负载均衡

lvs有哪些工作模式?哪个性能高?

  • DR 性能最高
  • NAT
  • TUNNEL
  • FULLANT

lvs nginx haproxy区别,优缺点?

https://blog.csdn.net/qlj324513/article/details/81541282

如下url地址,各个部分的含义

https://www.baidu.com/s?word=123&ie=utf-8

https://www.baidu.com/ 域名

?之前的是请求地址,之后是请求参数

tomcat各个目录含义,如何修改端口,如何修改内存数?

  • bin 存放tomcat命令
  • conf 存放tomcat配置文件
  • lib 存放tomcat运行需要加载的jar包
  • log 存在Tomcat运行产生的日志
  • temp 运行过程中产生的临时文件
  • webapps 站点目录
  • work 存放tomcat运行时的编译后的文件

server.xml 修改端口号

catalina.sh 修改内存数

nginx反向代理时,如何使后端获取真正的访问来源ip?

使用X-Forwarded-For

nginx负载均衡算法有哪些?

  • rr 轮训

  • weight 加权轮训

  • ip_hash 静态调度算法

  • fair 动态调度算法

  • url_hash url哈希

  • leat_conn 最小连接数

如何进行压力测试?

如何查看response头信息?如何发送get和post表单信息?

response头信息 :curl -I

post: curl -d “key1=value1&key2=value2&key3=value3”

mysql

索引的为什么使查询加快?有啥缺点?

默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以能明显增加查询的速度

B+树

缺点

  • 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加
  • 索引需要占物理空间,除了数据表占用数据空间之外,每一个索引还要占用一定的物理空间,如果需要建立聚簇索引,那么需要占用的空间会更大
  • 以表中的数据进行增、删、改的时候,索引也要动态的维护,这就降低了整数的维护速度

sql语句左外连接 右外连接 内连接 全连接区别

  • 内连接使用比较运算符根据每个表共有的列的值匹配两个表中的行。
  • 外连接可以是 左向外连接、右向外连接或完整外部连接
  • 左向外连接的结果集包括LEFT OUTER子句中指定的左表的所有行,而不仅仅是连接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
  • 右向外连接是左向外连接的反向连接。 将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

mysql数据备份方式,如何恢复?你们的备份策略是什么?

  • mysqldump备份
  • mysql恢复

如何配置数据库主从同步,实际工作中是否遇到数据不一致问题?如何解决?

主库

  • 开启binlog日志
  • 创建主从复制用户
  • 查看master的状态

从库

  • change master to
  • 开启从库

mysql数据引擎有哪些?

常用的 myisam、innodb

区别:

  • InnoDB 支持事务,MyISAM 不支持,这一点是非常之重要。事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而 MyISAM就不可以了;
  • MyISAM 适合查询以及插入为主的应用,InnoDB 适合频繁修改以及涉及到安全性较高的应用;
  • InnoDB 支持外键,MyISAM 不支持;
  • MyISAM 是默认引擎,InnoDB 需要指定;
  • InnoDB 不支持 FULLTEXT 类型的索引;
  • InnoDB 中不保存表的行数,如 select count() from table 时,InnoDB;需要扫描一遍整个表来计算有多少行,但是 MyISAM 只要简单的读出保存好的行数即可。注意的是,当 count()语句包含 where 条件时 MyISAM 也需要扫描整个表;
  • 对于自增长的字段,InnoDB 中必须包含只有该字段的索引,但是在 MyISAM表中可以和其他字段一起建立联合索引;
  • 清空整个表时,InnoDB 是一行一行的删除,效率非常慢。MyISAM 则会重建表;
  • InnoDB 支持行锁(某些情况下还是锁整表,如 update table set a=1 where user like ‘%lee%’

如何查询mysql数据库存放路径?

mysql> show variables like 'datadir%';
+---------------+------------------------+
| Variable_name | Value                  |
+---------------+------------------------+
| datadir       | /usr/local/mysql/data/ |
+---------------+------------------------+
1 row in set (0.00 sec)

mysql数据库文件后缀名有哪些?用途什么?

myisam

  • .frm文件:保护表的定义
  • .myd:保存表的数据
  • .myi:表的索引文件

innodb

  • .frm:保存表的定义
  • .ibd:表空间

如何修改数据库用户的密码?

set password for 用户名@localhost = password('新密码'); 
mysqladmin -u用户名 -p旧密码 password 新密码  
update user set password=password('123') where user='root' and host='localhost';  

忘记密码启动的时候添加–skip-grant-tables 参数

如何修改用户权限?如何查看?

授权:

grant all on *.* to user@'%' identified by 'passwd'

查看权限

show grants for user@'%';

nosql

redis数据持久化有哪些方式?

  • rdb
  • aof

redis集群方案有哪些?

  • codis
  • redis cluster

redis如何进行数据备份与恢复?

备份

redis 127.0.0.1:6379> SAVE 

创建 redis 备份文件也可以使用命令 BGSAVE,该命令在后台执行。

还原

只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可

redis 127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/usr/local/redis/bin"

MongoDB如何进行数据备份?

mongoexport / mongoimport
mongodump  / mongorestore

kafka为何比redis rabbitmq快?

https://www.zhihu.com/question/22480085

支持分布式,高可用的部署,并且对一个大的队列采用分成多个Partition(分区),来提高消息入队的吞吐量,分而治之的思想. 并且消费的时候支持group的概念,能够支持多个客户端消费同个队列,并且一个group中可以增加consumer的数量来扩展消费的处理量.

img

docker

dockerfile有哪些关键字?用途是什么?

img

如何减小dockerfile生成镜像体积?

  • 通过Docker多阶段构建将多个层压缩为一个
  • 小体积的Alpine基础镜像
  • 用distroless去除容器中所有不必要的东西

dockerfile中CMD与ENTRYPOINT区别是什么?

CMD 和 ENTRYPOINT 指令都是用来指定容器启动时运行的命令。

指定 ENTRYPOINT 指令为 exec 模式时,CMD指定的参数会作为参数添加到 ENTRYPOINT 指定命令的参数列表中。

dockerfile中COPY和ADD区别是什么?

COPY指令和ADD指令都可以将主机上的资源复制或加入到容器镜像中

区别是ADD可以从 远程URL中的资源不会被解压缩。

如果是本地的压缩包ADD进去会被解压缩

docker的cs架构组件有哪些?

  • Client(客户端)
  • DOCKER_HOST(Docker主机)
  • Registry(注册中心)
  • Images(镜像)
  • Containers(容器)

docker网络类型有哪些?

  • host模式
  • container模式
  • none模式
  • bridge模式

如何配置docker远程访问?

vim /lib/systemd/system/docker.service

在ExecStart=后添加配置,注意,需要先空格后,再输入
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

docker核心namespace CGroups 联合文件系统功能是什么?

namespace:资源隔离

cgroup:资源控制

联合文件系统:支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下

命令相关:导入导出镜像,进入容器,设置重启容器策略,查看镜像环境变量,查看容器占用资源

构建镜像有哪些方式?

  • dockerfile
  • 容器提交为镜像

docker和vmware虚拟化区别?

https://www.jianshu.com/p/50f48eb25215

img

img

prometheus

prometheus对比zabbix有哪些优势?

https://blog.csdn.net/wangyiyungw/article/details/85774969

prometheus组件有哪些,功能是什么?

Prometheus Server:

Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。

Exporters:

将监控数据采集的端点通过HTTP服务的形式暴露给Prometheus Server

AlertManager:

在Prometheus Server中支持基于PromQL创建告警规则,如果满足PromQL定义的规则,则会产生一条告警,而告警的后续处理流程则由AlertManager进行管理。

PushGateway

由于Prometheus数据采集基于Pull模型进行设计,因此在网络环境的配置上必须要让Prometheus Server能够直接与Exporter进行通信。

当这种网络需求无法直接满足时,就可以利用PushGateway来进行中转。

可以通过PushGateway将内部网络的监控数据主动Push到Gateway当中。而Prometheus Server则可以采用同样Pull的方式从PushGateway中获取到监控数据。

prometheus指标类型有哪些?

  • Counter(计数器)
  • Guage(仪表盘)
  • Histogram(直方图)
  • Summary(摘要)

在应对上千节点监控时,如何保障性能

(降低采集频率,缩小历史数据保存天数,使用集群联邦和远程存储)

https://www.kubernetes.org.cn/7217.html   # thanos
https://blog.51cto.com/lee90/2062252   # 联邦模式
https://blog.csdn.net/qq_27412807/article/details/105675819 #存储es

ELK

Elasticsearch的数据如何备份与恢复?

https://www.cnblogs.com/tcy1/p/13492361.html
https://blog.csdn.net/moxiaomomo/article/details/78401400?locationNum=8&fps=1

你们项目中使用的logstash过滤器插件是什么?实现哪些功能?

  • date 日期解析

  • grok 正则匹配解析

  • overwrite 写某个字段

  • dissect 分隔符解析

  • mutate 对字段做处理

    • convert类型转换
    • gsub 字符串替换
    • split 字符串分割为数组
    • join 将数组拼接为字符串
    • merge 将两个数组合并为一个数组
    • rename 字段重命名
    • update/replace 字段内容更新
    • add_field 增加字段
    • remover_field 删除字段
  • json 解析

  • geoip 地理位置解析

  • ruby 修改logstash event

elasticsearch的副本和分片设置

https://www.jianshu.com/p/afb1d3da1c5c
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值