企业场景面试题
面试时,在询问一些技术场景问题的时候,通常以如下的问题。这些是每一个项目都需要面对的问题,能够回答这些问题才能够说明有过实际的开发经验,同时从回答种也可以看出我们的真实实力水平👍👍👍
你们项目中单点登录功能是如何实现的?
首先你需要知道的是:单点登录的英文名叫做:Single Sign On(简称SSO),只需要登录一次,就可以访问所有信任的应用系统,常见的解决方法有JWT, Oauth2, CAS等等
回答:
-
因为我们项目是使用的是分布式架构,所以,传统的适用于单体应用的session是不能完成单点登录的,但是我们以前的项目是使用的Session,所以我也就简单概括几句。
-
在之前的项目,因为我们是单系统项目,所以登录,商品,订单,支付等等功能都集成在一个系统中。各个服务的子域名Session是共享的。我们是将用户信息保存在Session对象中。如果在Session对象能够查到,说明已经登录过了,如果在Session对象查找不到,说明已经退出登录或者压根就没有登录。
-
现在由于业务增多了,也为了合理利用资源和降低耦合度,现在的项目的每一个服务都是单独作为一个系统,部署到多台服务器上,就说明了有多个Tomcat,而Session就是依赖当前系统的Tomcat,所以系统A的Session和系统B的Session是不共享的。我们采用的是JWT来实现单点登录功能的。现在有一个微服务的简单架构,如图。
-
首先用户访问其他系统,会在网关判断token是否有效,如果token无效则会返回401(认证失败)前端跳转到登录页面。用户发送登录请求,返回浏览器一个token,浏览器把token保存到cookie,再去访问其他服务的时候,都需要携带cookie数据,由网关拿到cookie中的token统一验证后路由到目标服务
你们项目中的权限认证是怎么实现的?
回答
-
在我们的后台的管理系统,由于更注重权限控制,最常见的就是RBAC模型来指导实现权限,RBAC是由3个基础部分组成的:用户,角色,权限。
-
在我们项目其他地方,比如说前台系统中实现系统权限认证的一种方式是使用Spring Security框架
-
我们会配置身份验证管理器(AuthenticationManager):配置自定义的身份验证逻辑,例如基于数据库的身份验证或第三方身份验证。同时定义特定的URL路径需要进行权限验证,以及不同角色所具有的权限。例如,通过使用
antMatchers
方法,就可以指定某些URL需要特定角色才能访问。 -
使用Spring Security框架实现系统权限认证。当用户访问受保护的资源时,Spring Security会自动进行身份验证和授权检查,确保用户具有足够的权限进行访问。这样,我们可以在项目中实现灵活而安全的权限认证机制。
你负责项目的时候遇到了哪些棘手的问题?
这个面试题主要考察的是,是否有一定的开发经验,是否是核心的开发人员。可以从设计模式,线上BUG,调优,组件封装这几个方面回答。
- 线上BUG
- CPU飙高
- 内存泄漏
- 线程死锁
- 调优
- 慢接口
- 慢SQL
- 设计缓存方案
- 组件封装
- 分布式锁的封装
- 接口幂等
- 分布式事务的封装
- 支付通用
回答
- 我们做的这个XX项目的登录业务,由于时常整合第三方登录,从开始的QQ,微信登录,后面又添加支付宝,微博等等,之前是没有使用设计模式,所有的登录方式都柔和在一个业务类中,后来发现需求经常改。
- 登录方式经常会增加或更换,每次都要修改业务层代码,所以,经过我的设计,使用了工厂设计模式和策略模式,解决了,经常修改业务层代码的问题。
- 然后就是SQL慢接口的问题了。响应得太慢,通过sentinel工具按照业务链路追踪,当时是支付的业务。由于改业务比较复杂,持久层的操作比较多,所以找起来还是比较麻烦。找到之后也是想了好久,后面为这个表添加了额外的索引才得以解决。
你是如何快速定位系统的瓶颈?
回答
- 首先,在我们项目上线之前,我们会给系统做压测。对于一些QPS较低的接口会查找导致响应慢的原因,我们的压测就是为了定位系统的性能瓶颈或者潜在的性能瓶颈
- 我们经常使用的是Apache家里面的Jmeter工具进行的压力测试。
- 同时呢,我们会使用一定的监控工具,链路追踪工具,在项目上线之后进行监控。监控工具我们使用的是Prometheus+Grafana,链路追踪工具我们是使用的是Zipkin。还会使用线上站短工具Arthas(阿尔萨斯)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!