软件测试面试中手撕代码应该准备哪些题?

一定要手写,最好用笔写,一定要记住不行就背住,面试不会给你时间慢慢想。

多种解法可搜索ai  ,学习一定得利用ai,非常的强大

1.输出数组中第二大的数字
题目要求:输出数组中第二大的数字,如果有重复则保留所有重复值。如果不存在第二大数字,则返回空列表。
def second_largest(nums):
    if len(nums) < 2:
        return []
    max_nums = max(nums)
    # 移除max值  
    del_num = [num for num in nums if num != max_nums]
    second_num = max(del_num)
    

# 测试用例
print(second_largest([2,4,3]))  #[3]
2.无重复字符的最长子串
题目要求:找到字符串中无重复字符的最长子串。
def length_of_longest_str(s):
    char_index = {}  
    max_length = 0    # 记录最长子串长度
    
   for i, char in enumerate(s):
        if char in char_index and char_index[char]>= max_length:
            max_length= char_index[char] +1
        char_index[char]=i
        max_length = max(max_length, i - start +1)
   return max_length

#测试用例
print(length_of_longest_str("abcabcbb")) #3
3.查找字符串数组中的最长公共前缀
题目要求:查找字符串数组中的最长公共前缀。
def longest_common_prefix(strs):
    if not strs:
        return ""  # 如果字符串数组为空,返回空字符串

    # 找到最短的字符串
    shortest_str = min(strs, key=len)
    
    # 遍历最短字符串的每个字符
    for i in range(len(shortest_str)):
        # 获取当前字符
        char = shortest_str[i]
        
        # 检查所有字符串在相同位置的字符是否相同
        for other_str in strs:
            if other_str[i] != char:
                # 如果发现不同,返回当前已匹配的公共前缀
                return shortest_str[:i]
    
    # 如果最短字符串的所有字符都匹配,返回最短字符串
    return shortest_str

# 测试用例
print(longest_common_prefix(["flower", "flow", "flight"]))  # "fl"
print(longest_common_prefix(["dog", "racecar", "car"]))     # ""
print(longest_common_prefix(["interspecies", "interstellar", "interstate"]))  # "inters"
print(longest_common_prefix(["classroom", "class", "clash"]))  # "clas"
print(longest_common_prefix(["a"]))  # "a"
print(longest_common_prefix([""]))  # ""
print(longest_common_prefix([]))  # ""
4.给你一个列表,列表里有张三@qq.com,李四@qq.com,王老六@qq.com,我需
要提取这个列表里的所有用户名

例如张三,李四,王老六,并以列表的形式返回给我,这个怎么实现?

字符串切割
#定义电子邮件列表
emails =["张三@qq.com","李四@qq.com","王老六@qq.com"]
# 初始化一个空列表来存储用户名
usernames =[]


#遍历电子邮件列表
for email in emails:
    # 使用split()方法以'@'为分隔符分割字符串,并取第一部分作为用户名
    username = email.split('@')[0]
    #将用户名添加到用户名列表中
    usernames.append(username)
#输出用户名列表
print(usernames)


#还可使用字符串的取消字符的方法
for email in emails :
    name=email.strip("@qq.com")
    usernames.append(name)
print(usernames)

5.面试官:字符串操作将"I am employee"反转成"employee am I"有几种代码实现方式?
#切片
original = "I am employee"
reversed = original.split()[::-1]# 分割字符串,反转列表,再合并回字符串
print(reversed)
6.斐波那契数列是一个每个数字都是前两个数字之和的序列,通常定义为F(0) = 0,F(1)=1,
F(n) = F(n-1) + F(n-2) 对于n> 1。求F (n)。
一.递归方法:
这是最直接的方法,但效率较低,因为它会重复计算很多次相同的值。
def fibonacci_recursive(n):
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fibonacci_recursive(n-1)+ fibonacci_recursive(n-2)
print(fibonacci_recursive(10))# 输出第10个斐波那契数


二.动态规划方法:
使用一个列表来存储已经计算过的斐波那契数,避免重复计算。
def fibonacci_dp(n):
    if n<=0:
        return 0
    fib= [0, 1]
    for i in range(2,n+1):
        fib.append(fib[i-1] + fib[i-2])
    return fib[n]
print(fibonacci_dp(10))# 输出第10个斐波那契数

三.迭代方法:
通过迭代的方式,逐个计算斐波那契数列的值。
def fibonacci_iterative(n):
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    a, b = 0, 1
    for _ in range(2,n + 1):
        a, b = b, a + b
    return b
print(fibonacci_iterative(10))# 输出第10个斐波那契数
7.python冒泡排序
 
def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0,n-i-1):
           if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr
arr = [64, 34, 25, 12,22, 11,90]
sorted_arr = bubble_sort(arr)
print(sorted_arr)
 8.编写一个程序,找出一个列表中的最大值。
def find_max(numbers):
    max_num = numbers[0]
    for num in numbers:
        if num > max_num:
            max_num = num
    return max_num
print(find_max([3, 7, 2, 9, 5]))# 输出: 9
9.编写一个程序,计算一个列表中所有元素的和。
def calculate_sum(numbers):
    total = 0
    for num in numbers:
        total += num
    return total
print(calculate_sum([1, 2, 3, 4, 5])) # 输出:15
10.编写一个程序,判断一个字符串是否为回文字符串(正读和反读都一样)。
 
def is_palindrome(string):
    reversed_string = string[::-1]
    if string = = reversed_string:
        return True
    else:
        return False
print(is_palindrome("level")) # 输出:True
print(is_palindrome("hello")) # 输出:False
11.编写一个程序,统计一个字符串中每个字符出现的次数。
def count_characters(string):
    char_count = {}
    for char in string:
        if char in char_count:
            char_count[char]+=1
        else:
            char_count[char] = 1
    return char_count
print(count_characters("hello")) # 输出: {"h': 1, 'e': 1, 'T': 2, 'o': 1}
12.编写一个程序,找出一个列表中的所有偶数。
 
def find_even(numbers):
    even_numbers =[]
    for num in numbers:
        if num % 2 == 0:
            even_numbers.append(num)
    return even_numbers
print(find_even([1, 2, 3, 4, 5, 6])) # 输出:[2, 4, 6]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟学识

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值