【备战春招必看】美团2025届春招第10套笔试解析 | 大厂真题通关指南

✅ 春招备战指南 ✅

💡 学习建议:

  • 先尝试独立解题(建议用时:90分钟/套)
  • 对照解析查漏补缺
  • 配套练习题库

互联网必备刷题宝典🔗

📢 美团技术岗笔试重要信息速览

⏰ 笔试时间安排

  • 常规场次:每周六交替进行
    • 上午场 10:00~11:30
    • 晚间场 19:00~20:30
  • 通知时间:每周四/五通过邮箱发送考试链接

🧩 笔试题型分布

岗位类型 题目构成
算法岗 选择题 + 5道编程
后端开发岗 选择题 + 3道编程
前端/测试岗 选择题 + 2道编程

⚙️ 考试设置要点

  • 考试平台:牛客网(ACM模式)
  • 监考要求
    • 必须开启笔记本前置摄像头
    • 禁止使用手机(需小程序锁定)
    • 允许使用本地IDE
  • 编程规范
    • 严格遵循输入输出格式
    • 注意时间复杂度控制(通常1s对应1e8次运算)

📚 笔试经验贴

(所有展示题面均已进行改编处理,保留核心考点)

本题库收录整理自:

  1. 互联网公开的笔试真题回忆版(经网友投稿)
  2. 各大技术社区公开讨论的经典题型
  3. 历年校招考生提供的解题思路

🔍 题库特点:

  • 100%真实笔试场景还原
  • 包含高频考点题型
  • 提供多语言实现参考
  • 持续更新2024届最新真题

⚠️ 注意事项:

  1. 所有题目均来自公开渠道,已进行改编脱敏处理
  2. 实际笔试可能出现题型变化,请以官方通知为准

🚀 春招备战指南

金三银四求职季即将到来!这里整理了最新美团真题及解析,助你快速掌握笔试套路。建议重点突破以下题型:

  1. 数组/字符串操作
  2. 树形结构应用
  3. 贪心/动态规划
  4. 区间合并问题

(👇 下附最新笔试真题及详细解析 👇)

真题详解(改编版)

第一题:名字统计

题目内容

小基在整理同学名单时,发现混入了一些非人名的单词。已知人名单词必须以大写字母开头,请统计有效人名的数量。

输入描述

输入一个由大小写字母和空格组成的字符串 ),单词间用空格分隔,且字符串首尾不含空格。

输出描述

输出有效人名的数量。

样例1

输入:

ABC abc Abc

输出:

2

样例2

输入:

A A c

输出:

2

题解

这道题的关键是判断每个单词的首字母是否为大写。将输入字符串按空格分割后,遍历每个单词检查首字母即可。

时间复杂度:,其中 是字符串长度。分割字符串和遍历单词的时间复杂度都是线性的。 空间复杂度:,存储分割后的单词数组。

三语言参考代码

  • C++
#include <iostream>
#include <sstream>
using namespace std;

int main() {
    string s;
    getline(cin, s);
    istringstream iss(s);
    string word;
    int count = 0;
    
    while(iss >> word) {
        if(word[0] >= 'A' && word[0] <= 'Z') {
            count++;
        }
    }
    cout << count << endl;
    return 0;
}
  • Python
s = input().split()
count = sum(1 for word in s if word and word[0].isupper())
print(count)
  • Java
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] words = sc.nextLine().split(" ");
        int count = 0;
        
        for(String word : words) {
            if(!word.isEmpty() && Character.isUpperCase(word.charAt(0))) {
                count++;
            }
        }
        System.out.println(count);
    }
}

第二题:最短种树区间

题目内容

小柯需要安排 位工人在无限长的公路上种树。每位工人从自己的位置开始向右种树,要求所有工人种树区间长度相同。求满足至少 棵树的情况下,最短的种树区间长度。

输入描述

第一行输入两个整数 )。 第二行输入 个整数 ),表示工人位置。

输出描述

输出满足条件的最小区间长度。

样例1

输入:

3 6
1 2 5

输出:

3

题解

使用二分法确定最小种树长度。对于每个候选长度,计算总种树数是否满足要求。

时间复杂度:,二分次数为 ,每次检查需要 时间。 空间复杂度:,存储工人位置。

三语言参考代码

  • C++
#include <bits/stdc++.h>
using namespace std;

