当前位置: 首页 > news >正文

Java 面试常见项目问题回答

在这里插入图片描述

之前整理了好几期,我面试时遇到的面试候选人,我是如何我去筛选的,这一期,我们来看下一些 面试常问的业务性的问题

你们公司权限认证是如何实现的?

这其实是个通用性的问题,大部分公司 小型公司,或者中型公司都有权限认证,作为一个开发人员,大家或多或少都应该接触过一切,所以会去问下开发人员是否接触过
如果开发 人员没有接触过,那么就会抱着好奇的角度去问他,如果在此项目的基础上

加上一个 权限认证,你会如果去设计 ?

  • 简单设计
    在这里插入图片描述框架:+ shiro + spring security在这里插入图片描述

  • 详细设计

    • 系统菜单
      在这里插入图片描述

    • 系统角色
      在这里插入图片描述

    • 菜单角色表
      在这里插入图片描述

    • 用户对应的角色
      在这里插入图片描述

    • 用户信息
      在这里插入图片描述

其实说白了,大家可以理解为就是一个 联表的关联查询 ,通过 标识 已经角色关联的id 去进行 权限的 控制 ,最后加入了一张中间表串联起来, 当然还有很多优化的空间

上传数据的安全性你们怎么控制?

对称加密
文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥
在这里插入图片描述
解释: 在对称加密算法中,数据发信方将明文和加密密钥一起经过特殊的加密算法处理后,使其变成复杂的加密密文发送出去,收信方收到密文后,若想解读出原文,则需要使用加密时用的密钥以及相同加密算法的逆算法对密文进行解密,才能使其回复成可读明文。在对称加密算法中,使用的密钥只有一个,收发双方都使用这个密钥,这就需要解密方事先知道加密密钥。

优点: 对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。
缺点: 没有非对称加密安全.
用途: 一般用于保存用户手机号、身份证等敏感但能解密的信息。
常见的对称加密算法有: AES、DES、3DES、Blowfish、IDEA、RC4、RC5、RC6、HS256

非对称加密

两个密钥:公开密钥(publickey)和私有密钥,公有密钥加密,私有密钥解密在这里插入图片描述
解释: 同时生成两把密钥:私钥和公钥,私钥隐秘保存,公钥可以下发给信任客户端.
加密与解密:
● 私钥加密,持有公钥才可以解密
● 公钥加密,持有私钥才可解密
签名:
● 私钥签名, 持有公钥进行验证是否被篡改过.
优点: 非对称加密与对称加密相比,其安全性更好;
缺点: 非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
用途: 一般用于签名和认证。私钥服务器保存, 用来加密, 公钥客户拿着用于对于令牌或者签名的解密或者校验使用.
常见的非对称加密算法有: RSA、DSA(数字签名用)、ECC(移动设备用)、RS256 (采用SHA-256 的 RSA 签名)
面试题:上传数据的安全性你们怎么控制?
使用非对称加密(或对称加密),给前端一个公钥让他把数据加密后传到后台,后台负责解密后处理数据

生产问题怎么排查?

1,先分析日志,通常在业务中都会有日志的记录,或者查看系统日志,或者查看日志文件,然后定位问题,解决问题
2,如果问题较为复杂,情况就可能会有多种,可能是代码的问题,也有可能是数据的问题

3,远程debug

特别注意,通常公司的正式环境(生产环境)是不允许远程debug的。

一般远程debug都是公司的测试环境,方便调试代码
实现步骤:

前提条件:远程的代码和本地的代码要保持一致

①:远程代码需要配置启动参数:
把项目打包放到服务器后启动项目的参数:

java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 project-1.0-SNAPSHOT.jar

-agentlib:jdwp 是通知JVM使用(java debug wire protocol)来运行调试环境
transport=dt_socket 调试数据的传送方式
server=y 参数是指是否支持在server模式
suspend=n 是否在调试客户端建立起来后,再执行JVM。
address=5005 调试端口设置为5005,其它端口也可以

