Java技术场景面试实战:项目中遇到的性能优化、缓存设计与异常处理

📅 2026/7/13 21:04:30
Java技术场景面试实战:项目中遇到的性能优化、缓存设计与异常处理
1. 单点登录这块怎么实现的1.1 概述单点登录的英文名叫做Single Sign On简称SSO,只需要登录一次就可以访问所有信任的应用系统在以前的时候一般我们就单系统所有的功能都在同一个系统上。单体系统的session共享登录将用户信息保存在Session对象中如果在Session对象中能查到说明已经登录如果在Session对象中查不到说明没登录或者已经退出了登录注销退出登录从Session中删除用户的信息后来我们为了合理利用资源和降低耦合性于是把单系统拆分成多个子系统。多系统即可能有多个Tomcat而Session是依赖当前系统的Tomcat所以系统A的Session和系统B的Session是不共享的。解决系统之间Session不共享问题有一下几种方案Tomcat集群Session全局复制最多支持5台tomcat不推荐使用JWT(常见)Oauth2CAS自己实现redistoken1.2 JWT解决单点登录现在有一个微服务的简单架构如图使用jwt解决单点登录的流程如下1.3 回答要点1先解释什么是单点登录单点登录的英文名叫做Single Sign On简称SSO2介绍自己项目中涉及到的单点登录即使没涉及过也可以说实现的思路3介绍单点登录的解决方案以JWT为例I. 用户访问其他系统会在网关判断token是否有效II. 如果token无效则会返回401认证失败前端跳转到登录页面III. 用户发送登录请求返回浏览器一个token浏览器把token保存到cookieIV. 再去访问其他服务的时候都需要携带token由网关统一验证后路由到目标服务2. 权限认证是如何实现的2.1 概述后台的管理系统更注重权限控制最常见的就是RBAC模型来指导实现权限RBAC(Role-Based Access Control)基于角色的访问控制3个基础部分组成用户、角色、权限具体实现5张表用户表、角色表、权限表、用户角色中间表、角色权限中间表7张表用户表、角色表、权限表、菜单表、用户角色中间表、角色权限中间表、权限菜单中间表2.2 RBAC权限模型最常见的5张表的关系数据流转张三具有什么权限呢流程张三登录系统--- 查询张三拥有的角色列表---再根据角色查询拥有的权限在实际的开发中也会使用权限框架完成权限功能的实现并且设置多种粒度常见的框架有Apache shiroSpring security推荐2.3 回答要点后台管理系统的开发经验介绍RBAC权限模型5张表的关系用户、角色、权限权限框架Spring security3. 上传数据的安全性你们怎么控制3.1 概述这里的安全性主要说的是浏览器访问后台需要经过网络传输有可能会出现安全的问题解决方案使用非对称加密或对称加密给前端一个公钥让他把数据加密后传到后台后台负责解密后处理数据3.2 对称加密文件加密和解密使用相同的密钥即加密密钥也可以用作解密密钥数据发信方将明文和加密密钥一起经过特殊的加密算法处理后使其变成复杂的加密密文发送出去收信方收到密文后若想解读出原文则需要使用加密时用的密钥以及相同加密算法的逆算法对密文进行解密才能使其回复成可读明文。在对称加密算法中使用的密钥只有一个收发双方都使用这个密钥这就需要解密方事先知道加密密钥。优点:对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。缺点:没有非对称加密安全.用途一般用于保存用户手机号、身份证等敏感但能解密的信息。常见的对称加密算法有:AES、DES、3DES、Blowfish、IDEA、RC4、RC5、RC6、HS2563.3 非对称加密两个密钥公开密钥publickey和私有密钥公有密钥加密私有密钥解密解释: 同时生成两把密钥私钥和公钥私钥隐秘保存公钥可以下发给信任客户端.加密与解密:私钥加密持有公钥才可以解密公钥加密持有私钥才可解密签名:私钥签名, 持有公钥进行验证是否被篡改过.优点:非对称加密与对称加密相比其安全性更好缺点:非对称加密的缺点是加密和解密花费时间长、速度慢只适合对少量数据进行加密。用途一般用于签名和认证。私钥服务器保存, 用来加密, 公钥客户拿着用于对于令牌或者签名的解密或者校验使用.常见的非对称加密算法有RSA、DSA数字签名用、ECC移动设备用、RS256 (采用SHA-256 的 RSA 签名)3.4 回答要点使用非对称加密或对称加密给前端一个公钥让他把数据加密后传到后台后台解密后处理数据传输的数据很大建议使用对称加密不过不能保存敏感信息传输的数据较小要求安全性高建议采用非对称加密4. 你负责项目的时候遇到了哪些比较棘手的问题这个面试题主要考察的是你是否有过开发经验是否是核心开发人员有4个方面可以回答只要挑出一个回答就行了1设计模式工厂模式策略责任链模式回答思路1什么背景技术问题2过程解决问题的过程3最终落地方案举例①介绍登录业务一开始没有用设计模式所有的登录方式都柔和在一个业务类中不过发现需求经常改②登录方式经常会增加或更换每次都要修改业务层代码所以经过我的设计使用了工厂设计模式和策略模式解决了经常修改业务层代码的问题③详细介绍一下工厂模式和策略模式参考前面设计模式的课程2线上BUGCPU飙高内存泄漏线程死锁....回答方式参考上面的回答思路具体问题可以参考前面的课程JVM和多线程相关的面试题3调优慢接口慢SQL缓存方案4组件封装分布式锁接口幂等分布式事务支付通用5. 你们项目中日志怎么采集的5.1 问题1为什么要采集日志日志是定位系统问题的重要手段可以根据日志信息快速定位系统中的问题2采集日志的方式有哪些?ELK即Elasticsearch、Logstash和Kibana三个软件的首字母常规采集按天保存到一个日志文件5.2 ELK基本架构ELK即Elasticsearch、Logstash和Kibana三个开源软件的缩写Elasticsearch Elasticsearch 全文搜索和分析引擎对大容量的数据进行接近实时的存储、搜索和分析操作。Logstash Logstash是一个数据收集引擎它可以动态的从各种数据源搜集数据并对数据进行过滤、分析和统一格式等操作并将输出结果存储到指定位置上Kibana Kibana是一个数据分析和可视化平台通常与Elasticsearch配合使用用于对其中的数据进行搜索、分析并且以统计图标的形式展示。5.3 参考回答我们搭建了ELK日志采集系统介绍ELK的三个组件Elasticsearch是全文搜索分析引擎可以对数据存储、搜索、分析Logstash是一个数据收集引擎可以动态收集数据可以对数据进行过滤、分析将数据存储到指定的位置Kibana是一个数据分析和可视化平台配合Elasticsearch对数据进行搜索分析图表化展示6. 查看日志的命令目前采集日志的方式按天保存到一个日志文件也可以在logback配置文件中设置日志的目录和名字需要掌握的Linux中的日志实时监控日志的变化实时监控某一个日志文件的变化tail -f xx.log实时监控日志最后100行日志 tail –n 100 -f xx.log按照行号查询查询日志尾部最后100行日志tail – n 100 xx.log查询日志头部开始100行日志head –n 100 xx.log查询某一个日志行号区间cat -n xx.log | tail -n 100 | head -n 100 (查询100行至200行的日志)按照关键字找日志的信息查询日志文件中包含debug的日志行号cat -n xx.log | grep debug按照日期查询sed -n /2023-05-18 14:22:31.070/,/ 2023-05-18 14:27:14.158/p’xx.log日志太多处理方式分页查询日志信息cat -n xx.log |grep debug | more筛选过滤以后输出到一个文件cat -n xx.log | grep debug debug.txt7. 生产问题怎么排查已经上线的bug排查的思路1先分析日志通常在业务中都会有日志的记录或者查看系统日志或者查看日志文件然后定位问题2远程debug(通常公司的正式环境生产环境是不允许远程debug的。一般远程debug都是公司的测试环境方便调试代码)远程debug配置前提条件远程的代码和本地的代码要保持一致1.远程代码需要配置启动参数把项目打包放到服务器后启动项目的参数java -jar -agentlib:jdwptransportdt_socket,servery,suspendn,address5005 project-1.0-SNAPSHOT.jar-agentlib:jdwp是通知JVM使用(java debug wire protocol)来运行调试环境transportdt_socket调试数据的传送方式servery参数是指是否支持在server模式suspendn是否在调试客户端建立起来后再执行JVM。address5005调试端口设置为5005其它端口也可以2.idea中设置远程debug找到idea中的 Edit Configurations...3.idea中启动debug4.访问远程服务器在本地代码中打断点既可调试8. 怎么快速定位系统的瓶颈压测性能测试项目上线之前测评系统的压力压测目的给出系统当前的性能状况定位系统性能瓶颈或潜在性能瓶颈指标响应时间、 QPS、并发数、吞吐量、 CPU利用率、内存使用率、磁盘IO、错误率压测工具LoadRunner、Apache Jmeter …后端工程师根据压测的结果进行解决或调优接口慢、代码报错、并发达不到要求…监控工具、链路追踪工具项目上线之后监控监控工具PrometheusGrafana链路追踪工具skywalking、Zipkin线上诊断工具Arthas(阿尔萨斯)项目上线之后监控、排查官网https://arthas.aliyun.com/核心功能