有一天老大找到我,说希望我能多引荐几个人。想来想去,来社区发帖应该是最合适的了。(PS:也许过去在社区发了太多的帖子,喜欢社区的这个氛围)
阿里巴巴 - 淘宝测试开发工程师 需要招很多人,人数 N 个。
特别备注:该岗位不是外包
浙江杭州阿里巴巴西溪园区
有到滨江,黄龙体育中心的班车。所以住在滨江也不用太担心。
互联网公司的工资,大家都知道的,我就不细说了。
对我们来说,想找到一个合适的人实在是太难了。所以我这里给你设置了一点障碍。
下面是一道算法题
一个射击运动员打靶,靶一共有 10 环,连开 10 枪打中 90 环的可能性有多少种?
如果你成功算出来了结果,比如结果是 99。
打开浏览器的开发者选项,将下面的代码复制到 Console 标签中。
然后再输入getEmail(99)
(注:这个 99 并不是正确答案,需要你自己计算),就获取到了要接受简历的邮箱。
如果答案是你动手算出来的,恭喜你,你将有很高的概率被录取。如果你能暴力破解出来,也是可以的。
function getEmail(N) {
const m = N % 1024;
const encoded = [185, 181, 190, 191, 169, 177, 163, 184, 182, 175, 191, 154, 189, 183, 187, 179, 182, 244, 185, 181, 183];
const decoded = encoded.map(i => {
return i ^ m
})
return String.fromCharCode.apply(null, decoded)
}
标题为:2020 阿里淘宝测试开发 - 面试-{你的姓名}
正文:校招还是社招。附上解题思路
附件:简历建议是 Word 格式,PDF 格式也可以的
我和我的团队将以最快的速度联系你 _. 非常期待你的加入。
最后来一句洗脑神句子:梦想是要有的,万一实现了呢。
解出来,一开始以为是阿里邮箱误导了下,很好玩。。。
介不介意被裁的来占个楼
题目都没看懂。。
为啥用 gmail 了。。。
完美的 gmail....
现在招聘贴都出这么多花样了么
能百度出来的面试题不是好的程序员
对大佬有所了解的,就会知道大佬有个很厉害的开源项目,这个开源项目托管在一个很厉害平台上,这个平台允许用户添加一个很厉害的邮箱,这时你就有了 50% 的概率,是或者不是 ,然后翻下评论,这时概率提升到 99%
大圣,你得改下坐标了。Netease => Baba
哈哈 这是个经典算法题 可通过递归算法来进行求解,运动员在射击的过程中,每次射击有 11 种可能:命中 0 环到 10 环之间的环数。
题目不太严谨,脱靶算不算?排列还是组合?
最多 100 环,脱得 10 环怎么分配到 10 个格子,概率论不难。
所以懒得算了,暴力了一把,10000 以内的找到 10 个答案
218,1242,2266,3290,4314,5338,6362,7386,8410,9434
email 是在如下的 jwt token 中:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyZXN1bHQiOiJjb2Rlc2t5Ymx1ZUBnbWFpbC5jb20iLCJuYW1lIjoiUGV0ZXIgUGVuZyIsImVtYWlsIjoicGV0ZXIucGVuZzEyMTVAZ21haWwuY29tIn0.5Bnqrt-VXcAb-wH8v0vR02i104Q8ohpmmolb48griSc
s = 0
for a1 in range(11):
for a2 in range(11):
for a3 in range(11):
for a4 in range(11):
for a5 in range(11):
for a6 in range(11):
for a7 in range(11):
for a8 in range(11):
for a9 in range(11):
for a10 in range(11):
if (a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10) == 90:
s = s + 1
print(s)
#62 优秀哈哈哈
解题思路:
1.设置矩阵高度和长度为 x,y;如 3,3 的矩阵如下,行代表次数,列代表环数
[
[0, 1, 2, 3],
[0, 1, 2, 3],
[0, 1, 2, 3]
]
2.设 z 为目标总环数,f(x,y,z) 为可能的情况总数。
推到出公式
$$f(x,y,z)=\sum_{i=0}{n}f(x-1,y,z-i)$$
def get_nums(length, height, nums):
r = 0
if length == 1:
if 0 <= nums <= height:
r = 1
return r
for i in range(height + 1):
r += get_nums(length-1, height, nums-i)
return r
分析发现上面会进行很多无用的调用,导致执行时间太长,对调用过程进行剪裁,加入约束 z-y <= z-i <= (x-1)*y
def get_nums(length, height, nums):
r = 0
if length == 1:
if 0 <= nums <= height:
r = 1
return r
for i in range(height + 1):
if nums-height <= nums-i <= (length-1)*height:
r += get_nums(length-1, height, nums-i)
return r
得出结果:92378
看到了这个 刚好有时间弄一下 我可没有大神会算法 我只会暴力
<html>
<head>
<title>获取邮箱</title>
</head>
<body>
<p>获取邮箱</p>
<button onclick="at()">获取</button>
</body>
<script>
function getEmail(N) {
const m = N % 1024;
const encoded = [185, 181, 190, 191, 169, 177, 163, 184, 182, 175, 191, 154, 189, 183, 187, 179, 182, 244, 185, 181, 183];
const decoded = encoded.map(i => {
return i ^ m
})
return String.fromCharCode.apply(null, decoded)
}
function at() {
for (i = 50; i < 500; i++) {
if (getEmail(i).indexOf('com') >= 0 || getEmail(i).indexOf('COM') >= 0 || getEmail(i).indexOf('cn') >= 0 || getEmail(i).indexOf('CN') >= 0) {
window.alert("暴力破解 = " + i + "邮箱 = " + getEmail(i))
break;
}
}
}
</script>
</html>