游戏测试 想问下前辈们社招面试还会手撕算法吗

一名游测QA · 2025年04月08日 · 最后由 caleb 回复于 2025年04月11日 · 4355 次阅读

去年校招面试的时候刷了 100 来道,现在工作了大半年全忘了...

共收到 20 条回复 时间 点赞

小公司:一道简单、一道中等,一道接雨水

手撕?现在恨不得让你现场人肉编译😂

大肠好像都会

4楼 已删除

看情况 中大厂可能会 一般小公司不会

大厂要
中小公司看面试官是不是一个装杯的人,有些就那么点工资,公司是不要求的,但是面试官自己想

我最近面试的经验
字节 美团 在线手撕,美团还要求最优解
阿里,一面会后发链接手撕提交,二面没要求,三面忘记了
中小厂几乎不用

🐭 大厂待遇好点,就算是进去前造火箭要求也不是很过分,二线可能也有,3 线就得看面试官是哪里出来了

字节 100% 要求在线手撕,难度看面试官偏好,我们组的实习生当时校招一面就直接接雨水……(给我整无语了,我很反感没有意义的难题,无非就是背题)。

昨天面了个偏中大厂的吧,要求在线手撕阿拉伯数字转罗马数字,当场放弃;算法题太难了,后来看了下 leetcode 中等难得,没刷过的题遇到都没思路😂 目前的思路只能疯狂刷题🤔

王稀饭 回复

背题属于服从性测试了😂

Infinity 回复

顶不住

# 字节外包技术一面:
leecode 简单:两数之和【双指针,做出来了,依旧没有进二面】

# 同样是字节,下面是外包公司先考察,做过了才能推简历到字节一二面,3 选 1【做出来了,没约面通知】
1.编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串示例 1:flower,flow,flight
2.7 个数字 [1 15 35 55 65 85 99] 找出 2 个数相加等于 100,有几组。
3.不重复的使用四个数字:1、8、0、3,能组成多少个互不相同的三位数

感慨这就是字节 od 吗?😢 这年头大厂外包也不好进了

游戏测试有推荐吗?

仙道彰 回复

以下是对这三个问题的解答:

问题 1:最长公共前缀

def longest_common_prefix(strs):
    if not strs:
        return ""

    # 按照字典序对字符串数组进行排序
    strs.sort()

    # 只需比较第一个字符串和最后一个字符串的公共前缀
    first_str = strs[0]
    last_str = strs[-1]

    common_prefix = []
    for i in range(min(len(first_str), len(last_str))):
        if first_str[i] == last_str[i]:
            common_prefix.append(first_str[i])
        else:
            break

    return "".join(common_prefix)

# 测试示例
strs = ["flower", "flow", "flight"]
print(longest_common_prefix(strs))  # 输出:fl

问题 2:找出和为 100 的数字对

def count_pairs_with_sum(numbers, target_sum):
    count = 0
    seen = set()

    for num in numbers:
        complement = target_sum - num
        if complement in seen:
            count += 1
        seen.add(num)

    return count

# 测试示例
numbers = [1, 15, 35, 55, 65, 85, 99]
target_sum = 100
print(count_pairs_with_sum(numbers, target_sum))  # 输出:2

问题 3:不重复的三位数

import itertools

def count_unique_three_digit_numbers(digits):
    # 使用排列生成所有可能的三位数
    permutations = itertools.permutations(digits, 3)
    unique_numbers = set()

    for perm in permutations:
        # 将排列的数字拼接成三位数
        number = int("".join(map(str, perm)))
        unique_numbers.add(number)

    return len(unique_numbers)

# 测试示例
digits = [1, 8, 0, 3]
print(count_unique_three_digit_numbers(digits))  # 输出:18

如果你对这些问题感到没有思路,这很正常,尤其是在面对算法问题或者编程问题时。这些问题需要一定的逻辑思维和对编程语言的熟悉度。以下是一些可能的原因和建议,希望能帮助你更好地理解和解决这些问题:

1. 基础知识不够扎实

  • 问题:如果你对编程语言的基本语法、数据结构(如数组、列表、集合等)或者常见算法(如排序、查找等)不够熟悉,可能会感到无从下手。
  • 建议
    • 复习基础知识:花时间复习编程语言的基本语法和常用数据结构。例如,Python 的列表操作、集合的特性等。
    • 学习常见算法:了解一些常见的算法,如排序算法(快速排序、冒泡排序等)、查找算法(二分查找等)。

