海康威视测试笔试(2024.10.14)

  1. 0 or 2 and 3 and 4 or 6 and 0 or 3的值是多少?
  2. 运算符优先级:and 优先级 高于 or
  3. and: 两个值都为非零值,返回最后一个真值;有假值,返回第一个假值
  4. or:返回第一个真值
  5. 正交实验法
  6. 通过正交表安排实验组合。
  7. a={1,2,3} b={2,3,4},a-b :从集合中去除集合b中的元素。
  8. SQL中IFNOLL(K,0):检查K的值,如果K的值不为NULL,则返回其值;不然用0代替。
  9. random.uniform(a,b)的作用:随机生成一个大于等于a并且小于等于b的随机浮点数。
  10. Pairwise Testing两两组合测试:测试输入参数的所有可能的两两组合,可以减少测试用例数量、提高测试覆盖率、发现交互缺陷、高效测试策略。
  11. 指令寄存器的位数
  12. 共享设备:多个用户或进程请求设备,但同一时刻只有一个任务使用它们。
  13. a="hello”,b=b"hello” 互换:b表示字节串。
  14. a == b.decode('utf-8') 将字节串解码为字符串
  15. b == a.encode('utf-8') 将字符串转变为字节串
  16. 某网页用户登录,根据需求设计用户登录的测试点:1. 需要输入用户名和密码;2.用户名和密码只能输入小写英文字母和数字;3.用户名和密码最大长度不能超过16位 11. 描述如何测试手机或无线网卡设备在国内区域上网的场景(无线网卡:SIM卡)

编程题:

1.编写函数,输入2个有序列表,列表数据类型只有整数,不使用排序算法,输出合并后的有序列表。

思路:不用排序算法,只用一一对比

def merge_sorted_lists(list1, list2):
    merged_list = []
    i, j = 0, 0  # 初始化两个指针

    # 遍历两个列表,比较当前元素,按顺序添加到 merged_list
    while i < len(list1) and j < len(list2):
        if list1[i] < list2[j]:
            merged_list.append(list1[i])
            i += 1
        else:
            merged_list.append(list2[j])
            j += 1

    # 如果 list1 中还有剩余元素,添加到 merged_list
    while i < len(list1):
        merged_list.append(list1[i])
        i += 1

    # 如果 list2 中还有剩余元素,添加到 merged_list
    while j < len(list2):
        merged_list.append(list2[j])
        j += 1

    return merged_list

2.小明在爬楼梯,有N个台阶,每一次,小明可以爬1或者2个台阶,计算不同台阶的楼梯小明有多少种不同方式爬到顶部。

思路:求最大,动态规划。递归方法

  1. 最后到达第n个台阶的方法有从n-1阶跳1步,或者从n-2阶跳2步。得到方式数量的递推关系如下:
  2. 确定边界条件:
def climb_stairs(n):
    # 边界条件
    if n <= 0:
        print(0)
        return
    elif n == 1:
        print(1)
        return
    elif n == 2:
        print(2)
        return
    
    # 创建一个数组来存储每个台阶的方法数:到达每个台阶的方法数量
    ways = [0] * (n + 1) # 为什么是n+1?
    ways[1] = 1  # 1个台阶,第一个台阶,有1个方法
    ways[2] = 2  # 2个台阶,第二个台阶,有2个方法
    
    # 填充数组,从第3个台阶开始
    for i in range(3, n + 1): 
        ways[i] = ways[i - 1] + ways[i - 2]
    
    # 打印爬到楼梯顶部的方式数量
    print(ways[n])

def climb_stairs(n):
    if n <= 0:
        print(0)
        return
    elif n == 1:
        print(1)
        return
    elif n == 2:
        print(2)
        return
    
    # 用两个变量来保存前两个台阶的方法数
    prev1 = 1  # ways(1)
    prev2 = 2  # ways(2)

    # 从第3个台阶开始计算
    for i in range(3, n + 1):
        current = prev1 + prev2  # 当前台阶的方法数
        prev1 = prev2  # 更新 prev1 为 prev2
        prev2 = current  # 更新 prev2 为 current

    # 打印爬到楼梯顶部的方式数量
    print(prev2)

# 输入台阶数
n = int(input("请输入台阶数: "))
# 调用函数
climb_stairs(n)

全部评论
布尔表达式 对于布尔表达式 `0 or 2 and 3 and 4 or 6 and 0 or 3`,按照优先级计算: 1. `2 and 3 and 4` 结果是 `4`。 2. `6 and 0` 结果是 `0`。 3. 最后计算 `0 or 4 or 0 or 3`,结果是 `4`。 集合操作 集合 `a = {1,2,3}` 和 `b = {2,3,4}`,`a - b` 结果是 `{1}`,表示 `a` 中有而 `b` 中没有的元素。 SQL 函数 `IFNULL(K,0)` 在 SQL 中用于处理 `NULL` 值,如果 `K` 不是 `NULL`,则返回 `K`,否则返回 `0`。 Python 随机数生成 `random.uniform(a, b)` 生成一个在 `[a, b]` 区间内的随机浮点数。 字符串与字节串转换 - `a = "hello"` 是字符串。 - `b = b"hello"` 是字节串。 - `a == b.decode('utf-8')` 将字节串解码为字符串并比较。 - `b == a.encode('utf-8')` 将字符串编码为字节串并比较。 用户登录测试 确保用户名和密码只包含小写字母和数字,且长度不超过16位,可以使用正则表达式进行验证。 网络测试 测试手机或无线网卡设备在国内区域上网时,需要考虑网络类型、地理区域、设备兼容性和信号强度等因素。 合并有序列表 使用双指针技术合并两个有序列表,每次选择较小的元素加入新列表,直到一个列表遍历完毕,然后将另一个列表剩余部分追加。 爬楼梯问题 使用动态规划解决爬楼梯问题,定义 `ways[i]` 表示到达第 `i` 个台阶的方法数量,递推公式为 `ways[i] = ways[i - 1] + ways[i - 2]`,初始化 `ways[0] = 1`, `ways[1] = 1`。
点赞 回复 分享
发布于 10-15 12:15 广东

相关推荐

3 16 评论
分享
牛客网
牛客企业服务