2021 金三银四 - 我们遇到的那些面试题 (2) - python 语言篇

前言

最近收到了很多自动化学员反馈的面试题 。。

有主观题 ,有功能测试题,有 python 编程题 ,有自动化测试题,有数据库题,Linux 等。。

为了让我们的学员可以更好的去准备面试,我们专门在腾讯课堂,3 小时以上的直播讲解面试

本文作为课堂部分内容,将面试题以及部分参考答案开放出来。。

柠檬班自动化 VIP 学员,需要老师面试直播视频的,可以找你的班主任领取哦!

再次说明:以下所有面试题,均来自柠檬班 VIP 学员的反馈!

也希望正在面试,或者即将面试的柠檬班学员们,可以将你们的面试题和你的答案一并整理,分享给老师或者班主任!

一定要有答案哦!因为从答案里才能找到问题,帮你纠正回答方式呀。


自动化测试面试题 - python 语言篇

1、python 面试题

序号 面试题
1 python 常用到的库 和 常遇到的异常
2 python 当中如何操作数据库?
3 工作中使用 python 去做过哪些事情?为什么要使用?
4 简述 Python 的可变类型和不可变类型?
5 python 为什么使用*args 和**kwargs
6 python 中的 __new____init__ 方法的作用是什么?
7 单元测试框架的断言方式?
8 装饰器 - 知道它是什么?
9 深浅拷贝、垃圾回收?

在面试自动化岗位的过程中,必须有问题,是关于编程的。

第 1 题和第 3 题:

python 常用到的库 和 常遇到的异常?

工作中使用 python 去做过哪些事情?为什么要使用?

面试官主要是想了解:

  1. 你对 python 的熟练度和应用度如何。

比如做接口自动化测试的同学,就可以很快的列出常用的库:openpyxl,pymysql,unittest,pytest,allure,os,loggging.......

在工作当中,可以用 python 来做自动化测试,也可以写些脚本来改善工作效率。

其它的问题,都是基于以上这个应用来,来考察细节上的问题。

当然还有一些就是面试爱问,但是自动化的工作中用到的极少,甚至没有。


2、编程思维题

序号 面试题
1 请获取列表中重复元素最多的元素,以及重复的次数 例子 1: 参数 ['a', 'b', 'a', 'b', 'c', 'd', '1', 'd', '2'] 结果: 重复最多的是:['d', 'a', 'b'],重复个数:2 例子 2: 参数 ['a','a','a', 'b', 'a', 'b', 'c', 'd', '1', 'd', '2'] 结果:重复最多的是:['a'],重复个数:4
2 python -- 对 list 去重并找出列表 list 中的重复元素
3 python 统计字符串中指定字符出现次数的方法
4 统计列表(list)中每个元素出现的次数
5 列表推导式求列表所有奇数并构造新列表 a = [1,2,3,4,5,6,7,8,9,10]
6 用 python 写个冒泡排序 a = [1, 3, 10, 9, 21, 35, 4, 6]
7 已知一个数列:1、1、2、3、5、8、13、。。。。的规律为从 3 开始的每一项都 等于其前两项的和,这是斐波那契数列。 求满足规律的 100 以内的所以数据
8 幂的递归 计算 x 的 n 次方,如:3 的 4 次方 为 333*3=81
9 给定字符串,找出有重复的字符串,并输出其位置 。输入: abcaaXY12ab12 输出: a, 1; a, 4; a, 5; a, 10; b, 2; b, 11; 1, 8; 1, 12; 2, 9; 2, 13

这一部分,大概率都是出现在笔记题上。

主要考察的是:编程思维和实现。

从 0 入门编程的都感受过,问题的基本实现思路有,但是不会转化成代码。

需要一定时间的慢慢积累,才开始具备利用编程解决问题的能力。


参考答案:

  1. 请获取列表中重复元素最多的元素,以及重复的次数

例子 1:参数 ['a', 'b', 'a', 'b', 'c', 'd', '1', 'd', '2'] 结果: 重复最多的是:['d', 'a', 'b'],重复个数:2

