360笔试 360秋招 360笔试题 0920

笔试时间:2025年9月20日

往年笔试合集:

2023春招秋招笔试合集

2024春招秋招笔试合集

第一题:字符串操作

题目描述:给定长度为 n 的字符串 s1 和长度为 m 的字符串 s2。对于长度为 L 的字符串,它的子串 s[l,r](1≤l≤r≤L)是指从第 l 个字符开始到第 r 个字符结束这一段所构成的字符串。

请判断是否能够通过进行至多 1 次以下操作使得字符串 s1 和字符串 s2 完全相同:在字符串 s1 中选择一个子串 s1[l,r](1≤l≤r≤n),将该子串从 s1 中删除,同时将该子串添加到 s2 末尾。

输入描述

输入包含多组测试数据。输入第一行包含一个整数 T(1≤T≤100),表示数据组数。之后每三行描述一组测试数据:

  • 第一行包含两个正整数 n 和 m(1≤m≤n≤100)分别表示字符串 s1 和 s2 的长度。
  • 第二行包含一个长度为 n 的字符串,表示字符串 s1,保证仅包含小写英文字母。
  • 第三行包含一个长度为 m 的字符串,表示字符串 s2,保证仅包含小写英文字母。

输出描述

对于每组测试数据输出一行,如果能够通过至多 1 次操作使得字符串 s1 和 s2 完全相同,则输出 YES,否则输出 NO。

样例输入

2

4 2

acdc

ad

4 2

accd

ad

样例输出

YES

NO

样例说明: 对于样例的第一组测试数据,可以从 s1 中选择子串 "cd",操作后有 s1="ad", s2="adcd"。 对于样例的第二组测试数据,通过该操作无法使得 s1 和 s2 完全相同。

参考题解

解题思路:

  1. 操作后 s1 和 s2 必须相同:设操作中删除的子串长度为 k,那么操作后新的 s1 长度为 n-k,新的 s2 长度为 m+k。要求两者相等:n-k = m+k,解得 k = (n-m)/2。因此,n-m 必须是偶数。
  2. 如果 k=0(即 n=m),则不需要操作,直接判断 s1 和 s2 是否相等。
  3. 否则,枚举所有可能的子串起始位置,检查移除该子串后的 s1 是否等于 s2 拼接上该子串。

C++:

#include <iostream>
#include <string>
using namespace std;

int main() {
    int T;
    cin >> T;
    while (T--) {
        int n, m;
        cin >> n >> m;
        string s1, s2;
        cin >> s1 >> s2;
        
        if ((n - m) % 2 != 0) {
            cout << "NO" << endl;
            continue;
        }
        
        int k = (n - m) / 2;
        
        if (k == 0) {
            cout << (s1 == s2 ? "YES" : "NO") << endl;
            continue;
        }
        
        bool found = false;
        for (int start = 0; start <= n - k; start++) {
            string segment = s1.substr(start, k);
            string remaining = s1.substr(0, start) + s1.substr(start + k);
            if (remaining == s2 + segment) {
                found = true;
                break;
            }
        }
        
        cout << (found ? "YES" : "NO") << endl;
    }
    return 0;
}

Java:

import java.util.*;

public class Solution {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int T = scanner.nextInt();
        
        while (T-- > 0) {
            int n = scanner.nextInt();
            int m = scanner.nextInt();
            String s1 = scanner.next();
            String s2 = scanner.next();
            
            if ((n - m) % 2 != 0) {
                System.out.println("NO");
                continue;
            }
            
            int k = (n - m) / 2;
            
            if (k == 0) {
                System.out.println(s1.equals(s2) ? "YES" : "NO");
                continue;
            }
            
            boolean found = false;
            for (int start = 0; start <= n - k; start++) {
                String segment = s1.substring(start, start + k);
                String remaining = s1.substring(0, start) + s1.substring(start + k);
                if (remaining.equals(s2 + segment)) {
                    found = true;
                    break;
                }
            }
            
            System.out.println(found ? "YES" : "NO");
        }
        scanner.close();
    }
}

Python:

import sys

def main():
    I = sys.stdin.readline
    T = int(I())
    for _ in range(T):
        n, m = map(int, I().split())
        s1 = I().strip()
        s2 = I().strip()
        
        if (n - m) % 2 != 0:
            print("NO")
            continue
        
        k_val = (n - m) // 2
        
        if k_val == 0:
            print("YES" if s1 == s2 else "NO")
            continue
        
        found = False
        for start in range(n - k_val + 1):
            segment = s1[start:start + k_val]
            remaining = s1[:start] + s1[start + k_val:]
            if remaining == s2 + segment:
                found = True
                break
        
        print("YES" if found else "NO")

if __name__ == "__main__":
    main()

第二题:激光射击

题目描述:小明在玩一款叫做激光射击的游戏。

