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
通常的使用思路:先尝试监控实时日志,看看能不能监控到想要的信息,如果不能则需要查看日志文件,从海量日志信息中找出自己想要的错误信息。
Java 面试常见项目问题回答相关推荐
- java面试常见设计模式
java面试常见设计模式 看这里,动画描述很好 创建型模式 工厂方法模式 目的 结构 场景 优缺点 示例代码 button factory Demo.java: 客户端代码 抽象工厂模式 目的 结构 ...
- java面试常见面试问题_Java面试准备:15个Java面试问题
java面试常见面试问题 并非所有的访谈都将重点放在算法和数据结构上-通常,访谈通常只侧重于您声称是专家的语言或技术.在此类访谈中,通常没有任何"陷阱"问题,而是它们要求您利用内存 ...
- java面试解决项目难题_Java转换难题者,不适合工作(或面试)
java面试解决项目难题 一个非常艰苦的面试问题可能是这样的: int i = Integer.MAX_VALUE; i += 0.0f; int j = i; System.out.println( ...
- 太肝了、最近5年183个Java面试问题列表及回答(值得收藏)
作者: YHGui https://github.com/YHGui/easy-job/ 精彩推荐 一百期Java面试题汇总 SpringBoot内容聚合 IntelliJ IDEA内容聚合 Myba ...
- Java面试常见知识点总结
目录 面试常见知识点 静态代码块 代码块 构造方法之间的顺序 interface和abstract的区别 abstract能不能继承interface 反正可不可以 interface 和abstra ...
- 京东深资架构师告诉你Java面试常见知识点(建议收藏)
后端架构师 专注研究 Java 核心技术.架构,不限于分享算法.架构.高并发.多线程.JVM.Spring Boot.Maven.分布式.Spring Cloud +Docker+k8s.Dubbo. ...
- 自动装箱自动拆箱java,自动装箱?拆箱?==问题?详解java面试常见的一个问题...
1:前言 相信大家都在面试中都被问到过一个问题,这个问题也是近年来面试官刁难人比较常见的一个问题,所以也被大家所熟知了,本质上也很简单,但是也是非常基础的一个题目. Integer a = 100; ...
- Java面试重点项目推荐,吃透15个项目五个offer拿到手软 轻松应对2022春招
项目名称:JeeSite 项目所用技术栈:Spring.Spring MVC.MyBatis.Apache Shiro.Bootstrap UI等 项目简介:JeeSite 是一个 Java EE 企 ...
- Java面试常见算法
在程序员的职业生涯中,算法亦算是一门基础课程,尤其是在面试的时候,很多公司都会让程序员编写一些算法实例,例如快速排序.二叉树查找等等. 本文总结了程序员在代码面试中最常遇到的10大算法类型,想要真正了 ...
最新文章
- Signal和slot的声明和连接
- Java基础之Switch语句
- php远程开机ubuntu,Ubuntu系统远程开机操作实例
- Java wait forever_彻底搞清楚Java并发 (一) 基础
- 解决WebBrowser控件会导致应用程序占用内存居高不下问题
- Java - 自己动手之在线书店(2)
- 循环类里面的每一个属性
- Linux!为何他一人就写出这么强的系统?
- Windows 7 beta 1补充汉化文件
- int、String、char、Array之间的转换,这一篇够了!!!
- Python内置函数一览表
- 什么是实体-联系图(ER图)
- 搭建Ubuntu虚拟机
- BST中序遍历(Iterative)
- 微信支付 postman_支付宝微信刷脸支付系统搭建服务商平台怎么做
- win7家庭版桌面没有计算机图标,Win7 home basic家庭普通版显示桌面图标的方法
- 新加坡国立大学Xinchao Wang老师招收图神经网络方向博士/博后
- arm 2022.10.22
- cv2.cv2.findContours opencv-python
- shell批量替换文本中的多种字符串