数美时代架构岗校招面经(已拿offer)

一面
一面没什么好说的,在面试前半个小时会给你三道题,很好做,基本都是牛客中等难度。
正是面试自我介绍等等,题目记不清了,基本就是数据库,Go的基础,还有一些架构方向的知识,比如分布式什么的,基本上基础知识扎实就能过
二面
二面开始上强度了,HR人很好,和我说二面会有场景题,上来就场景题,难度非常大,而且很开放
1.问:假如某某模块的api访问耗时突然上涨,你应该如何排查
答:从系统架构出发,排查调用路径上可能存在的每个服务节点的耗时情况,定位到关键节点后通过time计时器查看高耗时位置代码,再逐一排查问题情况
面:可以但不对,应当要保证客户的api调用时长不能再恶化,你应该避免使用可能会增加调用耗时的方式
deepseek:
立即验证问题并检查现有监控(非侵入性,耗时接近0)
· 为什么做:确认问题是否真实,并快速定位大致方向(如资源瓶颈或错误激增),避免误判。
· 操作步骤:
    · 访问已有的监控系统(如Prometheus、Grafana、CloudWatch、APM工具如New Relic或ELK),查看API响应时间的趋势图。重点关注异常点发生的时间段。
    · 检查关键资源指标:CPU使用率、内存占用、磁盘I/O、网络延迟。如果资源利用率突然饱和(如CPU峰值或内存OOM),可能指向代码问题或外部依赖。
    · 查看错误率和请求量:API 4xx/5xx错误是否增加?如果有高错误率,可能上游服务故障或传入参数问题导致重试和延迟。
· 保证不增加耗时:监控数据通常是预聚合和缓存的,查询操作是只读且轻量,对系统性能影响可忽略。
2.分析现有日志(低风险,耗时微增但可控)
· 为什么做:日志中可能记录慢查询、异常堆栈或超时信息,帮助定位具体模块。
· 操作步骤:
    · 使用日志查询工具(如Kibana、Splunk或grep命令)搜索模块的访问日志,过滤耗时超过阈值(如 >500ms)的请求。关键词:slow request、timeout或错误码。
    · 聚焦时间范围:匹配监控中的异常时段,分析请求路径、参数和响应状态。
    · 检查依赖日志:如果模块依赖数据库或缓存(如MySQL慢查询日志、Redis监控),查询这些日志看是否有超时或锁争用。
· 保证不增加耗时:
    · 使用日志采样(如只查询1%的请求)减少开销,如果系统支持,直接读取已缓存的日志索引。
    · 避免启用debug级别日志或添加新日志输出,以免增加I/O压力。
3.检查外部依赖和第三方服务(只读查询)
· 为什么做:API耗时上涨常由下游服务(如数据库、缓存、RPC调用)变慢引起,排查时应优先排除外部因素。
· 操作步骤:
    · 查询依赖监控:检查数据库(如MySQL SHOW PROCESSLIST,但避免在高峰期运行)、缓存(如Redis INFO命令)或外部API(如第三方服务状态页)的性能指标。关注响应时间、连接池使用率和错误率。
    · 网络诊断:使用ping或traceroute(但需谨慎)到依赖服务端点,检测延迟或丢包。优先依赖网络监控工具(如Cloud Provider VPC流日志)的数据,避免主动探测生产环境。
    · 关键问题源:数据库慢查询(如缺少索引)、缓存击穿或限流、第三方服务降级。
· 保证不增加耗时:所有命令基于只读查询(如SHOW PROCESSLIST非阻塞),或在备机执行。若需网络探测,使用监控历史数据而非实时工具。
4.审查近期变更(无需运行时代码修改)
· 为什么做:50%的故障由部署或配置变更引起。排查时检查变更记录,而非直接回滚(回滚可能增加风险)。
· 操作步骤:
    · 检查发布系统(如GitLab、Jenkins)的部署记录:是否有新版本、配置更新(如超时时间调整)或功能开关启用?重点关注变更时间和API耗时上涨的相关性。
    · 对比环境:如果有预发布环境,验证相同请求是否耗时正常,但不在生产复制测试。
    · 依赖变更:外部服务或SDK版本升级是否发生?
