java中高级面试题整理

java中高级面试题整理

                 问题                                                                                                    答案
java编程如何保证多线程运行安全?线程的安全性问题体现在:
  原子性:一个或者多个操作在 CPU 执行的过程中不被中断的特性
  可见性:一个线程对共享变量的修改,另外一个线程能够立刻看到
  有序性:程序执行的顺序按照代码的先后顺序执行
导致原因
  缓存导致的可见性问题
  线程切换带来的原子性问题
  编译优化带来的有序性问题
解决方法
  1、无状态类   没有任何成员变量的类,就叫无状态类,这种类一定是线程安全的。
  2、volatile  并不能保证类的线程安全性,只能保证类的可见性,最适合一个线程写,多个线程读的情景。
  3、锁和CAS  我们最常使用的保证线程安全的手段,使用synchronized关键字,使用显式锁,使用各种原子变量,修改数据时使用CAS机制等等。
  4、ThreadLocal  ThreadLocal是实现线程封闭的最好方法
map都有哪些实现类1、HashMap
2、HashTable
3、TreeMap
4、ConcurrentHashMap
5、LinkedHashMap
6、weakHashMap
list集合1.ArrayList集合:
  1).底层数据结构是数组,查找快,增删慢。
  2). 线程不安全,效率高
2.Vector集合:
  1) 底层数据结构是数组,查询快,增删慢
  2)线程安全,效率低
3.LinkedList集合:
  1) 底层数据结构是链表,查询慢,增删快
  2)线程不安全,效率高
基本和引用数据的区别1、基本数据类型只有8种
①整数类型:long、int、short、byte
②浮点类型:float、double
③字符类型:char
④布尔类型:boolean
2、引用数据类型
引用数据类型非常多,大致包括:类、 接口类型、 数组类型、 枚举类型、 注解类型、 字符串型
区别:基本数据类型和引用类型的区别主要在于基本数据类型是分配在栈上的,而引用类型是分配在堆上的
ioc依赖注入形式a、接口注入;
b、setter方法注入;
c、构造方法注入;
拦截器注解和配置两种方式1、Spring中继承HandlerInterceptorAdapter或实现HandlerInterceptor接口: 重写preHandler等方法
2、在web.xml中注册拦截器
<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**" /><!--如果不配置或/**,将拦截所有的Controller-->
        <mvc:exclude-mapping path="/static/**" />
        <mvc:exclude-mapping path="/views/**" />
        <bean class="com.zhuanzhuan.zzappqa.annotations.Auth58Interceptor" />
    </mvc:interceptor>
</mvc:interceptors>
spring的核心7大模块1、核心容器(Spring Core)
  核心容器提供Spring框架的基本功能。Spring以bean的方式组织和管理Java应用中的各个组件及其关系。Spring使用BeanFactory来产生和管理Bean,它是工厂模式的实现。BeanFactory使用控制反转(IoC)模式将应用的配置和依赖性规范与实际的应用程序代码分开。
2、应用上下文(Spring Context)
  Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,如JNDI、EJB、电子邮件、国际化、校验和调度功能。
3、Spring面向切面编程(Spring AOP)
  通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring框架中。所以,可以很容易地使 Spring框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
4、JDBC和DAO模块(Spring DAO)
  JDBC、DAO的抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理,和不同数据库供应商所抛出的错误信息。异常层次结构简化了错误处理,并且极大的降低了需要编写的代码数量,比如打开和关闭链接。
5、对象实体映射(Spring ORM)
  Spring框架插入了若干个ORM框架,从而提供了ORM对象的关系工具,其中包括了Hibernate、JDO和 IBatis SQL Map等,所有这些都遵从Spring的通用事物和DAO异常层次结构。
6、Web模块(Spring Web)
  Web上下文模块建立在应用程序上下文模块之上,为基于web的应用程序提供了上下文。所以Spring框架支持与Struts集成,web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
7、MVC模块(Spring Web MVC)
  MVC框架是一个全功能的构建Web应用程序的MVC实现。通过策略接口,MVC框架变成为高度可配置的。MVC容纳了大量视图技术,其中包括JSP、POI等,模型来有JavaBean来构成,存放于m当中,而视图是一个街口,负责实现模型,控制器表示逻辑代码,由c的事情。Spring框架的功能可以用在任何J2EE服务器当中,大多数功能也适用于不受管理的环境。Spring的核心要点就是支持不绑定到特定J2EE服务的可重用业务和数据的访问的对象,毫无疑问这样的对象可以在不同的J2EE环境,独立应用程序和测试环境之间重用。
BeanFactory和FactoryBean的区别共同点:都是接口
区别:BeanFactory 以Factory结尾,表示它是一个工厂类,用于管理Bean的一个工厂在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的。
     但对FactoryBean而言,这个Bean不是简单的Bean,而是一个能生产或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式类似。

posted @ 2021-03-06 08:50  My--style  阅读(57)  评论(0)    收藏  举报