cLinux面试题
‘壹’ 面试套路——如何应对linux问题
面试中Linux问题是基础知识部分中必然会问到的一块,对于不常使用或没有接触过Linux的同学,如何巧妙应对呢?以下是我的经验。
面试官 :Linux了解吗?
我:还可以。
面试官:查看******的指令是什么?
我:不清楚。。。
面试官:查看******的指令呢?
我:不记得了。。。
(GG)
后来又一次跟学长吃饭,学长表示其实对于面试官Linux是加分项,会最好,不会也没什么。重要的是展示你了解多少,让面试官觉得你有一定程度的了解的,而不是一定要把面试官问的问题答上来(想要做到这一点要花的功夫可不小)。所以在之后的面试中,我改变了战术。
面试官:Linux了解吗?
我:Linux我只有一些使用经验,没有开发经验。去年在分布式的项目中,我需要在centos环境下部署分布式组件,常用一些基础的命令,比如:
cd 到一个路径下;
ll 查看当前路径下的内容;
chown 修改权限;
ps -aux | grep 查看进程信息;
cat 、 vim 等查看、修改文件内容。我常用的一些 vim 快捷键:
dd 删除当前行;
gg 定位到文件头部;
1$ 、 2$ 、 3$ 定位到当前行、第二行、第三行尾部。
有的面试官:(漏出满意的笑容)不错。(改问其他部分的问题)
还有的面试官: shell 命令熟悉吗?
我:接触过,有几次需要编写简单的shell脚本进行自动化测试,当时用的是 base shell ,但是只用过一两次,具体怎么写想不起来了,如果要用的话需要查一下 。
面试官:哦~能查出来是吧,可以。
总之,对于来不及准备情况,在被问到时主动把自己会的噼里啪啦说出来,可以避免被动提问然后答不上来的尴尬情况。而且会让面试官觉得你掌握得不错。我网络三面都被问到Linux,我都用了这一套回答过关,旁听的同学都听乐了。
当然这只是一个应对面试的小套路,真正学习和掌握Linux对于工作中是不可避免的一步。投机取巧只能应付一时,不要本末倒置哦。
‘贰’ Linux 中关于Shell脚本面试问题大全
了解脚本或至少知道基础知识对系统管理员来说至关重要,它也有助于你在工作环境中自动完成很多任务。在过去的几年里,所有 Linux 工作职位都要求脚本技能。
1) 如何向脚本传递参数?
例子:显示文件名称脚本。
2) 如何在脚本中使用参数?
第一个参数:$1,第二个参数:$2
例子:脚本会复制文件(arg1)到目标地址(arg2)。
3) 如何计算传递进来的参数?
4) 如何在脚本中获取脚本名称?
5) 如何检查之前的命令是否运行成功?
6) 如何获取文件的最后一行?
7) 如何获取文件的第一行?
8) 如何获取一个文件每一行的第三个元素?
9) 假如文件中每行第一个元素是 FIND,如何获取第二个元素
10) 如何调试 bash 脚本?将 -xv 参数加到 #!/bin/bash 后。
例子:...
11) 举例如何写一个函数?
12) 如何向连接两个字符串?输出...
13) 如何进行两个整数相加?输出:3。
14) 如何检查文件系统中是否存在某个文件?
15) 写出 shell 脚本中所有循环语法?for 循环,while 循环,until 循环。
16) 每个脚本开始的 #!/bin/sh 或 #!/bin/bash 表示什么意思?这一行说明要使用的 shell。#!/bin/bash 表示脚本使用 /bin/bash。对于 python 脚本,就是 #!/usr/bin/python。
17) 如何获取文本文件的第 10 行?
18) bash 脚本文件的第一个符号是什么?
19) 命令:[ -z "" ] && echo 0 || echo 1 的输出是什么?
20) 命令 “export” 有什么用?使变量在子 shell 中可用。
21) 如何在后台运行脚本?在脚本后面添加 “&”。
22) "chmod 500 script" 做什么?使脚本所有者拥有可执行权限。
23) ">&" 做什么?重定向输出流到文件或另一个流。
24) “&” 和 “&&” 有什么区别?& - 希望脚本在后台运行的时候使用它;&& - 当前一个脚本成功完成才执行后面的命令/脚本的时候使用它。
25) 什么时候要在 [ condition ] 之前使用 “if”?当条件满足时需要运行多条命令的时候。
26) 命令:name=John && echo 'My name is $name' 的输出是什么?
27) bash shell 脚本中哪个符号用于注释?#
28) 命令: echo ${new:-variable} 的输出是什么?
29) ' 和 " 引号有什么区别?●' - 当我们不希望把变量转换为值的时候使用它;●" - 会计算所有变量的值并用值代替。
30) 如何在脚本文件中重定向标准输出和标准错误流到 log.txt 文件?在脚本文件中添加 "exec >log.txt 2>&1" 命令。
31) 如何只用 echo 命令获取字符串变量的一部分?例子:...
32) 如果给定字符串 variable="User:123:321:/home/dir",如何只用 echo 命令获取 home_dir?
33) 如何从上面的字符串中获取 “User”?
34) 如何使用 awk 列出 UID 小于 100 的用户?
35) 写程序为用户计算主组数目并显示次数和组名
36) 如何在 bash shell 中更改标准的域分隔符为 ":"?
37) 如何获取变量长度?
38) 如何打印变量的最后 5 个字符?
39) ${variable:-10} 和 ${variable: -10} 有什么区别?●${variable:-10} - 如果之前没有给 variable 赋值则输出 10;如果有赋值则输出该变量;●${variable: -10} - 输出 variable 的最后 10 个字符。
40) 如何只用 echo 命令替换字符串的一部分?
41) 哪个命令将命令替换为大写?
42) 如何计算本地用户数目?wc -l /etc/passwd|cut -d" " -f1 或者 cat /etc/passwd|wc -l
43) 不用 wc 命令如何计算字符串中的单词数目?
44) "export $variable" 或 "export variable" 哪个正确?
45) 如何列出第二个字母是 a 或 b 的文件?
46) 如何将整数 a 加到 b 并赋值给 c?三种方法
47) 如何去除字符串中的所有空格?
48) 重写这个命令,将输出变量转换为复数: item="car"; echo "I like $item"?
49) 写出输出数字 0 到 100 中 3 的倍数(0 3 6 9 ...)的命令?
50) 如何打印传递给脚本的所有参数?
51) [ $a == $b ] 和 [ $a -eq $b ] 有什么区别?●[ $a == $b ] - 用于字符串比较;●[ $a -eq $b ] - 用于数字比较。
52) = 和 == 有什么区别?●= - 用于为变量赋值;●== - 用于字符串比较。
53) 写出测试 $a 是否大于 12 的命令?
54) 写出测试 $b 是否小于等于 12 的命令?
55) 如何检查字符串是否以字母 "abc" 开头?
56) [[ $string == abc* ]] 和 [[ $string == "abc*" ]] 有什么区别?●[[ $string == abc* ]] - 检查字符串是否以字母 abc 开头;●[[ $string == "abc" ]] - 检查字符串是否完全等于 abc。
57) 如何列出以 ab 或 xy 开头的用户名?
58) bash 中 $! 表示什么意思?后台最近执行命令的 PID.
59) $? 表示什么意思?前台最近命令的结束状态。
60) 如何输出当前 shell 的 PID?
61) $* 和 $@ 有什么区别?●$* - 以一个字符串形式输出所有传递到脚本的参数;●$@ - 以 $IFS 为分隔符列出所有传递到脚本中的参数。
62) 如何在 bash 中定义数组?
63) 如何打印数组的第一个元素?
64) 如何打印数组的所有元素?
65) 如何输出所有数组索引?
66) 如何移除数组中索引为 2 的元素?
67) 如何在数组中添加 id 为 333 的元素?
68) shell 脚本如何获取输入的值?a) 通过参数;b) 通过 read 命令。
69) 在脚本中如何使用 "expect"?
‘叁’ Linux系统工程师面试题附答案
一、简答题
1.如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0:
答:# iptables -t nat -A PREROUTING -d 192.168.16.1 -p tcp --dport 80 -j DNAT --to 192.168.16.1:8080
或 者:# iptables -t nat -A PREROUTING -i eth0 -d 192.168.16.1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
2.什么是NAT,常见分为那几种,DNAT与SNAT有什么不同,应用事例有那些?
SNAT,DNAT,MASQUERADE都是NAT。
MASQUERADE是SNAT的一个特例。
SNAT是指在数据包从网卡发送出去的时候,把数据包中的源地址部分替换为指定的IP,这样,接收方就认为数据包的来源是被替换的那个IP的主机。
MASQUERADE是用发送数据的网卡上的IP来替换源IP,因此,对于那些IP不固定的场合,比如拨号网络或者通过dhcp分配IP的情况下,就得用MASQUERADE。
DNAT,就是指数据包从网卡发送出去的时候,修改数据包中的目的IP,表现为如果你想访问A,可是因为网关做了DNAT,把所有访问A的数据包的目的IP全部修改为B,那么,你实际上访问的是B
因为,路由是按照目的地址来选择的,因此,DNAT是在PREROUTING链上来进行的,而SNAT是在数据包发送出去的时候才进行,因此是在POSTROUTING链上进行的。
3.包过滤防火墙与代理应用防火墙有什么区别,能列举几种相应的产品吗?
4.iptables是否支持time时间控制用户行为,如有请写出具体操作步骤。
5.说出你知道的几种linux/unix发行版本。
Redhat、CentOS、Fedora、SuSE、Slackware、Gentoo、Debian、Ubuntu、FreeBSD、Solaris、SCO、AIX、HP…
6.列出linux常见打包工具并写相应解压缩参数(至少三种)
7.计划每星期天早8点服务器定时重启,如何实现?
8.列出作为完整邮件系统的软件,至少二类。
9,当用户在浏览器当中输入一个网站,说说计算机对dns解释经过那些流程?注:本机跟本地dns还没有缓存。
答:
a.用户输入网址到浏览器;
b.浏览器发出DNS请求信息;
c.计算机首先查询本机HOST文件,看是否存在,存在直接返回结果,不存在,继续下一步;
d.计算机按照本地DNS的顺序,向合法dns服务器查询IP结果;
e.合法dns返回dns结果给本地dns,本地dns并缓存本结果,直到TTL过期,才再次查询此结果;
f.返回IP结果给浏览器;
g.浏览器根据IP信息,获取页面;
10,我们都知道,dns既采用了tcp协议,又采用了udp协议,什么时候采用tcp协议?什么时候采用udp协议?为什么要这么设计?
答:这个题需要理解的东西比较的多,分一下几个方面
a,从数据包大小上分:UDP的最大包长度是65507个字节,响应dns查询的时候数据包长度超过512个字节,而返回的只要前512个字节,这时名字 解释器通常使用TCP从发原来的请求。
b,从协议本身来分:大部分的情况下使用UDP协议,大家都知道UDP协议是一种不可靠的协议,dns不像其它的使用UDP的Internet应用 (如:Tftp,BOOTP和SNMP等),大部分集中在局域网,dns查询和响应需要经过广域网,分组丢失和往返时间的不确定性在广域网比局域网上更 大,这就要求dns客户端需要好的重传和超时算法,这时候使用TCP。
11,一个EXT3的文件分区,当使用touch test.file命令创建一个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况,说说你的理由。
答:两种情况,一种是磁盘配额问题,另外一种就是EXT3文件系统的设计不适合很多小文件跟大文件的一种文件格式,出现很多小文件时,容易导致inode 耗尽了。
12,我们都知道FTP协议有两种工作模式,说说它们的大概的一个工作流程?
FTP两种工作模式:主动模式(Active FTP)和被动模式(Passive FTP)
在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。
服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。
在被动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通 知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
总的来说,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的.FTP是指服务器被动地等待客户端连接自己的数据端口。
被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。
因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。
13.编写个shell脚本将当前目录下大于10K的文件转移到/tmp目录下
Q:主要是考察awk 这些的用法
#/bin/sh
#Programm :
# Using for move currently directory to /tmp
for FileName in `ls -l |awk ‘$5>10240 {print $9}’`
do
mv $FileName /tmp
done
ls -la /tmp
echo “Done! ”
14.apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?
apache主要有两种工作模式:prefork(apache的默认安装模式)和worker(可以在编译的时候加参数–with-mpm- worker选择工作模式)
‘肆’ 谁知道软件测试工程师笔试linux时,有哪些面试题目
一、请写出如下功能Linux命令:
1.三种查看server.log的文件内容
linux查看日志文件内容命令tail、cat、tac、head、echo
详情:https://www.cnblogs.com/themost/p/7890154.html
2.编辑start.sh文件,查看文件前10行内容和后10行内容
vi start.sh
head -n 10 start.sh 前10行
tail -n 10 start.sh 后10行
3.删除temp.conf文件
rm -f file.log
4.查看后台所有java进程
[plain]view plain
ps-ef|greptomcat
- mvn compile
5.结束后台java进程
不所有进程都可以用“kill+进程编号”结束掉,对于结束不掉的进程可以使用“kill -s 9 进程编号”来进行强制结束;
但一般情况下,只需要“kill 进程编号”就可结束。
6.编译maven项目
7.将start.sh文件改为可执行权限
chmod u + x filename.sh
chmod的语法格式如下:chmod [who] [opt] [mode] 文件/目录名
其中who表示对象,是以下字母中的一个或组合:
u:表示文件所有者
g:表示同组用户
o:表示其它用户
a:表示所有用户
opt则是代表操作,可以为:
+:添加某个权限
-:取消某个权限
=:赋予给定的权限,并取消原有的权限
而mode则代表权限:
r:可读
w:可写
x:可执行
8.启动jboss服务
net start JBoss
9.跨服务器拷贝文件(怎样把共享盘的文件拷贝到linux本机里)
跨服务器拷贝需要用到的命令是scp.
----------------------拷贝文件夹----------------------------------------------
把当前文件夹tempA拷贝到 目标服务器10.127.40.25 服务器的 /tmp/wang/文件夹下
scp-r /tmp/tempA/[email protected]:/tmp/wang/
其中wasadmin是目标服务器的用户名,执行命令提示输入密码,然后输入密码即可
----------------------拷贝文件----------------------------------------------
把当前文件tempA.txt拷贝到 目标服务器10.127.40.25 服务器的 /tmp/wang/文件夹下
scp /tmp/[email protected]:/tmp/wang/
其中wasadmin是目标服务器的用户名,执行命令提示输入密码,然后输入密码即可
‘伍’ Linux系统工程师面试题附答案(2)
Linux系统工程师面试题(附答案)
prefork的特点是:(预派生)
1.这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销
2.可以防止意外的内存泄漏
3.在服务器负载下降的时候会自动减少子进程数
worker的特点是:支持混合的多线程多进程的多路处理模块
如果对于一个高流量的HTTP服务 器,worker MPM是一个比较好的选择,因为worker MPM占用的内存要比prefork要小。
15.名词解释 HDLC,VTP,OSPF,RIP,DDOS,system V,GNU,netscreen,ssh,smartd,apache,WAIT_TIME 等等。
16.编写shell脚本获取本机的网络地址。比如:本机的ip地址是:192.168.100.2/255.255.255.0,那么它的网络地址是
192.168.100.1/255.255.255.0
方法一:
#!/bin/bash
#This script print ip and network
file=”/etc/sysconfig/network-scripts/ifcfg-eth0″
if [ -f $file ] ;then
IP=`grep “IPADDR” $file|awk -F”=” ‘{ print $2 }’`
MASK=`grep “NETMASK” $file|awk -F”=” ‘{ print $2 }’`
echo “$IP/$MASK”
exit 1
fi
方法二:
#!/bin/bash
#This programm will printf ip/network
#
IP=`ifconfig eth0 |grep ‘inet ‘ |sed ‘s/^.*addr://g’|sed ‘s/ Bcast.*$//g’`
NETMASK=`ifconfig eth0 |grep ‘inet ‘|sed ‘s/^.*Mask://g’`
echo “$IP/$NETMASK”
exit
17.在命令行下发一邮件,发件人:[email protected], 收信人:[email protected]
二、简述题:
1.linux下如何改IP,主机名,DNS
2.linux下如何添加路由
3.简述linux下编译内核的意义与步骤
4.简述Linux启动过程
5.简述DDOS攻击的原理
6.简述Tcp三次握手的过程
7.简述VPN,常见有哪几种?
三、设计题:
1.系统设计
请考虑以下系统的设计. 您可以翻阅资料,查询任何您有帮助的资料、指南等。
您有的资源:
8台安装Linux (2.6内核) 的双网卡PC服务器以及相关开源软件,交换机
Apache 2.2.x
Tomcat 5.5.X
数据库系统
最多8个Internet IP地址,请您设计一个系统:
1、使用双apache web server前端;
2、采用AJP连接后段的3台Tomcat应用服务器,这些tomcat被配置成cluster, 因此需要考虑apache对后端的分配,分配采用完全平衡的方法;配置使用cookie来实现session stickness;
3、1台数据库服务器只有tomcat才需要连接,也不需要对Internet提供服务。
4、考虑系统的安全性和维护方便性;
5、通过rewrite规则配置把下属URL规则改写成友好的URL
http://server/webapp/getinfo?id=XXXX&name=YYYY –> http://server/getinfo/YYYY/XXXX
您需要提交
1、服务器规划,包括:
*网络结构图
*每台机器的IP地址分配
*每台机器上运行的关键软件
*您从安全性和维护性方面的考虑
2、Apache的以下配置文件给我们:
*extra/http-proxy-ajp.conf
*extra/http-rewrite.conf
2.你可以采取任何设备和不同操 作系统服务器设计对两台WWW服务器和两台FTP服务器做负载均衡,用网络拓扑图表示并加以说明!(方法越多越好)
第一种方法: DNS轮巡
www1 IN A 192.168.1.1
www2 IN A 192.168.1.2
www3 IN A 192.168.1.3
ftp1 IN A 192.1.1.4
ftp2 IN A 192.1.1.5
ftp3 IN A 192.1.1.6
www IN CNAME www1
www IN CNAME www2
www IN CNAME www3
ftp IN CNAME ftp1
ftp IN CNAME ftp2
ftp IN CNAME ftp3
;