2. 缺乏解题思路

  • 问题:面对问题时,不知道从哪里开始,或者不知道如何将问题分解成更小的部分。
  • 建议
    • 分解问题:将问题分解成更小的子问题。例如,对于 “最长公共前缀” 问题,可以先考虑如何比较两个字符串的公共前缀,然后再扩展到多个字符串。
    • 逐步思考:不要急于写出完整的代码,先在纸上或脑海中逐步思考每一步的逻辑。例如,对于 “和为 100 的数字对” 问题,可以先思考如何找到一个数字的补数,然后再考虑如何避免重复计算。
    • 多做练习:通过大量的练习来积累解题思路。可以从简单的题目开始,逐步提高难度。

3. 缺乏信心

  • 问题:有时候,缺乏信心会导致你在面对问题时感到无从下手。
  • 建议
    • 从小问题入手:先解决一些简单的、类似的小问题,逐步建立信心。
    • 不要害怕犯错:犯错是学习过程中的一部分。即使你的第一种方法不正确,也不要气馁,尝试另一种方法。

4. 缺乏实践

  • 问题:理论知识和实际操作之间存在差距。如果你没有足够的实践,可能会感到难以将理论应用到实际问题中。
  • 建议
    • 多写代码:通过实际编写代码来加深对问题的理解。可以从简单的代码片段开始,逐步扩展到完整的程序。
    • 参加编程竞赛或练习平台:例如 LeetCode、Codeforces 等平台,提供大量不同难度的编程题目,可以帮助你提高解题能力。

5. 缺乏系统的学习方法

  • 问题:如果没有一个系统的学习方法,可能会感到学习效率低下,难以掌握知识。
  • 建议
    • 制定学习计划:根据自己的时间安排,制定一个合理的学习计划,逐步学习基础知识和解题技巧。
    • 总结和回顾:在学习过程中,及时总结和回顾所学的知识和解题方法,避免遗忘。

具体问题的逐步思考方法

问题 1:最长公共前缀

  1. 理解问题:你需要找到一个字符串数组中所有字符串的最长公共前缀。
  2. 分解问题
    • 先考虑如何找到两个字符串的公共前缀。
    • 再考虑如何将这个方法扩展到多个字符串。
  3. 逐步实现
    • 从第一个字符串开始,逐个字符比较,直到找到一个不匹配的字符。
    • 将这个公共前缀与下一个字符串进行比较,重复上述步骤。
    • 如果在某个步骤中公共前缀为空,则直接返回空字符串。

问题 2:和为 100 的数字对

  1. 理解问题:你需要找到数组中所有和为 100 的数字对。
  2. 分解问题
    • 先考虑如何找到一个数字的补数(即target_sum - num)。
    • 再考虑如何避免重复计算。
  3. 逐步实现
    • 使用一个集合来存储已经遍历过的数字。
    • 对于每个数字,检查它的补数是否在集合中。
    • 如果在集合中,则找到一个符合条件的数字对。

问题 3:不重复的三位数

  1. 理解问题:你需要用给定的数字组成所有可能的互不相同的三位数。
  2. 分解问题
    • 先考虑如何生成所有可能的三位数。
    • 再考虑如何避免重复。
  3. 逐步实现
    • 使用排列的方法生成所有可能的三位数。
    • 将生成的三位数存储到一个集合中,自动去重。

总结

  • 基础知识:复习编程语言和数据结构。
  • 解题思路:分解问题,逐步思考。
  • 实践:多写代码,多做练习。
  • 信心:从小问题入手,不要害怕犯错。
  • 系统学习:制定学习计划,总结和回顾。
大海 回复

问题 3 没有排除百位为 0 的情况

看你 ID 大致说下,游戏测试的话,看你面什么岗位:测开会,业务 QA 大部分(90%)公司都不 coding。

仙道彰 回复

啊?干个外包都这么卷吗?还我现场面试给我来这些我都不好说我能第一时间想到最优解 😅

王稀饭 回复

你的回复跟我腾讯前领导一模一样😂 ,为啥面个外包还要考力扣简单系,应聘岗位 jd 如下,13-16k:
## 深圳 Flow 风控测试

职位要求:
1.熟悉 Linux 平台下常用命令,服务部署,软件安装
2.参与产品需求和测试用例设计及评审,理解产品特点,提出有效的测试建议;
3.与研发、产品等岗位的同学沟通对接需求测试细节;
4.针对需求执行测试用例,积极推进缺陷修复,对结果负责;
5.能独立搭建测试自动化环境 ,编写自动化用例;

面试官要求:
自动化能力:熟练使用 pytest 编写用例(包括配置下发,业务功能验证,通用功能封装等),且具备 python 编码能力
项目经验:对负载均衡业务有了解,了解 TCP/HTTP/HTTPS 协议,熟练掌握相关业务和协议的测试方法和测试工具(比如 curl/wrk/tcpdump 等),对 Web 应用防火墙产品有使用和了解的最佳。

王稀饭 回复

是测试嘛 测试现在需要考 high 等级的了嘛

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册