澳门太阳娱乐集团官网-太阳集团太阳娱乐登录

面试Linux运转一定会问到Shell脚本的那二十五个难
分类:脚本专栏

软件测试面试官会如何刁难你及都会问到什么问题? 我剖析下面试不同的岗位问的问题,不同岗位问的肯定是不一样的,那么我先从初级开始 分为三个等级,就是初级怎么去面试,中级岗位怎么去面试,还有高级的怎么去面试。 还有就是测试经理或者领导一般想是怎么衡量你是什么级别的?他的衡量标准是什么? 初级测试人员通常面试官上来先会问她们什么?首先当然是自我介绍,这个环节是必不可少的,因为每个面试官都需要通过你用最快的时间去了解你这个人,了解你以前干过什么项目,做过几年,有没有项目经验,通过你一个简短的自我介绍,可以对你有一个50%的了解,还有可能你这一个自我介绍,面试官的心里就已经决定了要不要你了。 因为就一个短短的自我介绍,面试官已经心里有数,至少有了50%的数了,那么它还需要继续的去深挖一下,你的能力到底有多少,到底能不能做一个简单的功能测试,他需要问一些简单的问题,比如说有没有编写过测试用例,你编写测试用例的时候用到什么方法?还有就是你上一家公司的测试流程是什么样子的?他需要了解你上一家工作的事流程,为什么? 因为他需要跟他们自己这家公司现在的流程进行一个比较,需要知道你们上一家公司的工作流程跟他们现在的工作流程是不是一样的,如果不一样,那差距到底大不大? 了解下你们公司的流程是不是正规的?是不是一个比较完善的一个流程?他都需要了解。 可能不善于总结的测试人员有可能就说不太好。对吧! 那测试流程应该是什么样子?我现在简单的给大家说一下,一个标准的测试流程应该是什么样的! 首先呢,一家正规的公司,它们的测试流程应该是: 第一件事情拿到需求文档 首先用户把自己想要的东西说出来之后,由产品人员来记录,并且转化成一个需求文档。 那么咱们测试人员跟开发人员需要在产品人员拿出需求文档之后,进行一个需求的评审, 需要了解他们用户到底想要一个什么样的功能,想要一个什么的软件。 在评审的过程当中需要对需求进行一个测试,测试什么?测试他需求文档中有没有二义性的内容,有没有描述不准确,或者是理解不清楚的一些东西,包括你在参加这个需求文档这个会议的期间,产品在讲需求的过程当中,你有没有觉得这个功能有没有必要,或者可以删简,可以留到第二个版本在做。这就是第一件事情,需求评审。 那么需求评审通过之后,咱们测试人员需要由测试的组长或经理来编写一份测试的计划,这个计划里边包含的内容会非常的多,这个具体包含什么这里就不细说了,以后有机会的时候再给大家细讲测试计划,一般情况下都是20多页的A4纸,打印出来之后是非常厚的一摞,里边简单的会有概要设计,详细设计,参考文档还有这个背景,还有咱们人员分工时间安排里程碑,还有风险评估等等,这些都是写在咱们的测试计划里面的。 那测试计划写完之后,咱们会在把所有的测试人员召集到一起开会,对测试计划进行一个评审。 评审测试计划里边什么内容安排的是不是合理,时间的安排是不是真的够用,包括里边的风险是不是规避掉了,还有咱们的测试机的准备,系统的准备,还有测试的一些方式方法,时间的一些这个限制,都是需要写在里边,然后咱们评审通过之后。 咱们再去干什么事情?就是编写测试用例。在测试计划里边会给每一个人进行人员分工,可能张三负责注册模块,李四负责登录模块,王五赵六负责会员中心模块,他们每个人都有自己的负责的那一块功能,他们需要对自己的负责那一块编写测试用例,人员分工安排下去之后,每人编辑好测试用例,那么他们开始怎么样? 开始测试用例的评审 评审他有没有遗漏的点,评审通过之后开始执行测试用例,然后第一轮测试迭代,第二轮测试迭代第三轮测试迭代,直到它验收测试,然后发布上线编写咱们的测试报告,整个这一套流程结束,每一轮测试结束之后,都需要给出一个阶段性的测试报告,第一轮测试结束了,需要给一份测试报告,第二轮结束还是要给测试报告,最后总体的结束了,需要汇总,把所有的bug已解决的未解决的,包括遗留的都需要一个汇总,还有冒烟测试这个事情,我为什么没有说,因为冒烟测试有的公司把它直接进入到了系统测试 什么是冒烟测试?冒烟测试是为了验证这个系统是不是满足系统测试的要求,需要在单元集成系统验收的集成与系统测试之间进行的。冒烟测试通常只需要一天或者半天的时间来完成,它只需要去测一下,简单的去跑一下主要的流程,确保每一个页面能够正确地跳转,每一个正常的功能能够正常的点击就足够了,这就是冒烟测试。这也是面试官比较希望听到你一个完美的回答的一个问题,也是能够衡量出你这个人到底有没有真正工作过的一个问题。 那么还有就是它需要了解到你上一家公司你主要负责的是哪一块业务,那么我建议大家,如果你们去面试的时候,千万不要说你负责注册登录模块这些 为什么? 因为没有什么技术挑战,什么样的人领导才会分配这样的任务呢,那就是实习生去做,领导绝对不会把这个模块分配给一个技术能力强的人去测。 所以说如果你说你在上一家公司,你就做这个注册登录模块测试的话,那我只能说你们领导不太看好你。你应该要说什么?我是负责什么下单流程的,或者负责支付流程的,或者是负责这个退款流程,这些流程都是比较有逻辑性的内容。这些东西会涉及到的前后台,包括审核这个环节都会有。比如你去发布一件商品,需要后台审核通过才能发布,需要涉及到数据库,所以说需要涉及到后台,需要涉及到前台的展示,这些都涉及到很多的逻辑测试。这样的工作是比较有技术含量的。 那还有些面试官会问什么? 你认为你在测试过程中遇到了一个比较逻辑性最强的一个bug是什么? 这个东西就需要你们去想想,曾经你们在测的时候遇到了一个逻辑性特别强的bug呢 这个问题问的目的是什么? 问的目的是了解你到底有没有真正的测试过? 还有就是有的面试官会故意的说错一些东西,然后看你的反应,通过这些都能了解你到底会不会,所以想验证一个人到底会不会使用一个工具,不一定非得要考他。 再往深入一点,他会问你有没有性能测试方面的基础?功能测试这方面,实际上我觉得主要考验人的就是逻辑思维能力,还有你的细心程度能力 初级功能测试这一块,面试官着重要看的是你是不是一个真正细心,而且业务逻辑思维能力强的人,如果强是绝对没有问题的 初级这块还需要分清楚黑盒白盒跟灰盒的区别是什么?包括缺陷的严重级别,提交缺陷的流程,包括缺陷管理工具,一个缺陷的生命周期是什么?还有你会不会简单Linux指令都会问到 还有就是协议这一块,什么是协议?就比如七层协议,还有四层协议都要有一个概念,tcp ip协议,OSI 协议要一定的了解,这都是属于一个软件行业的一些基础的知识点 面试官还会问,测试的方法有哪些,黑盒测试的范围有哪些? 如果能说出来十条以上的,我觉得面试官对你会比较有兴趣,如果连五条都说不出来基本会pass掉的,要是连十个测试范围的方法都不知道的话,绝对是一个不合格的测试工程师。 软件测试初级有专门问初级的题中级有专门问中级的题,高级有专门高级的题,初级主要针对于围绕着它的功能测试这一块的方式方法,并且测试用例的方式方法,还有就是它对测试流程的掌握,编写测试报告,都会着重的去问这些,要是问什么Java,selenium什么的都没有意义,答上来那就不是初级了,所以一般情况也不会去问,除非面试官有毛病。 那么针对于中级的话,一般都会把功能问一遍,面试一个中级测试工程师,着重会问性能自动化跟接口,这是三大重中之重,还有数据库。数据库都是其次的,为什么是其次?因为数据库在大学里有讲,基本上上过大学的都会数据库,都会懂得增删改查,再往深入说,就是表连接子查询的问题了,实际工作当中用的也不多。因为我工作这么多年了,在工作当中用到表连接子查询的机会并不是很多。当然这是衡量一个人的技术水平的一个标杆, 着重要问的是性能自动化,性能的话主要问loadrunner或者jmeter,不要求你全会,最起码达到熟练,因为有很多人会在简历里这样写,明明只是一个了解,他非要写掌握,明明只是一个掌握,他给自己写个精通,这样面试官看到就要考验你,你到底是不是达到一个精通的标准,或者是一个掌握的标准,但是我建议在简历里尽量少出现了解这个字眼,在我看来写了解的就是等于不会,所以尽量不要写了解,如果非要做个比例我可以说我了解东西多了去,什么宇宙的来历啊什么的都了解,是吧!根本没有意义, 所以建议以后简历里头写精通或者掌握、熟悉都可以,千万不要写了解,性能基本会问你们平时要关注哪些指标,怎么做性能测试,这些指标说明什么问题?分别代表着什么意思,怎么叫合格?怎么叫不合格,你得跟我说出个123来,否则的话你就是一个初级。 这些都是面试官会问的问题,jmeter都会问到什么是断言,断言干嘛使的,都有哪些断言,怎么连接APP,假如我要测试一个手机的性能测试的时候,我要怎么设置,包括它这个聚合报告里边每个指标代表什么意思?它的塑型图,塑型结果怎么看,怎么看它的请求,怎么看它的返回值,每个请求代表什么意思?什么是post,什么是get?这些都会。还有接口测试怎么测?首先你要做性能,你必须要先会接口,你不会接口你就没法做性能测试。 像自动化这块问的就比较多了,会问你QTP和selenium的区别是什么? QTP能干嘛selenium呢?QTP能够测试cs跟BS架构,selenium只能针对于BS架构。 那么QTP用什么语言?用VBS语言,那selenium又用什么语言?python或者Java都可以 这些都是中级应该会的,如果我阐述的这些问题你都会了那么你就具备中级的测试能力了 如果我问的这些问题确实把你们难住了,这答案应该是什么?怎么答?如果你自己现在已经开始懵 了,那你需要好好巩固了 还有高级面试的部分,高级部分还需要你会写Java会写Python,需要能解决一些问题,遇到一些疑难杂症的时候,别人解决不了,你能解决,脚本录不了的地方你能录,不用录的方法能写的出来。这就是高级工程师,高级还能干嘛?不仅能看得懂代码,看得懂脚本,还能找到问题的原因,知道这个bug是怎么出现的,是由于什么导致这个bug出现的,怎么去解决它!虽然不用自己去解决,但是告诉开发人员这个问题是由于什么原因导致的,你需要把接口的哪一个代码改掉,把这个参数给换了才能解决这个问题,你需要知道这个问题是怎么出现的,包括解决的方案,并且能够把控整个项目的进度,包括它的时间节点,包括他的所有的人员分工跟安排, 你才能够敢说你自己是一个高级测试工程师 以上就是我总结的现在公司面试都会问到的问题,包括后续你有什么职业规划,或者为什么从上家公司离职,又或者面试官问你你有什么需要问我的吗?这时候一定要问点有水平的问题!不要让面试官觉得你很low,至于该问什么不该问什么在这我就不细说了,如果还是不知道怎么说可以给我留言,看到会给予回答~至于教学资料和学习思路可以在(152 015 953)群文件夹里下载查看即可

