腾讯二面
因为都是问项目,所以只记一下比较不错的几个项目题
- 怎么保证可以系统同时登陆移动端和pc端,除了维护两个session(通过判断来源)
答:1、我们需要判断Http请求是来自手机端还是电脑端,关键是取得User-Agent的信息,进行筛选判断即可。JAVA-判断请求来自PC端还是手机端
2、多终端登录,只保留一个移动端+PC端同时在线 - 1 怎么保证用户登陆安全,截取了加密后的密码登陆呢?
答:就是用户每次登录时,由服务端生成一个随机密钥对,将公钥返回给前端,私钥保存到服务器,并设置该密钥对的有效期为30分钟(有效时间大家随意),用户登录的时候,要求前端对用户的明文密码进行公钥加密后传给后端,然后后端用私钥对密码进行解密,然后与数据库保存的密码进行匹配,登录成功之后,服务器立即清除这个密钥对。这样即使攻击者拦截到了加密后的密码,并用这个加密后的密码再次伪造登录,也无法成功。
RSA非对称加密
Java后端生成RSA随机密钥对,并实现前端(app和web)使用公钥加密,后端使用私钥解密 - 3、策略者模式优化结算规则,没想过将结算规则写到文件中进行读取么?
答:可以将结算规则抽离出来放入drl文件中,Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件中,使得规则的变更不需要修正代码重启机器就可以立即在线上环境生效。
[Drools]JAVA规则引擎 – Drools