面试题开发

62. AuthorizingRealm类中重要两个方法是什么?

doGetAuthenticationInfo与doGetAuthorizationInfo


63. 为什么要先认证,后授权?

首先进行认证,目的是确认用户的身份,以便后续的授权过程可以基于正确的用户信息进行。如果没有进行认证,那么授权就没有意义,因为不知道授权给谁。其次,认证可以防止恶意用户通过伪造身份来访问资源。最后,认证可以为后续的审计和监管提供依据。

因此,为了确保安全性,必须先进行认证,然后才能进行授权。


64. Shiro退出机制是什么?

用户请求退出应用程序时,应用程序通过调用Subject对象的logout()方法来提交该请求。

logout()方法首先会执行相应的注销逻辑,如清空Session中的数据、删除RememberMe Cookie等。

然后,logout()方法会跳转到应用程序预定义的退出页面。如果没有指定退出页面,则可以通过配置文件或代码动态指定。

在退出页面中,可以根据具体需求进行处理,例如显示“您已成功退出”等相关提示信息。

需要注意的是,在Shiro中logout()方法只会清除当前用户的认证信息,并不会直接关闭浏览器或终止用户与应用程序的网络连接。因此,为了保障用户信息的安全性,还需要采取其他措施,如实现会话过期、锁屏等功能。


65. Shiro 过滤链的验证方式有哪些?

1.基于 URL 的验证:可以通过配置 URL 模式以及相关的权限或角色信息,来限制用户访问相应的 URL。当用户访问 URL 时,Shiro 会根据配置的权限或角色信息来判断用户是否有访问该 URL 的权限。

2.基于注解的验证:可以在方法上使用 Shiro 的注解来标识该方法需要哪些权限或角色才能访问。当用户访问该方法时,Shiro 会根据注解信息来判断用户是否有访问该方法的权限。

3.基于编程的验证:可以在代码中手动调用 Shiro 的 API 来进行权限验证。这种方式比较灵活,但需要开发者自己编写验证代码,比较麻烦。

4.基于过滤器的验证:可以通过编写自定义的过滤器来进行权限验证。这种方式比较灵活,可以根据具体的需求来实现不同的验证逻辑