单身越久,围绕你的问题就可能越多。这些问题不见得是你个人的疑问,而是经常被旁人问到的问题。单身的时候,想必你一定会被人问到下面这些(或其中几个)问题:

图片 1

你为什么会单身?
被问及的频率最高,单身人自己也会思考类似这样的问题。好像只要你单身,就一定有人问:你为什么会单身,似乎单身是不对的,一定要探究导致的原因。

虽然现在Python在运维工作中已经使用很普遍,但是很多企业在找Linux云计算工程师的时候还是会问到 shell 脚本的问题,它有助于你在工作环境中自动完成很多任务。

你又不丑,怎么会单身?
看似是句安慰话,实则让人感觉很接不上话。丑不丑,和单身有多大的关系?我们绝大多数人都只是普通人,既不太丑,又不太脱颖而出,行为举止全在个人践行和努力;但在这个看脸的世界里,总会习惯得被人用相貌来询问是否单身。

如下是一些面试过程中,经常会遇到的 shell 脚本面试问题及解答:

你这么优秀(条件这么好),怎么还单身呢?
和上面一点很类似,条件好怎么还单身的逻辑是,似乎一个人优秀了,要风得风要雨得雨,不可能单身的。自己自然条件这么好,一直单身,不科学啊?外人总会对你很好奇。

