厉害了,AI 防作弊又出了新花招
直接在面试官提问的时候,就把语音转成了文字,基本上对方问完,然后候选人来几个无关重要的问题确认(例如:是在 XX 场景下发生的,是吗),或者干脆说一些通用前置回答(例如:好的,面试官,针对你提出的这个问题,我认为...),AI 那边就已经出来答案了,接着念就行了。后来,面试官摸到规律了,对于那些提问后,会稍有停顿(打字中),之后又很流畅回答出来一大段内容的,大概率是找了 AI 帮手。而最近这个"A
防作弊新花招
最近 AI 面试相关的话题又火了,原因是又出现了新的"AI 防作弊新花招"。
在生成式 AI 还没有盛行的时候,互联网的线上面试是占大多数,理由很简单,就是高效。
电话技术面,随时进行,要是发现候选人基础不行,能及时挂断,不用考虑对方长途跋涉过来,面试时间过短的问题。
但生成式 AI 出来之后,线上面试成了难点,面试官一个问题过去,对方能够迅速从 AI 那里获得答案,然后全文朗读。
后来,面试官摸到规律了,对于那些提问后,会稍有停顿(打字中),之后又很流畅回答出来一大段内容的,大概率是找了 AI 帮手。
再后来,AI 升级了,支持多模态了。
直接在面试官提问的时候,就把语音转成了文字,基本上对方问完,然后候选人来几个无关重要的问题确认(例如:是在 XX 场景下发生的,是吗),或者干脆说一些通用前置回答(例如:好的,面试官,针对你提出的这个问题,我认为...),AI 那边就已经出来答案了,接着念就行了。
这时候单纯根据候选人反应时间,已经无法区分那边是否有使用 AI 作弊了。
之后大厂的应对的策略很简单,就是大面积减少线上技术面的比例,改为线下。
但终归有一部分线上是无法改为线上的。
比如那些就是明明就在隔壁街的咖啡厅,但硬要说自己在老家,在外地,然后这个岗位又要得很急,公司难道不给面试机会吗?
又或者是校招补录,候选人都还在学校所在地呢,总不能让没有经济收入的学生,跨城市来现场面试。
这些情况,就成了"AI 面试作弊"的盲区。
而最近这个"AI 防作弊"的话题翻热,正是因为线上面试,找到了和「转为线下」一样的,用"物理打败魔法"的新花招。
这个花招就是:开视频面试,然后闭眼回答问题。
不得不说,有些攻防,还是越朴实无华越精彩 /狗头
如果你是候选人,对方要求你视频面试,闭眼回答,你会有什么顾虑?会同意这种面试模式吗?欢迎评论区交流。
...
回归主题。
来一道和「字节跳动」相关的算法题。
题目描述
平台:LeetCode
题号:791
给定两个字符串 order
和 s
。
order
的所有单词都是唯一的,并且以前按照一些自定义的顺序排序。
对 s
的字符进行置换,使其与排序的 order
相匹配。
更具体地说,如果在 order
中的字符 x
出现字符 y
之前,那么在排列后的字符串中, x
也应该出现在 y
之前。
返回满足这个性质的 s
的任意排列。
示例 1:
输入: order = "cba", s = "abcd"
输出: "cbad"
解释:
“a”、“b”、“c”是按顺序出现的,所以“a”、“b”、“c”的顺序应该是“c”、“b”、“a”。
因为“d”不是按顺序出现的,所以它可以在返回的字符串中的任何位置。“dcba”、“cdba”、“cbda”也是有效的输出。
示例 2:
输入: order = "cbafg", s = "abcd"
输出: "cbad"
提示:
-
-
-
order
和s
由小写英文字母组成 -
order
中的所有字符都不同
构造
根据题意进行模拟即可:起始先使用大小为
的数组 cnts
对 s
的所有字符进行词频统计,随后根据 order
的优先级进行构造。
若字符 x
在 order
中排于 y
前面,则先往答案追加 cnts[x]
个字符 x
,再往答案追加 cnts[y]
个字符 y
,并更新对应词频,最后将仅出现在 s
中的字符追加到答案尾部。
Java 代码:
class Solution {
public String customSortString(String order, String s) {
int[] cnts = new int[26];
for (char c : s.toCharArray()) cnts[c - 'a']++;
StringBuilder sb = new StringBuilder();
for (char c : order.toCharArray()) {
while (cnts[c - 'a']-- > 0) sb.append(c);
}
for (int i = 0; i < 26; i++) {
while (cnts[i]-- > 0) sb.append((char)(i + 'a'));
}
return sb.toString();
}
}
C++ 代码:
class Solution {
public:
string customSortString(string order, string s) {
vector<int> cnts(26, 0);
for (char c : s) cnts[c - 'a']++;
string result = "";
for (char c : order) {
while (cnts[c - 'a']-- > 0) result += c;
}
for (int i = 0; i < 26; i++) {
while (cnts[i]-- > 0) result += (char)(i + 'a');
}
return result;
}
};
Python 代码:
class Solution:
def customSortString(self, order: str, s: str) -> str:
cnts = [0] * 26
for c in s:
cnts[ord(c) - ord('a')] += 1
ans = ''
for c in order:
num = ord(c) - ord('a')
if cnts[num] > 0:
ans += c * cnts[num]
cnts[num] = 0
for i in range(26):
if cnts[i] > 0:
ans += chr(i + ord('a')) * cnts[i]
return ans
TypeScript 代码:
function customSortString(order: string, s: string): string {
const cnts = new Array<number>(26).fill(0)
for (const c of s) cnts[c.charCodeAt(0) - 'a'.charCodeAt(0)]++
let ans = ''
for (const c of order) {
while (cnts[c.charCodeAt(0) - 'a'.charCodeAt(0)]-- > 0) ans += c
}
for (let i = 0; i < 26; i++) {
while (cnts[i]-- > 0) ans += String.fromCharCode(i + 'a'.charCodeAt(0));
}
return ans
}
-
时间复杂度: -
空间复杂度: ,其中 为字符集大小
最后
巨划算的 LeetCode 会员优惠通道目前仍可用 ~
使用福利优惠通道 leetcode.cn/premium/?promoChannel=acoier,年度会员 有效期额外增加两个月,季度会员 有效期额外增加两周,更有超大额专属 🧧 和实物 🎁 福利每月发放。
我是宫水三叶,每天都会分享算法知识,并和大家聊聊近期的所见所闻。
欢迎关注,明天见。
更多更全更热门的「笔试/面试」相关资料可访问排版精美的 合集新基地 🎉🎉
本文由 mdnice 多平台发布
更多推荐
所有评论(0)