首页 / 面试经验谈
#

面试经验谈

#
243257次浏览 5137人互动
常见面试问题有哪些?面对这些问题应该如何作答? 面试时应该反问哪些问题比较合理? 不同公司的面试风格有哪些差异? 面试时可以通过哪些细节判断自己通过或被挂? 各位佬们,来聊聊你们的面试经验吧,帮助更多小伙伴少走弯路!
此刻你想和大家分享什么
热门 最新
🧠校招算法岗通关秘籍(2025版)
   注:本秘籍适用于计算机、人工智能、电子信息等相关专业的应届生,目标是互联网大厂/知名科技公司的算法工程师岗位(如搜索推荐算法、CV、NLP、LLM等)。✅ 一、前期准备1.1 岗位了解🔍 算法岗位的分类- 搜索推荐算法:常见于字节跳动、美团、阿里、京东等公司,负责商品/视频/资讯/音乐等的搜索推荐等,出名的部门如阿里妈妈、百度凤巢、快手社科线等。- CV/NLP算法:百度、腾讯、华为、商汤等偏AI方向的公司需求较多,对应的业务场景如视觉感知、目标检测、query理解、意图识别等,岗位要求CV比较卷,需要论文背书。- 风控/金融算法:蚂蚁金服、平安科技、微众银行等金融科技类企业。- 机器学习算法:业务场景广阔,如电商的搜索推荐、公司中台等。- 大模型/AIGC/多模态算法:业务场景广泛,如智能客服机器人、文生图等,出名的部门如阿里通义实验室、字节豆包、快手可灵等,对实践的要求比较高,如参与过大模型预训练,SFT,RLHF等项目。🎯 如何选择岗位- 结合自己的研究方向或实习经历;- 参考行业趋势(如AIGC、大模型、多模态等);- 考虑公司发展路径和成长空间;- 关注base地点、薪资结构、工作强度等实际因素。1.2 简历准备📄 简历要素- 基本信息:姓名、联系方式、邮箱;- 教育背景:学校、专业、学历、毕业时间;- 项目经验(重点!):每个项目写清问题背景、解决方法、技术栈、结果(最好有量化指标),强调自己在其中的具体贡献,如“主导”、“设计”、“优化”等;- 实习经历(如有):写清楚做了什么、用了什么技术、解决了什么问题;- 技能项:编程语言如Python、C++、Java等,框架工具如PyTorch、TensorFlow、Sklearn、Hadoop、Spark等;- 学术论文、竞赛名次(如Kaggle、天池等)。✨ 小贴士- 控制在一页内,简洁明了;- 使用PDF格式;- 避免空洞描述,突出技术细节;- 建议至少有一个比较垂直的项目(岗位匹配度高),可以再放一个自己学校科研的项目(如果有论文就更好了)。1.3 刷题和八股💻 刷题平台推荐- LeetCode(hot 100,可参考代码随想录)- 牛客网(国内题目更全,很多公司笔试的平台,需要熟悉ACM形式)📚 刷题建议- 先按类型刷(数组、链表、二叉树、动态规划、回溯、贪心、图论等)- 中后期做周赛、双周赛模拟真实环境- 掌握常见算法模板(DFS/BFS、二分查找、快排、TopK等)📝 八股内容(基础知识)(见下图1)✅ 二、面试相关2.1 面试风格⏱️ 面试形式一般是2到3轮技术面+1轮hr面,一般为视频面(也有电话面)。一般一面的面试官,是日后要加入团队的leader(+1);二面的面试官,是交叉团队的leader;三面的面试官,是主管(+2)。🧩 面试流程自我介绍(1~2分钟),项目深挖(核心环节),八股拷打(理论知识),手撕代码题(共享屏幕),反问环节。2.2 项目相关🧩 面试官常问的问题这个项目的问题背景是什么?你想解决什么问题?你的解决方案的动机是什么?你是怎么设计模型的?有没有对比过不同模型?数据是怎么处理的?有没有做特征工程?模型效果如何?用什么指标衡量的?模型有上线吗?上线后发现效果不好有思考是什么原因吗?遇到哪些困难?你是怎么解决的?如果让你重新做一次,你会改进哪里,未来的升级迭代考虑哪些方面?✅ 应对策略项目讲清楚:背景 → 方法 → 实现 → 结果。技术细节要扎实:能讲清楚Loss函数设计、模型结构、输入数据的处理、衡量指标等。2.3 八股相关🧾 高频考点(分类整理)机器学习:- 什么是过拟合?如何防止?- 随机森林,GBDT 和 XGBoost 的区别?- SVM原理?核函数的作用?- Bagging vs Boosting?深度学习:- Transformer结构?为什么比CNN/RNN好?- Dropout的作用?训练和测试阶段的区别?- BatchNorm的计算过程?优点?- BN和LN的区别以及Transformer为什么用LN?- Transformer里的Attention的理解,以及公式里为什么要除以 $$\sqrt{d_k}$$?- 梯度消失/爆炸的原因和解决方案?- 介绍下Transformer的结构?大模型相关:- GPT和BERT的区别?- 大模型应用的位置编码的方式有哪些?知道旋转位置编码(ROPE)吗?- 大模型微调的方式有哪些?LoRA微调的原理及改进?- 大模型用的强化学习的算法有哪些?比如RLHF,PPO,DPO,GRPO?- 了解大模型的RAG,Agent吗?- 知道模型训练和推理加速的方法吗?模型评估:- AUC的含义?如何计算?- Precision和Recall的区别?应用场景?- 为什么不能只看准确率?工程相关:- 如何进行特征工程?- 做特征embedding的方式有哪些,以及适用的场景?- 模型调参的方法有哪些?- 分布式训练怎么做?2.4 HR相关👥 HR面常见问题- 自我介绍(简短有力)- 为什么选择我们公司?- 你的优缺点是什么?- 未来3年的发展规划?- 你最大的挑战和收获?- 你如何看待加班文化?- 你有其他的Offer吗?- 你愿意来某某base地工作吗?- 你有女朋友/男朋友吗?✅ 回答技巧- 真诚表达,不套路;- 结合公司业务、技术氛围、成长机会来谈;- 展示你的热情和长期意愿;- 对加班文化可以表示理解并接受合理范围内的高强度工作。- 展示自己的offer实力(如有),不卑不亢,有礼有节。- 展示自己对base地满意的点,列举其好处。✅ 三、问题反问在面试最后,通常会有“你有什么想问我的吗?”这个环节,这是展示主动性和思考深度的好机会。3.1常见优质反问问题✅ 关于团队目前团队的技术栈主要是什么?团队目前的重点方向是什么?我将加入哪个项目组?主要负责什么模块?团队主要是偏重业务还是预研方向?团队的base地在哪里?✅ 关于成长公司对新人的成长支持有哪些?有无mentor制度?是否鼓励参加技术会议?✅ 关于业务该岗位的核心产出指标是什么?当前业务面临的最大挑战是什么?✅ 关于流程后续还有几轮面试?预计什么时候出结果?🎯 总结:通关路线图(见下图2)📣 最后一句话算法岗竞争激烈,但只要你足够努力、方法得当、心态稳定,offer终将属于你!祝各位纵有千古,横有八荒,前途似锦,来日方长!祝大家早日斩获心仪Offer!🎉