· 保证不增加耗时:操作仅涉及元数据查询,不影响运行时性能。
5.临时控制影响(预防恶化,但不直接减少耗时)
· 虽然排查时不修复问题,但可采取措施防止耗时进一步上升:
    · 限流降级:如果API网关支持(如Nginx、Spring Cloud Gateway),调整现有限流规则(如降低QPS阈值),但避免新增规则导致额外计算。
    · 流量采样:在负载均衡层(如HAProxy)启用请求采样,减少低优先级请求的影响。
    · 回滚决策:如果变更审查指向特定部署,考虑在低峰期回滚,但回滚操作本身可能短暂增加负载,需评估风险。
6.关键原则和注意事项
· 不增加耗时的核心策略:
    · 只读优先:所有操作只查询现有数据(监控、日志、配置),不写入或修改系统。
    · 避免高开销工具:禁用profiler(如Java Flight Recorder)、调试器或tracing工具(如Jaeger),它们可能增加CPU开销。
    · 资源约束:在容器化环境(如K8s),查询日志和监控不消耗额外资源;物理机避免运行top或vmstat,而是看历史数据。
    · 团队协作:优先询问SRE或监控团队获取数据,减少直接登录服务器。
· 如果问题根源不明:收集必要信息后(如日志片段和监控截图),在测试环境复现问题,避免在生产深入诊断。
· 后续修复:定位原因后(如数据库索引缺失),修复应在低峰期进行,并添加监控告警以防复发。
2.面:假如现在有类似抢购之类的情况发生,怎样保证系统稳定性
(这个网上答案很多,去找一下看吧,关键在于我只考虑了数据库的使用和配置,不够全面,面试官强调了还可以使用服务器的内存结构提供多级缓冲)
3.这里记不太清了,大概是如果系统出现宕机之类的情况怎么办,我的回答是通过htop,日志查询定位时间等方式解决,面试觉得还可以
HRD面
一般来说不用写这个的,但是这家公司的HRD面比较难,HR和我说通过率大概在20%左右,主要考查你对他们公司业务的掌握情况,性格和学习热情等,所以大家要注意一下,多问问HR关于这方面可能会考察的知识,最好去他们官网,看一下他们业务的api手册(里面有这个api需要的参数),还有一些不常见业务的理解、
面试方式是做题,会给你三道业务题,让你口述或者直接写,会有语文的概括信息题,异常数值的敏感性,常见业务的理解等,最后HR给的review大概是拿了70-80分,主要是语文不太好,概括了两次才过....#牛客AI配图神器#
全部评论
佬签了么
点赞 回复 分享
发布于 2025-06-09 18:25 山西

相关推荐