游戏在一个平面直角坐标系上进行。游戏的场地为一个 n×m 的矩形区域,其中矩形的四个顶点分别为 (0,0)、(n,0)、(n,m)、(0,m)。一束激光装置放置在 (0,0) 的位置,玩家可以向区域内任意方向发射一束激光。激光会沿着直线行进,当其抵达矩形区域的某个边界时,它会从跟该边界平行的另一个边界射出,方向不变。具体的,当激光抵达边界 x=n(0≤y≤m)时,激光会从 x=0 射出;当激光抵达边界 y=m(0≤x≤n)时,激光会从 y=0 射出;然而在 x=0 处有一个吸收装置,当激光抵达边界 x=0 时,激光会被吸收。

区域内有若干个靶,每个靶都可以看作一个点,并且其坐标均为整数。当激光击中靶子时,靶子会消失,同时玩家得一分。

小明希望自己的得分最大。请计算小明可以获得的最大得分是多少。

输入描述

第一行三个整数 n、m、k(1≤n,m≤10^6,0≤k≤500),表示矩形区域的大小以及靶子的数量。

接下来 k 行,每行两个整数 x_i, y_i(0<x_i<n,0<y_i<m),表示靶子的坐标。保证所有靶子的坐标都不相同。

输出描述

一个整数,表示小明可以获得的最大得分。

样例输入

5 5 7

1 3

1 4

2 1

2 2

3 3

3 4

4 2

样例输出

4

样例说明: 向 (1,1) 方向发射激光,击中的靶子的数量最多,得分最大为 4。

参考题解

解题思路:

  1. 激光路径的周期性:由于反射规则,激光路径在平面上会周期性重复。可以将整个平面"展开",将反射视为进入了一个镜像世界。
  2. 方向向量的简化:对于每个靶子,考虑它在四个象限的镜像位置,这些点与原点连线的方向向量可以代表激光可能的方向。方向向量需要化简为最简分数形式。
  3. 直线方程与整数解:对于每个方向向量,检查每个靶子是否位于该方向的激光路径上,这转化为求解线性丢番图方程。
  4. 使用扩展欧几里得算法求解方程,判断是否存在整数解。
  5. 对每个方向向量,计算能击中的靶子数量,取最大值。

C++:

#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
#include <numeric>
#include <cmath>
using namespace std;

int gcd(int a, int b) {
    return __gcd(abs(a), abs(b));
}

tuple<int, long long, long long> extended_gcd(long long a, long long b) {
    if (a == 0) return {b, 0, 1};
    auto [d, x1, y1] = extended_gcd(b % a, a);
    long long x = y1 - (b / a) * x1;
    long long y = x1;
    return {d, x, y};
}