66. 可以把条目 /** = user 放在过滤链首条吗?有什么影响?

可以把条目 /** = user 放在过滤链首条,这意味着所有的请求都将会被拦截并且要求用户进行身份验证,从而保护您的应用程序和其它敏感的资源。但是,这样做可能会增加服务器负载和响应时间,因为每个用户都需要进行身份验证。如果资源允许,则建议使用缓存来降低这种影响。此外,在配置过程中还需要注意防止死循环或者配置错误。


67. 为什么开发行业首推Google浏览器来开发?

Google是互联网发展的推动者,是一些列网络标准的制定和主要参与者。所以很多网络标准都是Chrome率先支持。可以说,Google的基因就是互联网。

1谷歌Chrome浏览器界面简洁,清爽干净,性能也是非常好的。

2速度快。相比于猎豹、IE等浏览器,谷歌Chrome浏览器的加载速度可谓第一。由于采用多进程架构,一个站点的加载速度较慢不会拖累对其它站点的访问。

3插件资源丰富。谷歌Chrome浏览器拥有强大的第三方插件库,因此使用起来极其方便。

4支持HTML5全面以及浏览器兼容问题。前端程序员那么喜欢chrome,就是因为兼容起来最简单!而且HTML5和CSS3可以给用户带来高一层次的视觉和体验。

5系统不会崩溃。Chrome的亮点就是其多进程架构,保护浏览器不会因恶意网页和应用软件而崩溃。

6开发者工具。最开始的时候,chrome开发者工具跟IE差不多,也不怎么不好用,不过一次一次的迭代,我现在的chrome开发者工具已经超过firebug了。


68. 什么是设计模式?常用的设计模式有哪些?

设计模式就是经过前任无数次的实践总结出的,设计过程中可以反复使用的,可以解决特定问题的设计方法。

结构型模式(Structural Patterns): 通过识别系统中组件间的简单关系来简化系统的设计。

创建型模式(Creational Patterns): 处理对象的创建,根据实际情况使用合适的方式创建对象。常规的对象创建方式可能会导致设计上的问题,或增加设计的复杂度。创建型模式通过以某种方式控制对象的创建来解决问题。

行为型模式(Behavioral Patterns): 用于识别对象之间常见的交互模式并加以实现,如此,增加了这些交互的灵活性。

【创建型模式(五种):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式

结构型模式(七种):适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式

行为型模式(十一种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式】

69. MySQL和Oracle的对比?

1、Oracle数据库产品是闭源同时也是收费的,MySQL是开源的项目(免费);

2、Oracle是大型数据库,Mysql是中小型数据库;

3、Oracle可以设置用户权限、访问权限、读写权限等,MySQL没有;

4、Oracle有表空间的概念,MySQL没有;

5、Oracle默认不自动提交,需要用户手动提交。Mysql默认是自动提交。

6、Oracle逻辑备份时不锁定数据,且备份的数据是一致的。Mysql逻辑备份时要锁定数据,才能保证备份的数据是一致的,影响业务正常使用。

7、Oracle有各种成熟的性能诊断调优工具,能实现很多自动分析、诊断功能。比如awr、addm、sqltrace、tkproof等;Mysql的诊断调优方法较少,主要有慢查询日志。

8、Oracle容量无限,根据配置决定;而MySQL使用MyISAM存储引擎,最大表尺寸为65536TB。 MySQL数据库的最大有效表尺寸通常是由操作系统对文件大小的限制决定的,而不是由MySQL内部限制决定。

9、Oracle在Linux下的性能,在少量数据时速度低于MySQL,在千万级时速度快于MySQL。

10、Oracle全面,完整,稳定,但一般数据量大,对硬件要求较高 ;而MySQL使用CPU和内存极少,性能很高,但扩展性较差。

11、MySQL处理翻页的SQL语句比较简单,用LIMIT 开始位置, 记录个数。Oracle处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置, 并且只能用ROWNUM<100, 不能用ROWNUM>80。

12、MySQL日期字段分DATE和TIME两种,Oracle日期字段只有DATE,包含年月日时分秒信息,用当前数据库的系统时间为SYSDATE, 精确到秒。


70. 表关联有哪些方式?

1.左关联:以左表为中心,查出左表的全部数据,关联字段值不相等则右表查出的数据显示为空;

select * from school a left join student b on a.sch_id=b.sch_id;

2.右关联:以右表为中心,查出右表的全部数据,关联字段值不相等则左表查出的数据显示为空;

select * from school a right join student b on a.sch_id=b.sch_id;

3.内关联:查出两表关联字段等值的数据

select * from school a inner join student b on a.sch_id=b.sch_id;

4.查出只属于左表的数据

select * from school a left join student b on a.sch_id=b.sch_id where b.st_id is null;

5.查出只属于右表的数据

select * from school a right join student b on a.sch_id=b.sch_id where a.sch_id is null;

6.查出全部数据

select  from school a left join student b on a.sch_id=b.sch_id union select  from school a right join student b on a.sch_id=b.sch_id;

7.查出左表和右表关联不相等的数据

select  from school a left join student b on a.sch_id=b.sch_id where b.st_id is null union select  from school a right join student b on a.sch_id=b.sch_id where a.sch_id is null;


71. 什么是关系型数据库?什么是非关系型数据库?

关系型数据库是指采用了关系模型来组织数据的数据库。简单来说,关系模式就是二维表格模型。

主要代表:SQL Server,Oracle,Mysql,PostgreSQL。

NoSQL非关系型数据库,主要指那些非关系型的、分布式的,且一般不保证ACID的数据存储系统,主要代表MongoDB,Redis、CouchDB。

NoSQL提出了另一种理念,以键值来存储,且结构不稳定,每一个元组都可以有不一样的字段,这种就不会局限于固定的结构,可以减少一些时间和空间的开销。使用这种方式,为了获取用户的不同信息,不需要像关系型数据库中,需要进行多表查询。仅仅需要根据key来取出对应的value值即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值