不愿透露姓名的神秘牛友
2025-11-12 15:11
已编辑
点赞 评论 收藏
分享
2025-11-28 19:29
中国传媒大学 运营
我是某211大四的赵某某,专业计算机,平时就是个爱打游戏的咸鱼,大二时GPA才2.5,项目零蛋,竞赛没参加过。现在想想,那时候我要是继续躺平,毕业估计得去小公司搬砖。但从大二下学期开始,我用了7个月时间,从零基础到拿大厂算法实习offer,过程像场马拉松,累到吐血,但也值了。一切从大二下学期末开始。那是2024年5月,期末考砸了,我爸妈打电话问我未来规划,我支支吾吾说“还没想好”。其实我当时天天在宿舍打《原神》,简历上啥都没有。室友小刘已经在准备ACM竞赛了,他看我这样,说:“老赵,你再不行动,春招就凉了。”我表面笑嘻嘻,内心慌了。回家暑假,我窝在房间刷牛客网,看到那些“算法岗面经”帖,越看越急。第一个月(6月):深度自省+入门刷题。我决定先祛魅自己:我不是天才,得从基础补。方法论第一步:评估现状。用Excel做了个表格,列出我的弱点:数据结构不懂、算法不会、英语烂。每天花2小时看《算法导论》电子版,边看边记笔记。笔记不是死记,是画思维导图:比如二叉树,从定义到遍历,用笔画出来,贴墙上。晚上刷LeetCode easy题,一天5道。起初我一道题都解不出,卡在两数之和上,熬夜查资料,凌晨3点才睡。深度经历:有天刷到一道题,debug了4小时没过,我砸了键盘,哭了半小时。爸妈以为我失恋了,我说:“我跟算法谈恋爱,谈崩了。”方法论在这里:别海刷,精刷。选牛客的“算法入门专题”,每题不只写代码,还写为什么这个时间复杂度,空间怎么优。结果一个月刷了150道easy,GPA拉不起来了,但算法基础稳了。第二个月(7月):项目实战+工具辅助。光刷题没用,得有项目。方法论第二步:从小项目起步,量化输出。我选了Kaggle的Titanic数据集,从头学Pandas和Sklearn。深度故事:我下载数据集后,第一天就卡在数据清洗,NaN值处理不会,上网搜教程,抄了半天代码跑通。项目做完,我写报告: “使用随机森林模型,准确率85%,通过GridSearch调参,提升3%。”但简历上写得太平淡,投了5家小公司,全拒。转机在7月底,我在牛客搜“项目经历怎么写”,看到有人推荐工具。我下载了泡泡小程序的AiCV简历王,导入我的项目描述,它一键优化成算法岗JD更适合的版本,帮我加关键词如“特征工程”“交叉验证”。改完投一家中厂,三天后面试通知来了。虽然一面挂了(问了SVM原理,我蒙了),但这是我第一次进面,兴奋得一宿没睡。第三个月(8月):竞赛洗礼+心态调整。暑假结束,回学校报了个ACM校赛。方法论第三步:实战模拟,记录失败。深度经历:第一次模拟赛,我队友两个大神,我负责简单题,结果一道签到题WA了10次,队友黑脸。我赛后复盘,每题写“错因+优化”,比如“没考虑边界case,下次加test”。一个月模拟了8场,排名从倒数到中游。心态崩过一次:校赛当天,电脑蓝屏,重启后时间不够,我直接退赛,躲宿舍抽烟。室友拉我出去喝酒,我说:“我真不行。”他安慰:“谁不是从挂开始?”方法论加深:用Notion建“失败日志”,每挂一次记教训。结果秋招前,我ACM拿了校三等奖,简历多一行亮眼经历。第四个月(9月):海投+面经积累。开学大三上,我开始海投。方法论第四步:定制简历,分类投递。牛客上下载面经合集,分公司整理:字节爱问动态规划,阿里重系统设计。深度故事:投了100份,拒信80封。有天收到字节拒信,我在食堂哭了,饭都没吃。女朋友(现在前了)安慰我:“再试试。”我咬牙改简历,用AiCV扫描JD,匹配度从50%到85%。投字节算法实习,二天通知。面试过程:一面两道medium题,我刷过类似,过了;二面问项目,我背报告,面试官追问“为什么选随机森林”,我答“树多抗过拟合”;三面leader聊规划,我说“想从实习学起”。offer到手那天,我在宿舍跳了床。第五到第七个月(10-12月):实习深化+迭代方法。进大厂后,祛魅开始了。组里卷王多,我小透明一个。第一周负责数据预处理,leader说“代码太慢,重写”。我熬夜学Spark,优化后时延降50%。方法论第五步:实习中迭代,写周报。深度经历:第二个月项目delay,我被批,回家复盘,用STAR写经历:“Situation:海量数据;Task:优化;Action:引入分布式;Result:提升效率,加反思:下次早沟通。”实习结束,简历项目从1到3,量化满满。现在大四,我转正了,工资8k。7个月我从咸鱼到offer,核心方法论:自省评估:表格化弱点,思维导图学基础。精刷实战:刷题+项目,量化输出。失败日志:Notion记教训,迭代心态。定制投递:工具匹配JD,海投分类。实习深化:STAR写经历,周报反思。
实习如何「偷」产出?
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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