Q:1 Shell脚本是什么、它是必需的吗?

你介意另一半比你(高、矮、胖、瘦、有钱……)
万能的例句问题,后面可以拓展出千千万万个关键词:你介意另一半比你高吗?矮吗?挣钱多吗?诸如此类。既然你要找对象,那么在旁人看来,绝不考虑什么感觉那些虚的东西,一切都现实考虑,介不介意另一半和你不匹配啊?

答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。

你是不是太挑剔了?
如果你一直单身,一定有人在不了解你的时候问:你是不是太挑剔了,别要求太高了。有时候你自己也委屈:我根本没挑剔好不,怎么着也不能随便拉一个就恋爱结婚啊?但往往别人会噎你一句:你的年龄也不小了,还挑三拣四?然后就是巴拉巴拉一些话——下一条中的那些话。

Q:2 什么是默认登录shell,如何改变指定用户的登录shell

还要什么感觉啊?
几乎我们每个单身的人,都不将就自己。单身,是因为没有找到有感觉的人。而这一点也是那些结婚的、亲人、父母不理解的,结婚不是恋爱,你还要什么感觉啊?哪儿有那么多感觉啊?差不多就行了,只要两个人不讨厌,先结婚后恋爱,感情就是慢慢培养出来的……别老幻想什么感觉的爱情,你要现实!现实两个字真能打倒一切啊。

