【秋招笔试】2025.09.07蚂蚁算法岗秋招笔试改编

✅ 秋招备战指南 ✅

💡 学习建议:

  • 先尝试独立解题
  • 对照解析查漏补缺

🧸 题面描述背景等均已深度改编,做法和题目本质基本保持一致。

🍹 感谢各位朋友们的订阅,你们的支持是我们创作的最大动力

🌸 目前本专栏已经上线180+套真题改编解析,后续会持续更新的

春秋招笔试机考招合集 -> 互联网必备刷题宝典🔗

蚂蚁-09.07

题目一:神秘密码的最优解码

1️⃣:计算数组所有元素的按位或运算结果

2️⃣:利用按位或运算的性质,答案即为数组按位或的结果

难度:中等

这道题目的关键在于理解按位或运算的性质,发现对于要求 最小的问题, 只能在 已有的1位上取值,从而得到 的巧妙结论。通过数学分析,避免了暴力搜索,实现了 的高效解法。

题目二:智能投资顾问系统

1️⃣:解析JSON格式的训练和测试数据

2️⃣:使用StandardScaler进行数据标准化预处理

3️⃣:构建RandomForestClassifier模型并训练预测

难度:中等

这道题目结合了数据预处理和机器学习算法,需要掌握scikit-learn库的使用方法。通过随机森林算法的ensemble特性,能够有效处理分类问题并提供稳定的预测结果。关键在于正确的数据流处理和参数设置。

题目三:电子竞技联赛策略规划

1️⃣:定义动态规划状态表示从当前位置开始的最大期望收益

2️⃣:考虑"参加"和"跳过"两种决策的期望值计算

3️⃣:从后往前递推求解最优策略

难度:中等偏难

这道题目需要理解概率与期望的计算,并设计合适的动态规划状态转移。核心难点在于处理"强制休息"机制对后续决策的影响,通过期望值的线性性质,将复杂的概率问题转化为清晰的递推关系,实现 的时间复杂度。

01. 神秘密码的最优解码

问题描述

小兰是一名密码学专家,她发现了一个古老的密码系统。这个系统中有一个由 个正整数组成的密钥序列

为了破解这个密码,小兰需要选择一个非负整数 作为解码密钥,但是这个选择必须满足两个严格的条件(按优先级排序):

  1. 与密钥序列所有元素按位或运算的结果 必须尽可能小

  2. 在满足条件1的前提下, 的值必须尽可能大

其中,OR 表示按位或运算。

请帮助小兰找到这个最优的解码密钥

输入格式

第一行包含一个正整数 ),表示密钥序列的长度。

第二行包含 个正整数 ),表示密钥序列中的各个元素。

输出格式

输出一个整数,表示最优的解码密钥

样例输入

3
1 1 1
5
1 2 3 4 5

样例输出

1
7
样例编号 解释说明
样例1 密钥序列所有元素的按位或为1,要使 最小只能为1,此时 最大值为1
样例2 密钥序列所有元素的按位或为7(1|2|3|4|5=7),要使 最小只能为7,此时 最大值为7

数据范围

题解

这道题目初看起来比较复杂,但仔细分析后会发现其实有个很巧妙的数学规律。

首先我们来理解题目要求:给定一个数组,要找到一个数 ,使得 与数组所有元素的按位或结果最小,在这个基础上让 尽可能大。

关键观察:设数组所有元素的按位或为

对于按位或运算, 的值有一个重要性质:它只能在 的基础上增加新的1位,而不能减少已有的1位。这是因为按位或运算的特点是"有1则1"。

因此:

  1. 要让 最小,我们不能让 为0的位置上贡献任何1,所以最小值就是 本身
  2. 在满足条件1的前提下,要让 最大,我们可以让 为1的所有位置都为1,这样 ,而 达到最大值

所以答案就是数组所有元素的按位或结果!

举个例子:对于数组 [1,2,3,4,5],按位或结果是 (二进制111),所以答案就是7。

算法步骤:

  1. 遍历数组,计算所有元素的按位或
  2. 直接输出这个结果

