这,为啥挂呀
点赞 1

相关推荐

一面一面没什么好说的,在面试前半个小时会给你三道题,很好做,基本都是牛客中等难度。正是面试自我介绍等等,题目记不清了,基本就是数据库,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分,主要是语文不太好,概括了两次才过....
查看5道真题和解析
点赞 评论 收藏
分享
1. 自我介绍2. 项目经历3. 为什么选择前端?为什么对前端感兴趣?4. 两个项目都是Vue,为什么都是用的Vue没有用React5. 我说我开始学习vue的时候是不知道vue和react的区别的,追问那你现在知道了吗。T_T还是不知道6. 讲一下JS的事件循环7. 有了解过 requestAnimationFrame() 这个方法吗  或者 requestIdleCallback() 8. 说一下防抖和节流之间的差异9. 除了在服务器请求用到防抖和节流,还有哪些地方会用到 输入框防抖 滚动条节流10. 是不是可以在输入框失焦的时候去进行搜索?感觉不像是问题11. 怎么实现虚拟滚动的12. 虚拟滚动分成两种类型 一种是虚拟列表有固定高度,另一种是不定高度,渲染之后才能拿到高度的话,如何实现虚拟滚动? 13. 虚拟滚动时 假设滑得很快的话这部分怎么处理14. 为什么要使用animate.css这个动画库?动画实现的方式有几种?你为什么选择这个?15. Emit加状态共享实现数据共享同步和websocket实现数据同步,这个具体是怎么实现的websocket具体实现真的没怎么看......瞎编了一个http2.0被揪着问http2.0是双向通信吗,感觉不是。。16. Websocket可以实现双向通信,如何异常情况进行做处理?比如网络波动的使用断连了,或者是如何去监听说你服务端还仍在等待的一些状态?17. 怎么保证websocket的在线连接(应该是想问我这个)18. 就例如说可能在发送服务端的时候网络波动,导致我这个请求没发出去,然后你的 ACK 可能没返回,但是我可能连接了,然后这个请求就是丢失了吗?还有没有另外一种方式说可以让这个网络抖动的一个情况,然后这个请求还能再发送到服务端?19. 持久化使用的localStorage,那么了解过indexedDB吗20. 讲一下SessionStorage和LocalStorage的差异,为什么要使用LocalStorage?21. 其他框架没有了解过吗22. 假设说你让你学习一个技术框架的话,你要怎么去学习呢?就可能就你可能进来一个公司,然后发现这些可能跟你过往的一些经验可能不是很匹配。就可能你之前都没有接触过,然后让你怎么就让你去接触一些新的一些东西?你要怎么去学23. 有用过一些AI工具吗24. 因为前面我讲到红宝书。然后你有了解过,红宝书就里面有写一些什么设计模式,就你在项目里面是会用到这些设计模式的,你可以简单举一两个例子。是设计模式代码的一个组织方式,就是一些测试模式,类似于工厂模式或者是一些结构,就工厂模式,然后有什么单例或者是什么观察者、订阅者,乱七八糟,就这些几个模式有用到吗?  md没看到这呢,这玩意。反问:* 如何回答Vue的响应式原理* 应该在面试里面有哪些改进的方向呢最早的几场面试之一,答得超级烂,慢慢总结经验
查看25道真题和解析
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务