牛客刘北:mark总结得很全
点赞 评论 收藏
分享
05-10 17:19
已编辑
门头沟学院 Java
25秋招WXG后端面经
是做java的一个组,从来没想到能面过一面- 手撕:子集,最长公共字串- 撕出个贼弱智的bug,修好了后面都没咋问了二面- 讲下实习项目- 讲下SQL优化思路- 讲下TCP拥塞控制- 进程线程协程区别- 进程通信用过那些,线程通信有啥- 讲下Kafka为什么选这个- 还知道其他的消息队列吗- Java GC咋做的- Raft机制- 直接扔了三道题跑了……- 基础计算器- 30w员工公平选出10w- 逆序对面委会- 全程深度八股+SD非常硬核- 说一说url到相应的得过程,从客户端到服务端每个都详细讲一讲- TLS如何保证数据加密的- TLS服务端做了什么- 如何验证的身份- 如果设计个web server你会怎么设计(先讲了下 springmvc如何去处理的)- tcp你如何处理呢(说了一下多路复用)- 多路复用你如何来做,不是原理(讲了下java NIO模型),讲一下java selector 返回什么东西- TCP粘包你如何处理(这段应该想问c++ webserver,但是我不会c++啊,xjb讲)- TCP优化你能想到什么,除了多路复用(tcp_reuse + syn cookie)- 讲一下如果让你设计一个jvm,如何管理内存的申请和释放,不要那么复杂的结构(这段是真拷打麻了,说了空闲列表,但是讲的不完美)- 申请,释放过程是怎样的,用的什么数据结构,复杂度是多少,有没有更简单的结构(这段感觉越说越烂)- 不是OS内存是进程里面如何设计- 如果一个大对象如何分配内存- raft如何保证一致性的- 你要如何设计kv数据库(没设计过,先从CAP再到内存磁盘选型)- 集群如何保证一致性- 内存和磁盘的优势- 内存里数据结构是啥,磁盘里数据结构是啥(只会说redis)- 客户端如何与节点进行交互的,节点与节点之间如何同步(这里redis和raft都说了下)- 现在有一篇文章,我有很多关键词,如何判断这些文章里有没有这些关键词(分词+hashset)- 分词算法有那些,复杂度是多少(真不会)- 那现在不让你分词,你有什么办法(字典树,感觉说的也不行)- 生产者消费者模型你怎么实现,用什么数据结构- 如果用数组是不是很浪费(动态扩缩容)- 如果这个消息包非常大,你如何处理- 事务的特性与MySQL如何实现- 1h,无反问
点赞 评论 收藏
分享
超好用的面试技巧
海投的一大弊端是,当hr给你打电话邀面的时候,你根本不记得你投了哪个岗位,很有可能出现两个招聘软件,同一岗位重复投递的情况。以及,有些岗位可能根本不招人了但依旧没有下架,所以在投递的时候,除了观察面试官在线状态外,还要看一下岗位的截止时间(实习僧app可看)、面试官的回复情况(boss直聘氪金可看)。如果只是对你“已读不回”那多半是自己的问题,但如果对所有人“一视同仁”,那就放弃这个岗位吧。我们可以搞个简历(面试)投递表,来记录自己投了哪个公司的哪个岗位,是否面邀与面试通过率。and,面试记得录音,不复盘的面试是无效面试,你根本不知道自己哪里答得好,哪里答得差。喜欢帅哥美女是人之常情,面试官自然也不例外。在面试表现差不多的情况下,面试官更倾向于选养眼的实习生,所以面试前最好化个妆。对于刚开始面试,或很久没有面试的人来说,当同一天恰巧有多场面试的时候,最好提前和hr说好,把小公司的面试安排到上午,大公司的面试安排到下午。这样,有了上午的练手,下午的面试通过率会更高。面多了就会发现,其实有一些常见题型,必须提前写稿背熟(画思维导图也行),你眼中的答得好不一定加分,但答得不好一定扣分。在简历里或在自我介绍、项目环节提前埋点或留白,引导面试官提问你,比如你申请新媒体运营相关岗位,面试官大概率会对你做出15w浏览的爆款内容感兴趣。因为面试官可能没看你简历,所以咱在自我介绍时,要按照简历顺序,讲一下简历的精华部分,在哪几个厂有过目标岗位的相关实习,每个厂做什么项目,先说产品形态/功能是什么样,再说背景、目标、动作、结果。个人评价要体现和面试岗位的匹配性。短视频讲究开头吸睛,自我介绍更是如此,面试官对你的第一印象很可能决定成败。自我介绍不要平铺直叙,比如“我从学历,实习,项目经历,自我评价四个方面进行介绍。首先是学历,我叫xx,xx专业大几,来自xx大学……”网上都是这种清一色的自我介绍模板,虽然按照star法则来,但还是好奇怪,缺乏亮点。咱们可以这样来,把自己的经历分成几个阶段,向面试官展示自己在各阶段打怪升级的过程,先学习了啥,后做了啥,比如:“面试官老师您好,我是xx,来自xx大学,xx专业大几,下面我来从三个阶段向您介绍一下我:第一个阶段是数据探索期,出于对数据的好奇,我去主动学习了SQL与数据看板的制作,在课上也学到了Python和R。刚开始我在用VLOOKUP函数和数据透视表处理数据,后面也接到了抖音矩阵号分析case,结合数据与业务制定策略……老师您看下您对哪个阶段感兴趣,我来给您着重讲一下。”你看,结尾这句“老师您看下您对哪个阶段感兴趣,我来给您着重讲一下。”不就是把主动权拉回到自身,在引导面试官顺着你的节奏来吗?如果单纯按照面试官一问一答,更像是应激反应,因为你保不准面试官会问啥。同样,项目也不是讲得越详细越好,很可能面试官对你之前的业务方向压根不了解,你的“大白话”面试官不一定能听懂,或者让他觉得信息过载,觉得你不会抓重点。一面面试官通常是你的mentor,面试官不是专业面试官,是抽空来面你的,他可能因为开会迟到。工作需要注意力高度集中,已经够忙了,倘若这时你再让他费力地听你讲话,他有可能不耐烦。记得密切关注面试官的表情变化,当觉察到对方脸上出现不耐烦的态度时,挑重点尽快收尾才是明智之举。不要在面试中暴露自己的任何缺点,自谦和老实有时反而是件坏事。如果面试官问你缺点的时候,可以说一些无伤大雅的缺点,比如“学生思维”“完美主义”。如果你敢说自己“拖延症患者”“multi-tasking能力差”,凉的概率更大。到了反问环节,不要“没问题”,这样面试官可能会觉得你是“海王”,或对面试的公司根本不感兴趣,问一下“面试官对实习生的能力期待”“面试官对业务线的理解”也好嘛,就算面过了,也能快速判断公司是否适合自己。  
勇敢的牛肉丸面试中:真不容易,能看到产品这些非技术的干货
点赞 评论 收藏
分享
05-19 15:02
已编辑
西安交通大学 机械工程师
大疆结构实习生一面凉经
公司大疆创新岗位:机械结构设计实习生 base深圳面试时间 5月12日  时长40分钟5月19得到HR反馈 未通过,复盘了一下感觉要么是问题没答好,要么是PPT设置部分不够清晰导致有歧义,准备重新去一个一个验证之前的问题第一部分:自我介绍第二部分:展示PPT并且面试官会随时提问感兴趣的点,然后提问相关原理和专业课,例如1 项目用到线传动,怎么解决交缠打结问题2 这个拓扑优化的工况是什么样,为什么优化成这样,原理是什么,除了加厚材料还有什么办法去改进:因为材料主要是受拉压,所以在保留了材料两端承受拉应力和应力3 项目提到摩擦轮发射机构,摩擦轮的影响因素都有些什么(粗糙度,软硬度)最终对发射的影响是什么(影响弹丸初速)4 提到链传动设计,链传动优势优缺点是啥,除此之外其他的传动优缺点(这个华为也考到了,简直是热门命题)5 这个机器人样机考虑怎么减重:一 尝试对现有材料拓扑优化,比如一体式的拓扑优化主框架;二 优化计算,减少电机冗余;三 尝试一个动力元件执行多个运动目标第三部分反问:实习生会当正式员工使吗:不会把实习生放有交付压力的部门,主要还是做预研整体感觉比特斯拉好一些,好歹这个专业课提问有章可循并且常用。特斯拉给我考一堆材料力学知识和振动知识之前时间线如下:二月底投递简历,打过rm初筛很快过了,好像是一周内有性格测评通过之后HR打电话了解情况,听说我六月才能出去就先给我挂了,让我看五月份还招不招,招再给HR会电话。经历O和耀两大坎之后五一结束就给HR回电话,三天得回了有10个电话一条短信都没打通,第三天快放弃的时候给我HR打回来了(天无绝人之路)    
查看12道真题和解析
点赞 评论 收藏
分享
emo一天,但还是回馈一下牛客:滴滴前端研发部一面
好伤心,面试官结束时候评价是整体还行,等视频挂了5分钟内收到感谢信这前后反差,我只好安慰面试官尊重自己,但是谁来安慰我呀面试上来开始问八股1,说说 url到浏览器页面显示整个过程2,http 缓存3,流式输出,你知道哪些可以实现的方式?AI生成到前端你觉得采用那种方式?3,css 设置的元素要不断旋转,怎么写(不到一分钟面试官问我是否会,不会可以换一题,那我还行想到用什么,那换一题吧)keyfram 里面设transform;animation 里面应用设定的spin;代码如下:(linear 匀速转,infinite 无限循环)@keyframes spin {    from {        transform: rotate(0deg);    }    to {        transform: rotate(360deg);    }}.spinner {    animation: spin 2s linear infinite; /*持续2秒 转一圈*/}4,输出解释题:function app() {    const [count, setCount] = useState(0)    useEffect(() => {        const interval = setInterval(() => {            console.log('useEffect')            setCount(count + 1)        }, 1000)    }, [])     return (        <div>            <h1>{count}</h1>        </div>     )}会输出打印什么?h1位置 count 显示什么那当然每隔1s 打印出0,页面显示也是05,好的,你分析他原来想要实现什么效果,然后现在这段代码怎么改能实现预期效果,你有几种方式?【用useRef 、手写update函数,设定count 动态依赖项,使用setTimeout 递归(但是容易爆栈)】我当时有点懵,当然是没考虑到function app() {    const [count, setCount] = useState(0)    const countRef = useRef(count);    useEffect(() => {        setInterval(() => {            console.log('count', count);            // setCount(count + 1)            setCount(countRef.current + 1)        }, 1000)    },[])    useEffect(() => {       const update = () => {        console.log('update')        setCount(count + 1)         setTimeout(update, 1000) // 递归调用, 会导致栈溢出       }        update(); // 初始调用    })    useEffect(() => {        const interval = setInterval(() => {            console.log('useEffect')            setCount(count + 1)        }, 1000)    }, [count]) // 动态依赖,但是频繁定时器创建和销毁    return (        <div>            <h1>{count}</h1>        </div>     )}7,输出顺序是什么?function app() {        promise.resolve().then(() => {        console.log('promise')    })    useEffect(() => {        console.log('useEffect')    }, [count])    useLayoutEffect(() => {        console.log('useLayoutEffect')    }, [count])    return (        <div>            <h1>{count}</h1>        </div>     )}输出:useLayoutEffect promiseuseEffectuseLayoutEffect(dom更新后,相当浏览器刷新渲染了,立即同步执行)、promise (微任务,在同步执行完清空微任务队列)useEffect(异步执行,事件循环后执行)期间问了useLayoutEffect 和 useEffect 区别8,看下面输出什么?(弱弱心想:不能出点其他的吗?)function Foo() {    getName = function () {        alert(1);    }    return this;}Foo.getName = function () {    alert(2);}Foo.prototype.getName = function () {    alert(3);}var getName = function () {    alert(4);}function getName() { alert(5); }Foo.getName(); // 2getName(); // 4Foo().getName(); // 1getName(); // 1new Foo.getName(); // 2new Foo().getName(); // 3new new Foo().getName(); // 3看这是金典js输出,但是解释起来费劲呀,解释不断问我:变量提升到哪,函数提升到哪,可以修改一下代码看看提升到的位置,new 关键字分析一下,作为普通函数调用还是.... (问下牛友,这种题目去那找能复习到呀)9,写个sum函数实现下面输出:console.log(sum(1,2,3).sumOf()); // 6console.log(sum(1,4)(2).sumOf()); // 7console.log(sum(1)(2)(3)(4).sumOf()); // 10function sum(...args) {    let total = args.reduce((acc,cur) => acc + cur,0);    function innerSum(...newArgs) {        total += newArgs.reduce((acc,cur) => acc + cur,0);        return innerSum;    }    innerSum.sumOf = () => total;    return innerSum;}console.log(sum(1,2,3).sumOf()); // 6console.log(sum(1,4)(2).sumOf()); // 7console.log(sum(1)(2)(3)(4).sumOf()); // 10
滴滴一面333人在聊 查看9道真题和解析
点赞 评论 收藏
分享
聊聊最近的面试体验
现在找实习大多有个比较恶心的点,就是实习之前要求你有实习。我个人觉得实习的作用无非几点1. 帮你简历过筛。如果你有对口实习对口项目经历,这无疑会提升你在简历筛选时候的竞争力。对于我来说,我有一段中厂实习经历,简历也投了几个大厂,基本都给了面试机会。2. 让你跟面试官有聊的点。如果你有实习,面试官大概率在你自我介绍之后,聊聊实习。你可以跟面试官聊聊实习的背景,难点,从实习聊到你想引导面试官询问的八股。3. 实习可以让你体验真实的生产环境。一方面你可以看公司的文档和项目,另一方面你可以学到处理一些问题的逻辑,这些是潜移默化的提升你的实力。我最近也一直在面试一些大厂。所以想聊聊面试的时候大概率会问些什么。1. 首先你SQL能力肯定要过关,我几乎场场面试的结束部分,都会刷一道SQL,体型就那么几种,多练练保持手感问题就不大。2. 八股得熟悉。我经常被问到的有数仓建模和spark的八股。其他的组件也要熟悉,不过我目前还没遇到过,如果以后遇到我会更新。spark最好深入进去,因为百度的面试官就深入拷打了spark底层的原理,面试官也给了比较好的评价。数仓建模的八股,比如维度建模,数仓分层好处,每层的作用概念这些肯定得知道。3. 项目得提前准备好。你得提前准备,知道项目的背景(我们为啥做这个项目,有什么价值吗),项目的流程(比如ods到dwd到dws到ads层),项目的一些重要指标,以及你在这个项目里面干了什么事。你最好准备上你的项目的难点/亮点,面试官可能会问。4. 最后到了反问环节。我一般会问面试官对这次面试的评价(我猜测,如果对你比较满意,会给你一个正面的评价,如果对你无感或者表现不是很满意,就说不能透露),然后问一下后续还有几次面试,面试流程几天可以知道等等....目前就这些,我以后想到别的再回来更新。不过,还没找实习的兄弟,以及正在找实习的兄弟,一定要坚持。我觉得实习就是与面试官的一个双向选择的过程,与面试官对话的过程。我们可能和某些面试官很聊的来,性格相合,面试官自然对你有好感想要你。当然也会遇到和自己很合不得来的人,这种的话就无需理会,别放在心上就好。所以海投海面就很重要,我们说不定就遇到跟自己话很投机的面试官呢,对吧。所以,加油,坚持,兄弟们。
独醉忧我:大二的度爷,前途无量啊!
查看8道真题和解析
点赞 评论 收藏
分享
05-10 17:11
门头沟学院 Java
25秋招字节后端面经
秋招过去了好久,是时候更新一下面经了一面- 拷打实习项目- 实习项目亮点- 拷打项目(折磨)- 为什么要用两级缓存- caffine淘汰策略(没看过)- 为什么本地用top50,我说是top30行不行,(预估,预热)- 如果千万级是什么方案- 为什么要牺牲一致性(CAP, BASE扯了下)- 1000w用户需要怎么做- 定时器放在那里- 怎么做数据预热- 这里battle了巨久,感觉没有回答想要的点- springboot启动流程- java bean是什么(这里我说get set方法,他说应该从IOC里面说)- IOC是什么- IOC有什么好处(说了解耦,他问还有呢,从使用者和组件开发者的角度,我是真不会啊)- 又扯了巨久,真不会回答- 手撕:验证搜索二叉树二面- 项目拷打吧20min,其实感觉也没讲明白- raft协议- raft能应对脑裂吗- ES原理- 有实际运维部署经验吗)无- 时间久远其他问题记不得了- 手撕:交叉链表三面- 拷打项目- 说说SQL的执行的整个流程- 为什么要用逻辑执行计划- 你知道MySQL优化器会优化那些内容吗- innodb引擎索引结构- 二级索引结构- b+树和b树有什么优势- 为什么二级索引叶子节点要放主键值而不是一个指针)说的页分裂不知道对不对- 知道最左匹配原则吗- undo log, redo log, bin log都说说- redo log写到内存里如何保证能刷盘(3个参数)- 事务两阶段提交的过程- MVCC实现的原理- 进程和线程的区别- 用户态和内核态的区别- 怎么从用户态切换到内核态- 在编程的时候如何减少用户态到内核态的切换)这里纯在乱答- 协程有了解吗- 说下多路IO复用- 讲下4次挥手)捏马的有点忘了状态名字了,说了两遍才说懂- 为什么time_wait是2MSL为什么不是1MSL,为什么不是3MSL- fork知道吗,fork返回的值是什么- a = fork() b=fork() print(a,b) 这个最后产生几个进程,打印的内容是什么- 了解哪些排序- 快排复杂度推导一下- 归并的复杂度推导一下- 链表做归并的时候需要从中间节点断开,这个相比归并数组会影响时间复杂度吗- LRU思路讲下- 手撕:链表排序- 一共一个半小时,强度有点大,有些推导性质的东西确实不记得了,只记得结论了。还得下来多看下
点赞 评论 收藏
分享
玩命加载中
牛客网
牛客网在线编程
牛客网题解
牛客企业服务