1、多线程中的忙循环是什么?
忙循环就是用循环让一个县城等待,不像传统wait()、sleep()或yield()它们都放弃了CPU控制,而忙循环不会放弃CPU,一直运行空循环,目的为了保留CPU缓存。
2、HashCode的作用?
主要用于快速查找,如HashMap结构中,用于定位键值对的位置。两个对象相同,则hashcode一定相同,而hashcode相同的对象则不一定相同,相当于放在同一个框里。
3、HashMap中是否任何对象都可以作为key,用户自定义对象作为key有没有要求?
可以。但是key对象必须是不可变对象,不然在Entry
被插入Map中后。再改变key值,会导致当前的key值与hash值不符合,即与数组索引不符,将无法被查到。
4、Runable接口和Callable接口的区别?
Runable接口中的run()方法的返回值是void,只会执行run()方法中的代码。
Callable接口中的call()方法是有返回值的,是一个泛型,和Future、FutureTask配合可以用来获取异步执行的结果。
5、简述Spring Bean的生命周期?
实例化、初始化、使用、销毁
6、Redis的高并发及快速的原因?
(1)Redis是纯内存数据库,都是简单的存取操作,线程占用时间多,时间花费集中在IO上,所以读取速度快。
(2)Redis用的非阻塞IO,IO多路复用,使用单线程来轮训述符,将数据库的开、关、读、写都转换成了事件,减少线程切换时上下文的切换和竞争。
(3)Redis采用了单线程的模型,保证了每个操作的原子性,减少线程切换时上下文的切换和竞争。
(4)Redis全程使用hash结构,读取数度快,还有特殊的数据结构,对数据存储进行了优化。
(5)Redis采用自己实现的事件分离,效率比较高,内部采用非阻塞的执行方式,吞吐能力比较大。
7、Dubbo的底层实现原理和机制?
(1)高性能和透明化的RPC远程服务调用方案
(2)SOA服务治理方案
(3)Dubbo缺省协议采用单一连接和NIO异步通讯,适合于小数据量大并发的微服务调用,以及服务消费者机器数远大于服务提供者机器数的情况
8、Dubbo在安全机制方面如何解决的?
Dubbo通过Token令牌防止用户绕过注册中心直连,然后在注册中心上管理授权。Dubbo还提供服务黑白名单,来控制服务所控制允许的调用方。
9、SpringBoot的特性?
(1)创建独立的Spring项目
(2)内置Tomcat和Jetty容器
(3)提供一个starter POMs来简化Maven配置
(4)提供了一系列大型项目常见的非功能特性,如安全、指标、健康检测、外部配置等
(5)完全没有代码生成和xml配置文件
10、web.xml文件的作用是什么?
web.xml文件爱你是WEB应用程序配置文件,存放了jsp、servlet、Listener、Filter、错误页面、安全约束等信息。
11、在Hibernate中实现数据检索的5种方式?
(1)对象导航(关联级别的数据检索)
(2)HQL语句
(3)SQL语句
(4)QBC语句
(5)通过OID加载(get()/load())
12、事物并发访问的问题?
(1)脏读:一个事物读到了另一个事物未提交的数据
(2)不可重复读:在同一个事物中,多次查询的结果不一致(由update引起的)
(3)虚读/幻读:在同一个事物中,多次查询的结果不一致(由insert引起的)
13、Spring中的自动装配有哪些限制?
(1)如果使用了构造器注入或者setter注入,那么将覆盖自动装箱的依赖关系
(2)基本数据类型的值、字符串字面量、类字面量无法使用自动装箱来注入
(3)优先虑使用显示的装配来进行更精确的依赖注入而不是自动装配
14、使用标签库有什么好处?
(1)分离JSP也买年的内容逻辑,简化Web开发
(2)开发者可以创建自定义标签库来封装逻辑和显示逻辑
(3)标签库具有很好的可移植性、可维护性和可重用性
(4)避免了对Scriptlet(小脚本)的使用
15、简述拦截器的工作原理?
在Struts2中,可以实现Interceptor接口或继承Abstractlnterceptor类,来自定义拦截器。
(1)接口中的init()方法,在拦截器被创建后立即被调用,它在拦截器的生命周期内只被调用一次,可以在该方法中对相关资源进行必要的初始化。
(2)每拦截一个请求,intercept()方法就会调用一次
(3)destory()方法将在拦截器销毁之前被调用
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。