int main() {
    int n, k;
    cin >> n >> k;
    vector<int> pos(n);
    for(int i=0; i<n; i++) cin >> pos[i];
    sort(pos.begin(), pos.end());
    
    int l=1, r=2e9;
    while(l < r) {
        int mid = l + (r-l)/2;
        long long cnt=0, last=-1e18;
        for(int p : pos) {
            long long start = max(last+1, (long long)p);
            long long end = p + mid -1;
            if(start > end) continue;
            cnt += end - start +1;
            last = end;
        }
        if(cnt >= k) r=mid;
        else l=mid+1;
    }
    cout << l << endl;
}
  • Python
n, k = map(int, input().split())
pos = sorted(list(map(int, input().split())))

def check(m):
    cnt = last = 0
    for p in pos:
        start = max(last +1, p)
        end = p + m -1
        if start > end: continue
        cnt += end - start +1
        last = end
    return cnt >=k

l, r = 1, 2*10**18
while l < r:
    mid = (l + r) //2
    if check(mid): r=mid
    else: l=mid+1
print(l)
  • Java
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(), k = sc.nextInt();
        int[] pos = new int[n];
        for(int i=0; i<n; i++) pos[i] = sc.nextInt();
        Arrays.sort(pos);
        
        long l=1, r=(long)2e18;
        while(l < r) {
            long mid = (l + r)/2;
            long cnt=0, last=Long.MIN_VALUE;
            for(int p : pos) {
                long start = Math.max(last+1, p);
                long end = p + mid -1;
                if(start > end) continue;
                cnt += end - start +1;
                last = end;
            }
            if(cnt >= k) r=mid;
            else l=mid+1;
        }
        System.out.println(l);
    }
}

第三题:区间博弈

题目内容

小兰和小柯在数组上进行博弈。每轮给定区间 ,小柯先选一个数,小兰扩展区间后选另一个数,较大者胜。求每轮结果及最小扩展长度。

输入描述

第一行输入 )。 第二行输入数组 。 接下来 行每行两个整数

输出描述

每轮输出结果(win/draw/lose)及最小扩展长度。

样例1

输入:

6 2
1 1 4 5 1 4
1 3
4 4

输出:

win
4
lose
2

题解

  1. 预处理区间最大值及其位置
  2. 使用单调栈预处理每个元素左右第一个更大值的位置
  3. 根据最大值出现次数判断胜负
  4. 计算最小扩展长度

时间复杂度: 空间复杂度:

三语言参考代码

  • C++
#include <bits/stdc++.h>
using namespace std;

const int MAXN = 2e5+5;
int a[MAXN], lg[MAXN], st[MAXN][20], L[MAXN], R[MAXN];
vector<int> max_pos;

void build_st(int n) {
    for(int i=2; i<=n; i++) lg[i] = lg[i/2]+1;
    for(int j=1; (1<<j)<=n; j++)
        for(int i=1; i+(1<<j)-1<=n; i++) {
            int x = st[i][j-1], y = st[i+(1<<(j-1))][j-1];
            st[i][j] = a[x]>=a[y] ? x : y;
        }
}

int query_max(int l, int r) {
    int k = lg[r-l+1];
    int x = st[l][k], y = st[r-(1<<k)+1][k];
    return a[x]>=a[y] ? x : y;
}

void preprocess(int n) {
    stack<int> s;
    for(int i=1; i<=n; i++) {
        while(!s.empty() && a[s.top()] < a[i]) s.pop();
        L[i] = s.empty() ? 0 : s.top();
        s.push(i);
    

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

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

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

全部评论
mark春招备战指南
1 回复 分享
发布于 02-24 22:45 浙江
忍耐王
点赞 回复 分享
发布于 02-24 23:03 浙江
接好运
点赞 回复 分享
发布于 02-24 23:03 浙江
美团真题哪里找
点赞 回复 分享
发布于 02-24 22:50 浙江
笔试时间怎么安排的
点赞 回复 分享
发布于 02-24 22:50 浙江
忍耐王
点赞 回复 分享
发布于 02-24 22:49 浙江
接好运
点赞 回复 分享
发布于 02-24 22:49 浙江
mark春招备战指南
点赞 回复 分享
发布于 02-24 22:49 浙江
✅ 春招备战指南 ✅ 有需要大家可以关注哦~
点赞 回复 分享
发布于 02-24 22:45 浙江

相关推荐

找到实习就改名4月17日下午更改:1600一个月?
点赞 评论 收藏
分享
评论
3
2
分享

创作者周榜

更多
牛客网
牛客企业服务