int main() {
    int n, m, k;
    cin >> n >> m >> k;
    
    vector<pair<int, int>> targets(k);
    for (int i = 0; i < k; i++) {
        cin >> targets[i].first >> targets[i].second;
    }
    
    int max_score = k > 0 ? 1 : 0;
    set<pair<int, int>> directions;
    
    for (auto& [x, y] : targets) {
        for (int a_wrap = 0; a_wrap <= 1; a_wrap++) {
            for (int b_wrap = 0; b_wrap <= 1; b_wrap++) {
                int nx = x + a_wrap * n;
                int ny = y + b_wrap * m;
                if (nx == 0 && ny == 0) continue;
                int g = gcd(nx, ny);
                directions.insert({nx / g, ny / g});
        

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

2025 春招笔试合集 文章被收录于专栏

2025打怪升级记录,大厂笔试合集 C++, Java, Python等多种语言做法集合指南

全部评论

相关推荐

2025年从3月到12月,求职求职求职,整年差不多都给实习和秋招&amp;论文了,所以能给个HappyEnding吗?KS&amp;JD&amp;PDD!!!实习(3-7):3月份开始投递,因为客观原因只投递了几家公司:团子、得子、多子、滴滴约面的团子(两次一面挂,秋招也没给机会了)、得子(暑期OC,可惜为什么不能再爱一次的!!!)、滴滴(二面挂)独自一个人去Shanghai,住的青旅,随时准备**期间还和大学室友玩了一个周末,还是一段不错的回忆实习Mentor和PM也很不错,Leader接触不多,人也很好,但秋招......原因不知道,一句话就是秋招太卷了,暑期大家想着去大公司,秋招多数朝“钱”看感谢接触的业务在秋招面试中很多公司也有类似业务PDD\JD\KS秋招(8-12月甚至明年1月,仍在进行中)8月开始提前批投递,差不多有面,但各种原因挂掉9月面完PDD信心大增(谁想到主管还不审批Offer,整整3个月了,求Offer,牛客最灵了!!!)陆陆续续面完京东(HR快发快OC开奖审批Offer,求OC,等疯了!!!)、快手(收到OfferCall,保佑Offer审批成功!爱手!)、携程(不抱有希望了,可你官网还在补录,可恶!!!)、收钱吧(Offer,也是第一个Offer,可开太低拒掉了)10月老东家(最可惜的,为什么不联系Leader,不够勇气,只能说秋招竞争太激烈,老东家又招的少,只能说给钱是真的,保佑还能开到我,虽然也不抱有很大希望了。)字节(捞了3次,投晚了,全怪PDD给我幻想!!!虽然真的也面不过),小米(面完泡池子,开的低也抱有希望)11月最痛苦,身边大佬们都开了,我的全在泡池子.......也是分享欲最低一个月12月,过山车,1号JD官网挂-2号捞&amp;快手开奖OC。3&amp;4JD捞回,等等等,催PDD希望12月能开个比较满意的,KS给我Offer吧!JD也是!超爱手子和东子的!!!希望有个Offer春招就可以放轻松投递,大家都好运好运!!!求HappyEnding吗?KS&amp;JD&amp;PDD!!!
2025年终总结
点赞 评论 收藏
分享
单9工科硕,秋招投递岗位以结构岗和仿真岗为主。秋招投递自6月始,11月14日结束,期间共计投递大小企业500+,给予回复者寥寥无几。总结如下:1.富特科技:杭州,结构岗,据说给的很多,相应的加班很猛,大概N+10。8月份收到的第一个面试,当时心情非常激动!一面技术面,面试小哥很帅很有礼貌!非常可惜,由于第一个面试准备不充分,止步于一面,九月份收到感谢信。2.徐工矿机:徐州,结构岗,国企性质,单休,一轮面试后offer,N-3左右。3.潮州三环:投的德阳,知名度很高哈哈,同样开的很高强度很大,大概N+10。一轮hr面通过,后续技术面至今无音讯。4.维信诺:合肥,面板行业仿真岗,一轮面试后offer,N,责任制薪资无加班费。5.康冠科技:惠州,结构岗,一轮面试后offer,问的比较有深度,N+4左右。6.东成机电:南通,仿真岗,一轮技术面后挂,询问得知仿真能力欠缺,我寻思你也没问我仿真问题,全程在询问硕士课题啊。学历厂,按照学校定薪资,开的很高。但是可能行业受限不好跳?7.锂威新能源:惠州,仿真岗,欣旺达子公司,一轮面试后offer,技术面问的很深了,总体感觉不错。今年薪资很有诚意,大概N+5,只是offer里没有注明年终奖范围?不清楚往年如何。8.泰开变压器:泰安,投的结构岗,给我调了个管培生,一面后无音讯,面试官岁数不小,草台班子感觉。9.中车时代新材:株洲,学校线下面试,体验感贼差,感觉投了就让面,疯狂刷kpi,人力高高在上的态度让人很不爽?一面后无音讯。10.山东电力设备:济南,央企多级子公司?一轮技术面后一周通知通过,N-5,不定岗。11.兵器大江工业:重庆,两轮面试,试用期5200/月,笑了,不多说。12.中航工业华燕:西安,一轮技术面试,面试官问的很深入了,后续无音讯,听说优先双9。13.荣耀:北京,结构岗,一面技术面二面主管面。问了些项目问题就开始唠嗑,面试体验良好,只是得泡池子。10.24泡池子11.14开奖,N+15左右。14.中汽研:天津,大央企。线下投递后hr面,简单了解情况,后续无音讯,今年据说双9是门槛,hc不多。15.中创新航:常州,结构岗,国企,一轮技术面一轮ai面代替了hr面。做完ai秒发offer,大概N-3,年终奖未知。16.中船动力:镇江,hr面定的工艺岗,要求调岗,后续无音讯。17.国轩高科:天津,结构岗。一轮一群领导面,一轮英文面,口语不好,很痛苦,刚刚面完后续未知。18.上汽捷新:上海,仿真岗,技术面后无音讯,工资不高。19.临工重机:济南,仿真岗,线下hr面,线上技术主管面,相谈甚欢,后续无音讯,大概我不是本地人。20.果下科技:无锡,不定岗。做储能的,个人认为行业比较有前景。面试流程中后续未知。21.杰瑞:烟台,仿真,名气十分大哈哈。一面问了很多实际工程中可能遇到的问题,面试官十分好!开了N+12左右。因为各种原因谢绝参加面试的有:中交天和,天马,延锋,公牛,美的,山推,经纬恒润,江淮汽车,润科通用。秋招历时5个多月,感慨良多1.秋招准备宜早不宜迟,尽管早期提前批是典型的学历厂阶段,仍然要积极投递。因为简历,自我介绍等是一个随着投递不断优化的过程。2.jg企业大多难进,看的东西很多,譬如学历,院校,本硕专业一致性,方向对口性等。但就目前来看,11月以后是他们疯狂捞人递补的时候。3.山东企业大多排外,投递了许多如歌尔,海尔,海信,三角轮胎等,无一例外没有回信,身边相同学历背景的大多都能参加面试,思虑再三大概是考虑后期签约率已经入职后稳定性吧。4.建议明确自身定位,想去哪里?想要什么?钱?加班?央国企?生活?只有这样才能不至于在秋招紧张阶段手忙脚乱。企业对于应届生来说,没有最好,只有适不适合你自己,毕竟每个人情况不一样。
点赞 评论 收藏
分享
2025-11-17 22:18
厦门理工学院 销售
点赞 评论 收藏
分享
评论
2
3
分享

创作者周榜

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