前面的文章中,聊质量内建测试平台化工程比较多,最近同学找我聊天,因为各种原因被裁了,在不多的面试机会中很多人又挂了,其中一个点是编程这块没自信,甚至面试官刚出题,一些同学就是直接说能不能跳过,所以今天这篇就面向初中级测试,聊聊面试中,关于Python的考点喜欢问什么?
前言:
不要去杠编程在你的测试工作中用不到,如果你总是相信这一点而不去学习代码,最终会让你没有工作,这只是时间问题;说的更直白一点,允许你工作用不到,但不允许你不会,行不?
测试面试中Python考察什么?
大家对面试中手撸算法多少是有些忌惮的;关于算法我认为可以分为两种,第一类是关注于数学逻辑的,比如红黑树、二叉树等;第二种更倾向于语法的考察,python中比如装饰器,比如单词中字母的数量统计,反转之类,还有些简单的排序,而对于一般业务测试来说,语法的考察往往是重点。
我喜欢问什么?
面试过很多候选人,现在基本上简历上都会写熟悉Python,如果你写了,我一般都会问,当然简历里看不出来你会编程我一般不会约面试,可能有一些人会问:难道测试最重要的是编程吗?不是最重要,但要你有种这个基本能力,我需要你即插即用的完成一些工具或者脚本,如果你不具备这方面能力,我会怀疑你的学习能力和知识平移能力不够,而面对海量的简历,hr往往会看学历去筛选,作为技术面试官,我看编程能力,很正常,大家时间都宝贵,往往都会用性价比最高的方式工作。
对于业务测试工程师来说我不会去考一些复杂的算法,意义不大,我更倾向于你对Python语法的熟悉程度,往往一些相对简单的题目我会更看重你实现的简洁程度。
举个例子,比如让你定义一个列表,顺序产生10个数字,下面两种实现方式,看后高下立判了吧,列表推导式无疑是加分的
第一种
numbers = []for number in range(10): numbers.append(number)print(numbers)
第二种
numbers = [number for number in range(10)]print(numbers)
上面就是一个简单的例子,这就是一个语言熟练程度问题,面试中不会直接这么问,一般的考题我举几个例子:
列表解析:打印20以内的偶数
numbers = [number for number in range(20) if number % 2 == 0]print(numbers)[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
如用一行代码生成[1,4,9,16,25,36,49,64,81,100]
[x * x for x in range(1,11)]
集合解析式,它基本与列表解析式相同。不同之处在于集合解析式不包含重复项。可以通过使用花括号取代方括号来创建集合解析式:
string = "cctester"unique_string = {letter for letter in string}print(unique_string){'c', 'r', 't', 'e', 's'}
关于为何这么输出不用解释吧?衍生题目是去掉列表中的重复元素
a = list(set(a))
字典解析式:
string = "i am cctester"word_order = {el: ind+1 for ind, el in enumerate(string.split())}print(word_order){'i': 1, 'am': 2, 'cctester': 3}
字典考题衍生:统计字母出现的次数;
def count_str(str): dic={} for i in str: dic[i]=str.count(i,0) return dic
今天就聊这些,如果我招一个业务测试上述都比较熟练,代码基本功是通过的,而这些在面试当中,并不是拼智商,其实就在于平时有没有用过,有没有真正去理解,写这篇文章也不在于给你面试突击,可以测试一下Python基本技能,编程还是需要基本功和时间的。后续大家还想聊什么,可以留言。