8.24蚂蚁笔试

💻题目:选择题20道左右(45分),编程题三题(10, 20, 25)
❓第1题:给定n,找满足2 * (a ** 2 + b ** 2) - 1 == n ** 2关系的a和b
这种题除非数学大佬一般人很难直接看出规律,先暴力枚举找规律,后面就会发现a = (n - 1) // 2,b=a+1
还有一个trick:用assert打测试样例

t = int(input())
for _ in range(t):
    n = int(input())
    if n == 1:
        print(-1)
    else:
        a = (n - 1) // 2
        b = a + 1
        print(a, b)
        assert 2 * (a ** 2 + b ** 2) - 1 == n ** 2, f"{a}, {b}, {n}"

❓第2题:跟着步骤来就行,牛客IDE函数补全比较慢,好在用的都是常规函数

❓第3题:不知道gcd是啥玩意,跳过了
#秋招笔面试记录#
全部评论
assert妙用
点赞 回复 分享
发布于 08-25 08:51 浙江

相关推荐

点赞 评论 收藏
分享
08-17 13:09
东北大学 Java
1. 上来一道面试题:括号匹配,几分钟就k出来了然后给了第二问ex1.如果字符串只包含'(',')'括号,如何优化此算法内存占用。这也很简单,我用了数字正负号来表示然后第三问:ex2.ex1基础上,如果字符串长度改为10GB,允许你使用多线程,如何充分利用多线程性能我的思路是这样:多线程就好比分段,将10GB的字符串适当进行分段,拆分成多个段,每段用一个线程来跑,用num记录左括号和有括号相减的个数,用flag表示是否是有左边的右括号的情况但是这个思路明显是不行的后来问了打算法竞赛的朋友,他给这样一个思路:每一段用l和r来分别记录右边的左括号和左边的右括号,然后对多段得到的多个l和r进行遍历,用前一段的l和r与后一段的l和r进行一个运算OK啊,还得是专业2. 然后让我自我介绍,他在我介绍一半突然跑出去了,然后回来又甩给我一道算法题:现在有1-100的乱序数组,需要在里面找到一个给定的数,如何才能最优的解出来3. 说一说Redis有哪些应用--我答了有分布式锁、消息队列等4. 消息队列用什么数据结构--说的stream5. 介绍一下怎么用stream实现消息队列---巴拉了一大堆,不太记得了,说的磕磕绊绊的6. 现在输入一个网页地址,请说明这个请求从发出到响应经过了哪些链路7. 你在上一点实习中遇到了哪些令你印象深刻的困难--说了在做合同模板需求中遇到的困难,一个是和leader与产品组对需求的困难,另一个是实际开发过程中遇到的困难8. 这两个困难是怎么解决的9. 反问:这个效能平台研发实习生岗位是做什么的,更多涉及到底层的开发还是应用层面---应用层,主要是做东西方便给其他人使用10. 反问:能给建议不--不能11. 反问:几轮面试--两轮技术面一轮hr面两道算法,没多少八股,实习和项目啥也没问还是我硬讲的,牛油们这是kpi吗
查看10道真题和解析
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务