python开发工程师面试题-测试工程师的一些面试题目(python)和总结

(一)说明

1、记录自己面试测试工程师时遇到的一些编程题(python)。

2、回顾下面试的过程,做个总结。

(二)题目

1、输入:JSON{"a":"aa","b":"bb","c":{"d":"dd","e":"ee"}} 输出:字典 {"a": "aa", "b": "bb", "d": "dd", "e": "ee"}

1 defconversion(n,the_dict):2 for key,value inn.items():3 #如果value的值是字典,递归

4 ifisinstance(value, dict):5 conversion(value,the_dict)6 else:7 the_dict[key] =value8 returnthe_dict9 #实际上JSON对象应该要先用 json.loads(r)解码,转换为python的字典

10 #但是这里如果这样直接输入这种格式的数据,会默认为字典对象,就不解码了

11 r = {"a":"aa","b":"bb","c":{"d":"dd","e":"ee"}}12

13 the_dict =dict()14 print(conversion(r,the_dict))

2、计算n!,例如n=3(计算3*2*1=6)

1 deffactorial(n):2 if n == 1:3 return 1

4 return n*factorial(n-1)5

6 print(factorial(5))

3、字符串分割,将列表数据合并为字符串。获取字典的key和value值

1 the_str = "12,33,44"

2

3 #分割字符串,返回的是一个列表

4 the_list = the_str.split(",")5 print(the_list)6

7 #将列表合并为字符串,","可以指定不同元素之间的分隔符

8 print(",".join(the_list))

1 the_dict = {"a": "aa", "b": "bb", "d": "dd", "e": "ee"}2

3 #迭代字典的key值和value值

4 for key,value inthe_dict.items():5 print(key)6 print(value)7 #迭代字典的key值

8 for key1 inthe_dict.keys():9 print(key1)10

11 #迭代字典的value值

12 for value1 inthe_dict.values():13 print(value1)

4、有一个列表,每个元素存放学生姓名、成绩,按学生成绩从优到差排序。

因为没限制用什么排序算法,所以我是用选择排序去实现的

1 defstudent_achie(A):2 for i inrange(len(A)):3 key =i4 for j in range(i+1,len(A)):5 if A[key].split(":")[1] < A[j].split(":")[1]:6 key =j7 A[key],A[i] =A[i],A[key]8 returnA9

10 #学生姓名及学生成绩

11 stu = ["张三:20","李四:70","王五:88","李六:40","王吉:55.5",]12

13 print(student_achie(stu))

5、有一个列表,每个元素存放学生姓名、成绩,计算学生的总成绩。

1 #计算学生总成绩

2 deftotal_achie(A):3 if len(A) == 1:4 return float(A[0].split(":")[1])5 return float(A.pop().split(":")[1]) +total_achie(A)6 #学生姓名及学生成绩

7 stu = ["张三:20","李四:70","王五:88","李六:40","王吉:55.5",]8

9 print(total_achie(stu))

6、实现斐波那契数列(第一项和第二项都是1,后面的都是前面2项相加),并打印前10项

1 deffibonacci(n):2 the_list =[]3 for i inrange(n):4 if i ==0:5 the_list.append(1)6 elif i == 1:7 the_list.append(1)8 else:9 the_list.append(the_list[i-1] + the_list[i-2])10 returnthe_list11 #输出[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

12 print(fibonacci(10))

7、算法性能主要受哪些因素影响?(我先回答了空间复杂度和时间复杂度),然后他问对算法的稳定性有了解吗

当时我只回了受空间复杂度和时间复杂度影响。稳定性不了解。算法我还没学到性能分析这一块,短时间内应该也还没打算在上面花时间,所以这题没答案,先记着,等有空了再研究下。

8、id ="info" 的div的xpath表达式

//div[@id="info"]

9、还有一些sql题目和基础的理论知识就不说了,不会太难(别问一些比较偏门或我平时基本用不上的知识点应该没什么问题),sql基本就到多表关联查询。(面试前复习下join on 、group by、order by、having的用法基本就够用了,有的可能需要转格式to_data() to_char(),因为最近大半年比较少写sql,不复习下很容易犯一些低级错误)

10、还有一个Oracle的递归查询没写出来,这个确实得好好研究下。

11、还有其他问了一些selenium的元素定位那些,没有问太难的。

(三)总结

第一个,面试感觉自己在梦游,根本没有发挥出应有的水平,一些会的也没在自我介绍和对话中体现出来(还有一个很简单的题目竟然没写出来)。现在想想主要是:

1、没有认真的做好准备,没有去复习一些基础知识,刚离职心态还没调整过来(刚来深圳找房子、找工作说实话有点累,状态一般),态度不够端正。

2、平时写代码、sql一般都是有大概思路就直接写,写完后测试下行不行,哪里有问题就调试修改下,什么函数/方法不懂或忘记了,百度或谷歌查查资料(除了一些比较难的,基本是看下就懂了)。但是面试的时候,直接在纸上写,这时候感觉离开了IDE和网络确实很不习惯。

后面认真复习下基础知识,2次面试后,成功拿到offer。第二次面试python的编程笔试和面试题应该基本正确(可能有点小问题),没过的原因感觉主要是他们想招一个熟悉Android自动化的,并且要负责维护他们的自动化测试框架、给别人解答他们自动化测试框架的一些问题,熟练使用Linux、adb命令,查看、分析日志等等,这工作我暂时确实没法胜任。

总结:

1、自我介绍、谈谈自身的优势、对加班的看法(发现这3个问题好像基本都有)不是口才特别好的话,最好先在纸上写一个版本,面试的时候不用临时组织语言。

2、不要太看重面试,放松心态,就把这当成和朋友间的一次谈话,你会发现你会表现得更好。表现出自己的正常水平就行了,这样面试不过也是好事,因为确实代表你没能力胜任这项工作。

3、面试前复习下一些基础知识,把一些比较常见的编程题、最常用的一些方法在纸上写一遍。

4、其他或许该想想怎么避免谈到自己不擅长的知识点,将谈话的重点拉到自己擅长的技术上来。

5、感觉编程的题目一般不会太难,一般都是考一些基础,然后根据你的简历问一些问题。(但是很尴尬的却是,第一次时用IDE几分钟可以敲出来的代码,在纸上偏偏写不出来,这种情况一般都是一些关键又很简单的函数/方法忘记了)所以面试前,最好花一些时间复习一下(基本的数据类型整型、浮点数、字符串、列表、字典、集合和一些常用的函数/方法等)。

原文地址:https://www.cnblogs.com/simple-free/p/9404125.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值