②:idea中设置远程debug
找到idea中的 Edit Configurations…在这里插入图片描述
设置远程debug参数在这里插入图片描述
③idea中启动远程debug
在这里插入图片描述
④在本地代码中打断点即可调试远程

怎么快速定位系统的瓶颈?

在这里插入图片描述

Arthas(阿尔萨斯)
Arthas
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。

你们开发业务的流程是什么?

1,产品经理说需求–》后端+前端+测试
2,定接口(后端主导 | 前端主导 | 前后端协调)
● mock测试
3,后端的工作:设计(技术选型,数据库表[原型或PRD])+ 编码;前端 开发页面
● 基于原型或PRD(需求文档)
● 命名规范(参考阿里规约)
● 字段类型(合适类型—>根据存储的内容决定)
● 实体与实体之间的关系(主外键约束)
● 表设计没有不变的
4,部署测试环境
5,接口联调 —>前后端联调
6,测试 --> 提bug 专门的bug管理工具(禅道)
每个人都会开通一个禅道账号 个人修复bug以后,提交为 已解决———》 测试人员回归测试
7,部署正式环境

查看日志的命令

(1)tomcat查看实时日志

● 实时监控日志:

tail -f catalina.out

● 查询最后100行日志:

tail -n 100 -f catalina.out 

(2)doeker容器实时查看日志
● 实时监控日志:

docker logs -f 容器id/容器名称 

● 查询最后100行日志:docker logs -n 100 -f 容器id/容器名称
(3)查看日志文件
● 在test.log文件中搜索”exception”:cat -n test.log | grep “exception”
● 分页查看日志文件:more test.log
● 使用 >xxx.txt 将查询到的日志保存到文件中,可以下载这个文件分析
cat -n test.log |grep “debug” >debug.txt
通常的使用思路:先尝试监控实时日志,看看能不能监控到想要的信息,如果不能则需要查看日志文件,从海量日志信息中找出自己想要的错误信息。

相关文章:

  • Linux【进程理解】
  • c---冒泡排序模拟qsort
  • 浏览器主页被hao123劫持的解决方案
  • C++单例模式实现
  • java八股系列——依赖注入的方式
  • 前端基础知识
  • MDK Keil5 创建Stm32工程-理论篇(这里以Stm32F103Zet6为例)
  • 电路模型和电路定律(2)——“电路分析”
  • C++中的利器——模板
  • Python绘图
  • 【Linux】-- 基本指令
  • 核心 Android 调节音量的过程
  • 微信小程序this指向问题
  • synchronized从入门到踹门
  • 运算符——“Python”
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • [case10]使用RSQL实现端到端的动态查询
  • [译] React v16.8: 含有Hooks的版本
  • Apache的80端口被占用以及访问时报错403
  • go语言学习初探(一)
  • HomeBrew常规使用教程
  • Java编程基础24——递归练习
  • Linux Process Manage
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • SOFAMosn配置模型
  • ViewService——一种保证客户端与服务端同步的方法
  • vue-loader 源码解析系列之 selector
  • vuex 学习笔记 01
  • 利用jquery编写加法运算验证码
  • 树莓派 - 使用须知
  • const的用法,特别是用在函数前面与后面的区别
  • Spring Batch JSON 支持
  • 我们雇佣了一只大猴子...
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (C++17) optional的使用
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (SpringBoot)第二章:Spring创建和使用
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (ZT)薛涌:谈贫说富
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)jQuery 基础
  • (转载)Linux 多线程条件变量同步
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • (状压dp)uva 10817 Headmaster's Headache
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .NET 8.0 中有哪些新的变化?
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .net core使用ef 6
  • .Net Remoting常用部署结构
  • .Net 知识杂记
  • .net/c# memcached 获取所有缓存键(keys)
  • @html.ActionLink的几种参数格式