答:在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的。使用chsh命令可以改变默认的shell。示例如下所示:

有没有相亲(相体)啊?相了多少次亲?
只要长久单身,就一定不可避免要被父母逼着去相亲。这简直成了铁律,所以旁人知道你单身后一定会问,有没有去相亲呢?你相亲多少次,见了几个人?

# chsh <用户名> -s <新shell>  # chsh linuxtechi -s /bin/sh 

你为什么不想结婚啊?
如果你为自己申辩几句,比如你说不想结婚。那么遗弃小屋敢说,人家肯定接着问:你为什么不想结婚啊?男大当婚女大当嫁天经地义。为什么你想例外?难道你不想要后代?你家人不着急?你就不替父母想想?但凡结婚,已经不是我们个人的事儿了——这是繁衍生息光宗耀祖的大问题。

Q:3 可以在shell脚本中使用哪些类型的变量?

你该不会是同性恋吧?
单身久了,可能也会被人问到性取向的问题:你不会是同性恋吧?毕竟,多年来单身,似乎完全没有对异性的渴望,大家好生奇怪,正常人怎么对异性没感觉呢?难道是同性恋?

答:在shell脚本,我们可以使用两种类型的变量:

单身这么多年,你是怎么过来的?
这个还真是问题,至少遗弃小屋就碰到过别人问过这样的问题。单身多年,对于一个正常人来说,肯定不容易,那么你是怎么过来的?没有异性,没有爱情和婚姻,在生理欲望和个人情感支配下,你能憋得住?

  • 系统定义变量
  • 用户定义变量

你到底想找个什么样的?
相对而言这个是比较关心单身人的问题。也许别人(亲人)看你孤单又一直没对象,相亲不成,故而忍不住发问,你到底想找什么样的对象?也许你有答案也许你也在犹豫,也许这是我们很多单身人共同思考的问题吧。遗弃小屋原创。

最个性的单身,欢迎关注遗弃小屋。

系统变量是由系统系统自己创建的。这些变量通常由大写字母组成,可以通过“set”命令查看。

用户变量由系统用户来生成和定义,变量的值可以通过命令“echo $<变量名>”查看。

Q:4 如何将标准输出和错误输出同时重定向到同一位置?

答:这里有两个方法来实现:

方法一:

2>&1 (如# ls /usr/share/doc > out.txt 2>&1 )

方法二:

&> (如# ls /usr/share/doc &> out.txt )

Q:5 shell脚本中“if”语法如何嵌套?

答:基础语法如下:

if [ 条件 ]

then

命令1

命令2

…..

else

if [ 条件 ]

then

命令1

命令2

….

else

命令1

命令2

…..

fi

fi

Q:6 shell脚本中“$?”标记的用途是什么?

答:在写一个shell脚本时,如果你想要检查前一命令是否执行成功,在if条件中使用“$?”可以来检查前一命令的结束状态。简单的例子如下:

root@localhost:~# ls /usr/bin/shar /usr/bin/shar root@localhost:~# echo $? 0 

如果结束状态是0,说明前一个命令执行成功。

root@localhost:~# ls /usr/bin/share  ls: cannot access /usr/bin/share: No such file or directory  root@localhost:~# echo $?  2 

如果结束状态不是0,说明命令执行失败。

Q:7 在shell脚本中如何比较两个数字 ?

答:在if-then中使用测试命令( -gt 等)来比较两个数字,例子如下:

#!/bin/bash x=10 y=20 if [ $x -gt $y ] then echo “x is greater than y” else echo “y is greater than x” fi 

Q:8 shell脚本中break命令的作用 ?

答:break命令一个简单的用途是退出执行中的循环。我们可以在while和until循环中使用break命令跳出循环。

Q:9 shell脚本中continue命令的作用 ?

答:continue命令不同于break命令,它只跳出当前循环的迭代,而不是整个循环。continue命令很多时候是很有用的,例如错误发生,但我们依然希望继续执行大循环的时候。

Q:10 告诉我shell脚本中Case语句的语法 ?

答:基础语法如下:

case 变量 in

值1)

命令1

命令2

…..

最后命令

!!

值2)

