Linux常用面试题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux常用面试题相关的知识,希望对你有一定的参考价值。
1.面试技巧:
-
自我介绍:多准备,背下来。要抑扬顿挫,自我介绍之后不要停留,直接切入在公司的工作情况,讲解架构。把工作中的问题说出来,以及解决方案。
-
比如面试的时候别人问大数据,云计算等,这属于开发。可以回答说接触不太多,但是这个东西,咱公司有机会我愿意去研究去花时间学习。
-
尽量拿到面试官的联系方式,回去后将面试的题目,找到标准答案,排好版甚至画好图,给面试官发回去!
-
面对面不要口说,适当的时候要画图讲解。
-
首先穿着要得体,最好标准的职业装面试,不能随意穿着;简单一点就是要让人一看你,就感觉清爽、能干、有活力。
-
要准备充分,尽量提前15分钟到面试公司,提前翻阅资料了解公司的简单背景及相关文化。
-
保持微笑,不要太古板,要随和,保持心态放松,不要抢话抢答;要懂礼貌,有时候细节决定成败。
-
在回答问题上要简单明了,不要阐述一个问题绕来绕去,把自己都绕迷糊了;要说到恰到好处。该回答的回答,不该说尽量别说,做到有的放矢。
- 要保持谦逊,遇到不会的题目,不知道就是不知道,不要非懂装懂;
10.面试通常开始会让你做自我介绍,自我介绍说些什么?多长合适?
一般自我介绍,就介绍自己叫什么名字,毕业时间学校,以及之前的工作经验,自己比较熟练的技能和自己的性格和优点等等;介绍完毕,最后说声介绍完毕,谢谢。
11.面试要有自信,不要低着头,面试是双向的,你选择公司,公司也在选择你。机会是非常的多的,关键是看你自己是否能把握住,是否之前已经准备好。
12.面试的心态一定要保持平静,不要因为一次面试不上,就觉得自己到处都是缺点,要总结自己上次面试的不足,然后下一次改变掉,相信坚持不懈一定能找到满意的工作。
13.最后总结一点,做什么事情自信很重要,相信自己可以做到,然后勇敢的去做,结果一定让你倍感惊喜。
2.nginx反向代理的几种模式?
nginx反向代理一共以下5种模式,前3种使用的比较多:
1)轮询:每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
2)权重:指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
3)ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
4)fair(第三方):按后端服务器响应时间来分配,时间短的优先分配。
5)url_hash(第三方):按访问url的hash结果来分配请求,使同样的url定向到同一个后端服务器,后端服务器为缓存时比较有效。
3.mysql主从有哪几种模式?
1)基于SQL语句的复制(statement-based replication, SBR)。
2)基于行的复制(row-based replication, RBR)。
3)混合模式复制(mixed-based replication, MBR)。
4.说说tomcat调优?
5.有哪些原因会导致mysql主从同步出问题?该如何解决?
原因:
1.主数据库binlog日志未开启或binlog日志更新未开启。
2.主从数据库结构不一致。
3.防火墙没有开放端口。
5.对应的IP地址写错了。
6.mysql数据库版本不一致。
解决办法:
1.强制同步。
2.如果数据不一致,比较少的时候可以插入数据使一致。
3.如果数据库比较小,可以将数据库导出并重新导入一次。
6.说说mysql的备份?
1)按照数据影响分:
热备 xtrabackup,只能备份InnoDB和XtraDB两种引擎表
冷备
温备
2)按照备份后的文件内容分:
逻辑备份 mysqldump,数据量大不建议使用,备份后内容可读,一般是文本文件,里面是SQL语句或表的实际数据
裸文件备份 拷贝数据库物理文件,mysqlhotcopy,最快,但是只能是myisam引擎.本质是使用锁表语句后再使用cp或scp拷贝数据库.适合大数据
3)按照备份数据库的内容来分:
完全备份
增量备份 xtrabackup,只能备份InnoDB和XtraDB两种引擎表
日志备份 二进制日志的备份,主从复制
7.查看http的并发请求数及TCP连接状态?
[[email protected] ~]# netstat -ap | grep httpd | awk ‘{printf $6}‘ #查看链接状态
[[email protected] ~]# netstat -an |grep ESTABLISH | grep "192.168.1.10:80" #查看并发请求数
8.统计出Apache的access_log中访问量最多的5个IP?
cat /var/log/httpd/access_log | awk ‘{print $1}‘ | uniq -c |sort -n|tail -5
9.Linux开机启动顺序?
1)加载Bios: 根据设定取得第一个可开机引导设置如:光驱,硬盘,网络,USB。
2)MBR引导: 通过主引导扇区读取主引导程序、硬盘分区表和和硬盘有效标志.系统找到BIOS所指定的硬盘的MBR后,就会将其复制到地址所在的物理内存中。
3)读取grub: 读取内存中的grub配置信息,并依照此配置信息来启动不同的操作系统。
4)加载内核: 系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。
5)读取inittab: 运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作.inittab最主要的就是确定运行等级。
6)执行rc.sysinit: 就是说这是来准备软件执行的作业环境的。
7)执行rcN.d: 根据运行级别的不同,系统会运行/etc/rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。
8)执行rc.local: rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。
9)执行/bin/login 执行后进入登录状态。
10.写一个脚本,实现判断192.168.1.0/24网络中当前在线的IP有哪些,能ping通则认为在线?
[[email protected] ~]# vim /root/ping.sh
#!/bin/bash
i=0
while [ $i -le 255 ]
do
ping -c 3 192.168.1.$i &> /dev/null
if [ $? == 0 ]
then
echo "192.168.1.$i"
fi
((i++))
done
[[email protected] ~]# chmod +x /root/ping.sh
11.写一个脚本,要求从本地的/data目录下的所有文件备份到远程服务器的/data目录下,备份完成后发送邮件到backup.meihua.info,邮件内容要显示备份数据的大小,并且每天凌晨1点开始执行?
[[email protected] ~]# vim /root/back.expect
#!/usr/bin/expect
set ip "192.168.1.11"
set passwd 123456
set timeout 30
spawn scp -r /root/data/ $ip:/root/
expect {
"(yes/no)?" { send "yes\r";exp_continue }
"password:" { send "$passwd\r";exp_continue }
}
[[email protected] ~]# vim /root/back.sh
#!/bin/bash
expect /root/back.expect
if [ $? -eq 0 ]
then
size=`du -sh /root/data/ | awk ‘{print $1}‘`
echo "backup success\!the size is $size" | mail -s "backup info" backup.meihua.info
else
echo "bacukp failed\!" | mail -s "backup info" backup.meihua.info
fi
12.说说MySQL优化?
1.硬件优化:
1)cpu:64位,高主频,高缓存,高并行处理能力.
2)内存:大内存,高主频,尽量不要用swap.
3)硬盘:固态,高转速.
4)网卡:万兆,光口.
2.磁盘io优化:
1)做raid10
2)磁盘分区:将数据放在独立的分区上.做主从时,binlog单独放在一个分区
3.操作系统优化:
1)使用64位系统
2)使用网卡绑定
3)设置TCP连接数限制
4)优化mysql用户打开文件数限制
5)禁用不必要的服务自启动
6)可以给数据分区一个单独的文件系统,一般为xfs(红帽6需要安装支持xfs的软件xfsprogs),在挂载分区时可以考虑启用noatime.
7)最小化原则:
安装系统最小化
开启服务最小化
操作最小化
登录最小化
权限最小化
4.数据库设计与规划:
1)专机专用
2)做主从同步,负载均衡,高可用集群等
3)选择合适的数据库引擎.如myiasm适合读多写少的表,innodb适合读少写多的表.做主从时主使用innodb引擎,从使用myisam引擎
5.my.cnf内的参数优化:
总原则:赋予mysql适当的资源,一般40%给系统,60%-70%给mysql.
1)启用mysql慢查询,分析sql语句,找到影响效率的sql:
vim /etc/my.cnf
log-slow-queries=/var/lib/mysql/slow.log
log_query_time=5
2)对查询进行缓存:
vim /etc/my.cnf
query_cache_size=32m
3)强制限制mysql资源配置,例如:
vim /etc/my.cnf
max_connections=500 #限制最大连接数
wait_timeout=10 sleep #mysqld将终止等待时间(空闲时间)超过10秒的连接
max_connection_error=10 #如果一个主机在连接到服务器时有问题,并重试很多次后放弃,那么这个主机就会被锁定,直到执行:mysql> FLUSH HOSTS;
4)表高速缓存:
vim /etc/my.cnf
table_cache=23 #缓存23个表.在 2G 内存以下的机器中的值默认从 256 到 512个
5)关键字缓存:
vim /etc/my.cnf
key_buffer=512M #只跑了一个mysql服务.结合所有缓存,mysql整体使用的缓存可以是物理内存的80%
6)关闭dns反查功能:
skip-name-resolve #该选项就能禁用DNS 解析,连接速度会快很多。不过,这样的话就不能在MySQL 的授权表中使用主机名了而只能用ip 格式。
6.sql语句优化:
1)建表:
表结构合理,不要太大,类型精确.
2)索引:
建立合适的索引.
3)查询:
减少逻辑运算,精确查询(不要查询不需要的数据).
适当的将多个小查询合并为一个大的查询.
适当的将某些过于复杂的查询拆解成多个小查询,和刚才的相反.
4)事务:
减小事务包的大小.
5)存储过程:
适当的建立并优化存储过程
13.软件包的安装方式有哪几种?该如何正确的选用哪种安装方式?
1.yum安装:功能性软件,如openssh
2.源码编译:高并发的软件,例如mysql集群
3.二进制安装:开发测试的软件
14.myisam和innodb的区别是什么?
mysql默认使用的是myisam
1)myiasm不支持事物
2)myisam不支持行锁表
3)myisam不支持外键
4)myisam支持全文索引
5)myisam支持gis数据,如surface等
6)myisam主键范围比innodb小,最小是其1/2
15.如何批量删除指定的文件夹下以.txt结尾的文件?
find /root/ -name "*.txt" -exec rm -rf {} \;
16.如何筛选指定文件夹下大于10M的文件?
find /root/ -size +10M
17.说说你在公司的主要工作内容以及公司的系统架构?
18.在工作过程中遇到了一些什么问题?如何排查并解决的?
apache的2种工作方式的区别?
你们原来公司的网站架构是怎样的?
你对哪一块比较熟练或者精通?
Squid、varnish等缓存服务器维护过吗?squid缓存代理的原理是什么?缓存命中率怎么查看及清空缓存?
LVS的工作原理是什么?有哪些算法?
Nginx日常的优化的参数都有哪些?Nginx动静分离做过吗?描述简单的步骤。
Linux内核优化,你都优化哪些参数?
你在维护网站的过程中,曾经遇到过什么重大的问题?怎么解决的?
Shell编程熟练吗?编写一个自动化备份Mysql数据库的脚本?
Mysql主从架构的原理是什么?如果主从不同步,报错了,怎么恢复?
如果备份大数据Mysql数据文件?Mysql优化有哪些步骤?
FTP主被动模式的区别是什么?
Apache两种工作模式的区别及优化?
Nagios、cacti维护过吗?平时都监控些什么?
你们公司的网络出口带宽是多少?每天网站的PV、UV是多少?
你觉得Linux运维工程师的职责是什么?
你为什么离职,离职的原因是什么?
密码忘了该怎么办,如何破解?
作为一个系统运维工程师,需要具备哪些技能?
如何备份数据库?有哪些命令?
nginx有哪些模块?
如何设置自动备份并删除10天前备份的数据库?
如果有50台主机需要安装操作系统,该怎么办?
如果网站受攻击了,该如何排查问题,思路是什么?
Linux如何查看某个端口是否被占用了?
rpm安装和yum安装有什么区别?rpm安装软件如何解决依赖?
如果发现Linux系统所有的文件都是只读的,可能是什么问题?该如何排查?
-----以上面试题多数为本人的真实面试题,答案均为自己查阅并总结,不正确的地方还望大家多多指出。还有些题目没整理出答案,大家可以留言回答。不定期更新,哈哈!
以上是关于Linux常用面试题的主要内容,如果未能解决你的问题,请参考以下文章