Java经典面试题整理及答案详解
1.MVC模式中,各个层级的职能划分,哪些功能写在哪块?
所谓的MVC设计模式实际上是一种思想,虽然从整体上来说分为了三层,但实际上里面会划分了许多层。
比如有一个业务的完成,要分很多步,我们是把这些步骤放在业务层还是Servlet中?服务层是可以单独抽取出来的,你的一个项目要充分的考虑到可扩展性,那么绝对需要将业务层单独抽取出来实现RPC调用。
一定要清楚的是控制层不负责任何数据库的操作,控制层只有一个功能就是调用业务层,业务的方法只有一个,如果业务操作要返回多个内容,那么就使用Map集合返回。
控制层一定要处理所有的错误操作,如果不处理,你可以直接选择一个抛出,而后在整个的l文件里面配置一个错误页,这个错误页只要是产生了5xx异常,就自动跳转到一个错误页上显示。
只有把单机的MVC彻底弄清楚后才有可能牵扯到更多实际开发问题,而集的开发也只是一种扩展。
2.SSO的处理流程
所谓单点登录用在什么场景上?
react面试题高级CAS有一个自己的流程。
这个流程最麻烦的就是CAS服务器的配置,因为版本区别很大,所以建议大家使用稳定版本开发。同时
还需要对源代码进行大量的修改与配置才可以得来。
3.关于读、写性能
数据库的读、写分离。此种考虑需要根据你的实际业务需求,不能凭空设计。
有这样一个简单的架构:
信息的汇总表,同时为了保证查询性能,需要增加索引,但这张表平均每1秒要更新1000
次,但这样就和索引产生了冲突,所以定义两张表,一张表作为更新使用,另外一张表在系统安静下来之后进行差异的备份,而后进行数据的保存。
以上是WEB2.0以前的概念,从WEB2.0时代开始,数据量开始暴增,于是你的老板可能就要求你对系统进行大规模的升级,要求保证更新速度,要求保证实时性,要求保证数据的有效性。
如果这个时候的设计还是围绕着传统的关系型数据库展开,那么你的设计一定是失败的。
4.分布式锁
分布式锁指的是在高并发访问的情况下使用的一种技术,所谓的高并发访问就是指多个线程对象,为了保证资源的操作完成性而实现的一种技术,这样的技术可以简单的理解为锁。如果现在多个线程在同一个虚拟机之中,正常编写一个程序,而后这个程序里面产生了若干个线程,并且这些线程要操作同一资源。在这样的情况下,为了保证资源操作的同步最简单的处理模式就是采用synchronized关键字来完成。
但是这样的做法只适合单JVM运行的情况,而如果现在划分到网络上。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论