时间复杂度:,只需要遍历一次数组 空间复杂度:,只用了常数额外空间

参考代码

  • Python
import sys
input = lambda: sys.stdin.readline().strip()

n = int(input())
arr = list(map(int, input().split()))

# 计算所有元素的按位或
res = 0
for val in arr:
    res |= val  # 累积按位或运算

print(res)
  • Cpp
#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int n;
    cin >> n;
    
    // 计算所有元素的按位或
    int res = 0;
    for (int i = 0; i < n; i++) {
        int val;
        cin >> val;
        res |= val;  // 累积按位或运算
    }
    
    cout << res << endl;
    return 0;
}
  • Java
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        
        // 计算所有元素的按位或
        int result = 0;
        for (int i = 0; i < n; i++) {
            int value = sc.nextInt();
            result |= value;  // 累积按位或运算
        }
        
        System.out.println(result);
        sc.close();
    }
}

02. 智能投资顾问系统

问题描述

小基是一家金融科技公司的数据科学家,她正在开发一个智能投资顾问系统。该系统需要根据客户的财务特征来预测其投资风险偏好(保守型为0,激进型为1)。

小基需要使用机器学习技术来构建这个预测模型。具体要求如下:

  1. 数据读取

    • train:训练数据集,二维列表格式;最后一列为投资风险偏好标签 ,前 列为客户的数值特征(如年收入、资产总额等),
    • test:测试数据集,二维列表格式;仅包含特征数据,与训练集维度相同
  2. 数据预处理

    • 使用标准化处理(StandardScaler):在训练集上进行 fit 操作,然后分别对 traintest 进行 transform 操作
  3. 模型构建

    • 你需要使用的随机森林固定参数:
      • n_estimators = 50
      • min_samples_split = 2
      • min_samples_leaf = 1
      • random_state = 42
    • 其他超参数保持默认值;不允许修改 n_estimatorsrandom_state
  4. 训练与预测

    • 在全部训练样本上进行模型训练(fit
    • 对测试集进行预测,输出预测的投资风险偏好类别

输入格式

标准输入包含一行 JSON 格式的数据,示例:

{
 "train":[[-2.0,0],
          [-1.8,0],
          [-2.2,0],
          [2.0,1],
          [2.1,1],
          [1.9,1]],
 "test":[[-1.0],
         [2.0]]
}
  • 训练数据量 且两类样本数均 ,特征维度
  • 所有数值为整数或浮点数,无空行

输出格式

输出一行 JSON 数组格式的预测结果,如:

[0, 1]

数组长度等于测试样本数,格式为合法 JSON,逗号后需要有空格。

样例输入

{"train":[[-2.0,0],[-1.8,0],[-2.2,0],[2.0,1],[2.1,1],[1.9,1]],"test":[[-1.0],[2.0]]}

样例输出

[0, 1]
样例编号 解释说明
样例1 根据训练数据,负值特征对应保守型投资者(0),正值特征对应激进型投资者(1)。测试样本[-1.0]预测为0,[2.0]预测为1

数据范围

  • 训练样本数
  • 两类样本数均
  • 特征维度
  • 所有特征值为数值类型

补充说明

  1. 所有涉及随机性的操作均需显式设置 random_state=42
  2. 为确保通过测试用例,仅允许使用 numpypandasscikit-learn

题解

这道题目考查的是机器学习中的二分类问题,需要使用随机森林算法进行预测。

解题思路:

  1. 数据解析:从标准输入读取JSON格式的训练和测试数据,将其转换为numpy数组便于处理。

  2. 特征和标签分离:将训练数据的最后一列作为标签,前面的列作为特征。

  3. 数据标准化:使用StandardScaler对特征进行标准化处理,这是机器学习中常用的预处理步骤,可以提高模型性能。标准化的核心是让所有特征具有相同的量级。

  4. 模型训练:使用RandomForestClassifier构建随机森林分类器。随机森林是一种集成学习方法,通过构建多个决策树并投票来提高预测准确性。

  5. 预测输出:对测试集进行预测,并将结果格式化为JSON数组输出。

关键技术点:

  • StandardScaler:先在训练集上fit,再对训练集和测试集分别transform,这样可以避免数据泄露
  • RandomForestClassifier:ensemble方法,能够有效处理特征重要性和避免过拟合
  • JSON处理:正确解析输入和格式化输出

时间复杂度:训练阶段约为 ,预测阶段约为 ,其中N为训练样本数,T为测试样本数。

参考代码

  • Python
import sys
input = lambda: sys.stdin.readline().strip()
import json
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier

# 读取JSON数据
raw_data = input()
data = json.loads(raw_data)

# 转换为numpy数组
train_data = np.array(data["train"], dtype=float)
test_data = np.array(data["test"], dtype=float)

# 分离特征和标签
X_tr, y_tr = train_data[:, :-1], train_data[:, -1]
X_te = test_data

# 数据标准化
scaler = StandardScaler()
X_tr = scaler.fit_transform(X_tr)
X_te = scaler.transform(X_te)

# 构建并训练随机森林模型
model = RandomForestClassifier(
    n_estimators=50,
    min_samples_split=2,
    min_samples_leaf=1,
    random_state=42
)
model.fit(X_tr, y_tr)

# 预测并输出结果
pred = model.predict(X_te).astype(int).tolist()
print(json.dumps(pred, separators=(", ", ": ")))
  • Cpp
// 注意:C++无法直接使用scikit-learn,此处提供伪代码框架
#include <bits/stdc++.h>
#include <nl

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

互联网刷题笔试宝典 文章被收录于专栏

互联网刷题笔试宝典,这里涵盖了市面上大部分的笔试题合集,希望助大家春秋招一臂之力

全部评论

相关推荐

09-06 01:27
已编辑
门头沟学院 Java
秋招投了快一个月了给我面麻了,我真的看不懂了,面的烂的感觉面试官不是个人的反而过了😅😅😅,面的好的相谈甚欢的都挂了😅😅😅感觉自己复不复习努不努力好像和结果没啥关系,现在就是麻木地面,看运气随缘能不能有offer了,一点正反馈都没有,天天打游戏已经没啥心气了滴滴提前批二面完秒挂,百度提前批一面完一周挂,蚂蚁一面完秒挂……基本都答上来了感觉相谈甚欢啊实在不理解淘天一面遇到神人面试官了,听完自我介绍就不耐烦了各种瞧不起人,甚至直接质疑起我实习那个组的技术水平😅😅😅,和暑期面淘天一模一样,给哥们干红温了好久没缓过来快手一面也是被面试官各种瞧不起,觉得实习没技术没亮点,随便问几个问题写个题半小时不到就结束了😅😅😅,反问都懒得问直接退了,结果面完隔一天约二面了,我真看不懂了这字节二面算法题20分钟没写出来,面试官脸都黑了结果还给过了😅,看不懂,三面面试官人倒蛮好的,好像从美团去字节的,明显比前两面面试官有人气些,不过面的也一般有几个问题感觉他不咋满意,感觉应该g了美团一面挂的心服口服,秋招面的最难的一次,和别人的美团感觉不一样啊。。。全程高强度拷打了一小时半实习,场景题,超绝连环追问,没有八股没有写题。。。,确实水平还是不够,面试官水平很高很严谨小鹏,猿辅导二面完一周多了没消息,虾皮8月中hr面现在也没啥消息,但是这三家面试体验都不错,面试官都挺好的,专业且态度好👍🏻👍🏻一个月就虾皮走完全流程了,还不一定泡的出来。。。。什么时候能有个offer啊
mata川152:我快手也是,一面面试官一直说我做的东西太简单,觉得我实习没亮点;二面更是神人面试官一边吃东西一边面,后面直接躺在椅子上一边转圈一边听我说,无语了
秋招笔面试记录
点赞 评论 收藏
分享
09-08 21:10
已编辑
华南理工大学 Java
可乐不加冰777:大佬收手吧,别面了,别收割了,给鼠鼠我们一口汤喝
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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