命令1

命令2

……

最后命令

;;

esac

Q:11 shell脚本中while循环语法 ?

答:如同for循环,while循环只要条件成立就重复它的命令块。不同于for循环,while循环会不断迭代,直到它的条件不为真。基础语法:

while [ 条件 ]

do

命令…

done

Q:12 如何使脚本可执行 ?

答:使用chmod命令来使脚本可执行。例子如下:

# chmod a+x myscript.sh 

Q:13 “#!/bin/bash”的作用 ?

答:#!/bin/bash是shell脚本的第一行,称为释伴(shebang)行。这里#符号叫做hash,而! 叫做 bang。它的意思是命令通过 /bin/bash 来执行。

Q:14 shell脚本中for循环语法 ?

答:for循环的基础语法:

for 变量 in 循环列表

do

命令1

命令2

….

最后命令

done

Q:15 如何调试shell脚本 ?

答:使用'-x'参数(sh -x myscript.sh)可以调试shell脚本。另一个种方法是使用‘-nv’参数( sh -nv myscript.sh)。

Q:16 shell脚本如何比较字符串?

答:test命令可以用来比较字符串。测试命令会通过比较字符串中的每一个字符来比较。

Q:17 Bourne shell(bash) 中有哪些特殊的变量 ?

答:下面的表列出了Bourne shell为命令行设置的特殊变量。

内建变量 解释

$0 命令行中的脚本名字

$1 第一个命令行参数

$2 第二个命令行参数

….. …….

$9 第九个命令行参数

$# 命令行参数的数量

$* 所有命令行参数,以空格隔开

Q:18 在shell脚本中,如何测试文件 ?

答:test命令可以用来测试文件。基础用法如下表格:

Test 用法

-d 文件名 如果文件存在并且是目录,返回true

-e 文件名 如果文件存在,返回true

-f 文件名 如果文件存在并且是普通文件,返回true

-r 文件名 如果文件存在并可读,返回true

-s 文件名 如果文件存在并且不为空,返回true

-w 文件名 如果文件存在并可写,返回true

-x 文件名 如果文件存在并可执行,返回true

Q:19 在shell脚本中,如何写入注释 ?

答:注释可以用来描述一个脚本可以做什么和它是如何工作的。每一行注释以#开头。例子如下:

#!/bin/bash  # This is a command  echo “I am logged in as $USER” 

Q:20 如何让 shell 就脚本得到来自终端的输入?

答:read命令可以读取来自终端(使用键盘)的数据。read命令得到用户的输入并置于你给出的变量中。例子如下:

# vi /tmp/test.sh #!/bin/bash echo ‘Please enter your name’ read name echo “My Name is $name” # ./test.sh Please enter your name LinuxTechi My Name is LinuxTechi 

Q:21 如何取消变量或取消变量赋值 ?

答:“unset”命令用于取消变量或取消变量赋值。语法如下所示:

# unset <变量名>

Q:22 如何执行算术运算 ?

答:有两种方法来执行算术运算:

1.使用expr命令(# expr 5 + 2) 2.用一个美元符号和方括号($[ 表达式 ])例如:test=$[16 + 4] ; test=$[16 + 4]

Q:23 do-while语句的基本格式 ?

答:do-while语句类似于while语句,但检查条件语句之前先执行命令(LCTT 译注:意即至少执行一次。)。下面是用do-while语句的语法

do

{

命令

} while (条件)

Q:24 在shell脚本如何定义函数呢 ?

答:函数是拥有名字的代码块。当我们定义代码块,我们就可以在我们的脚本调用函数名字,该块就会被执行。示例如下所示:

$ diskusage () { df -h ; } 

译注:下面是我给的shell函数语法,原文没有

[ function ] 函数名 [()]

{

命令;

[return int;]

}

【编辑推荐】

本文由澳门太阳娱乐集团官网发布于脚本专栏,转载请注明出处:面试Linux运转一定会问到Shell脚本的那二十五个难

上一篇:参加Python培训要考虑哪些问题? 下一篇:太阳集团太阳娱乐登录java-小白求教arraylist难题
猜你喜欢
热门排行
精彩图文