例子 2:参数 ['a','a','a', 'b', 'a', 'b', 'c', 'd', '1', 'd', '2'] 结果:重复最多的是:['a'],重复个数:4

def func(data):
    # 重复最多的次数
    mv = max([data.count(i) for i in set(data)])
    # 获取重复最多的元素
    ns = [k for k in set(data) if data.count(k) == mv]
    print("重复最多的是:{},重复个数:{}".format(ns, mv))

if __name__ == '__main__':
    data = ['a', 'b', 'a', 'b', 'c', 'd', '1', 'd', '2']
    func(data)
  1. python -- 对 list 去重并找出列表 list 中的重复元素
from collections import Counter #引入Counter
a = [1, 2, 3, 3, 4, 4]
b = dict(Counter(a))
print(b)
print ([key for key,value in b.items() if value > 1]) #只展示重复元素
print ({key:value for key,value in b.items() if value > 1}) #展现重复元素和重复次数
  1. python 统计字符串中指定字符出现次数的方法
s = "Count, the number of spaces."
print(s.count(" "))
x = "I like to program in Python"
print(x.count("i"))
  1. 统计列表(list)中每个元素出现的次数
lista = [1, 2, 3, 4, 12, 22, 15, 44, 3, 4, 4, 4, 7, 7, 44, 77, 100]

new_dict = {}
for item in lista:
    if item not in new_dict.keys():
        new_dict[item] = lista.count(item)

print(new_dict)
  1. 列表推导式求列表所有奇数并构造新列表 a = [1,2,3,4,5,6,7,8,9,10]
a = [1,2,3,4,5,6,7,8,9,10]
b = [i for i in a if i % 2 != 0]
print(b)
# 执行结果为[1, 3, 5, 7, 9]
  1. 用 python 写个冒泡排序 a = [1, 3, 10, 9, 21, 35, 4, 6]
# 用 python 写个冒泡排序
a = [1, 3, 10, 9, 21, 35, 4, 6]

for _ in range(1,len(a)):
    for i in range(0,len(a)-j):
        # 前一位数 > 后一位数。交换位置。
        if a[i] > a[i+1]:
            a[i],a[i+1] = a[i+1],a[i]

print(a)

相关文章: 手写算法题之冒泡排序 (优化版)

  1. 已知一个数列:1、1、2、3、5、8、13、。。。。的规律为从 3 开始的每一项都 等于其前两项的和,这是斐波那契数列。
求满足规律的 100 以内的所有数据
# 递归求和
def func(n):
    if n == 1 or n == 2:
        return 1
    else:
        return func(n-1) + func(n-2)

# 处理
def get_all_numbs():
    datas = []
    max_value = 0
    count = 1
    while max_value < 100:
        max_value = func(count)
        if max_value >= 100:
            break
        datas.append(max_value)
        count += 1
    return datas

print(get_all_numbs())
# 结果为[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
  1. 幂的递归 计算 x 的 n 次方,如:3 的 4 次方 为 333*3=81
# 递归的方式
def mi(x, n):
    if n == 0:
        return 1
    else:
        return x*mi(x, n-1)
print(mi(3, 4))

# 非递归的方式:
def mix(x,n):
    result = 1
    for count in range(n):
        result *= x
    return result

print(mi(3,4))
  1. 给定字符串,找出有重复的字符串,并输出其位置 。
输入: abcaaXY12ab12 输出: a, 1; a, 4; a, 5; a, 10; b, 2; b, 11; 1, 8; 1, 12; 2, 9; 2, 13
def find_repeat_char(s):
    data = {}
    for index, char in enumerate(s):
        temp = data.get(char, [])
        temp.append('{}, {}'.format(char, index+1))
        data[char] = temp
    print(data)
    res = []
    for value in data.values():
        if len(value) > 1:
            res.extend(value)
    return '; '.join(res)

print(find_repeat_char('abcaaXY12ab12'))
1 回帖
请输入回帖内容 ...