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). 线程不安全,效率高

3). 加载因子1,扩容是原容量的 0.5倍+1。初始值是10,如 ArrayList的容量为10,一次扩容后是容量为16
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,它的实现与设计模式中的工厂模式和修饰器模式类似。

Class

初始大小

加载因子

扩容倍数

底层实现

是否线程安全

同步方式

ArrayList

10

1

1.5倍

Object数组

线程不安全

-

Vector

10

1

2倍

Object数组

线程安全

synchronized

HashSet

16

0.75f

2倍

HashMap<E,Object>

线程不安全

-

HashMap

16

0.75f

2倍

Map.Entry

线程不安全

-

Hashtable

11

0.75f

2倍+1

Hashtable.Entry数组

线程安全

synchronized

java中高级面试题整理相关推荐

  1. Java中高级面试题 -- 数十道题含答案

    Java中高级面试题 一.基础知识: 1)集合类:List和Set比较,各自的子类比较(ArrayList,Vector,LinkedList:HashSet,TreeSet): ArrayList ...

  2. Java经典面试题整理及答案详解(八)

    简介: Java经典面试题第八节来啦!本节面试题包含了进程.线程.Object类.虚拟内存等相关内容,希望大家多多练习,早日拿下心仪offer- 了解更多: Java经典面试题整理及答案详解(一) J ...

  3. Java经典面试题整理及答案详解(三)

    简介: 以下是某同学面试时,面试官问到的问题,关于面试题答案可以参考以下内容- 上一篇:Java经典面试题整理及答案详解(二) Java面试真题第三弹接住!相信通过前两节的学习,大家对于Java多少有 ...

  4. Java中高级面试题部分答案解析

    Java中高级面试题部分答案解析 List和Set比较,各自的子类比较 对比一:Arraylist与LinkedList的比较 1.ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦 ...

  5. Java中高级面试题部分答案解析(3)

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 知音专栏 Javaweb练手项目源码下载 常用设计模式完整系列篇 100套IT类简历模板下 ...

  6. Java常见面试题整理(一)

    Java常见面试题整理 字符串 抽象类与接口 集合 多线程 锁 IO流 网络编程 字符串 主要包括String.StringBuffer和StringBuilder基本概念 String相关知识 St ...

  7. Java工程师笔试题整理[校招篇]

    Java工程师笔试题整理[校招篇] 阿里巴巴 2016 阿里巴巴2016研发工程师笔试题(四) 阿里巴巴2016研发工程师笔试题(三) 阿里巴巴2016研发工程师笔试题(二) 2015 阿里巴巴201 ...

  8. java面试题(java中高级面试题及答案)

    [java面试题] 1.Collections.sort排序内部原理 在Java6Arrays.sort()和Collections.sort()中使用MergeSort,在Java7中,内部实现被T ...

  9. 100道Java中高级面试题汇总+详细拆解

    出自:Java面试题精选 1-10期 [10期]Redis 面试常见问答 [09期]说说hashCode() 和 equals() 之间的关系? [08期]说说Object类下面有几种方法呢? [07 ...

最新文章

  1. Open3D 三维点云读取可视化、下采样、去除离群点、地面提取
  2. mysql 字符编码
  3. Python常见面试题:TCP 协议中的三次握手与四次挥手相关概念详解
  4. Cobertura和Sonar 5.1的问题
  5. 浅谈项目开发现状(一)
  6. 使用smo算法编写svm对CIFAR-10数据分类
  7. MySQL (13)---查询数据
  8. flutter html 加载_Flutter开发:项目加载本地html文件的步骤
  9. Java操作Linuxshell并且获取返回值
  10. 编写Spark SQL查询程序
  11. 【pandas教程】索引操作
  12. android 刷机文件怎么打开,安卓手机怎么刷机
  13. 三部曲打造无路由器破解闪讯WiFi共享 经好几个同学验证
  14. 程序员涨工资大多数靠跳槽吗?
  15. 利用谷歌浏览器翻译外文文献 操作记录
  16. 为什么软件系统开发公司不会同意技术入股
  17. 动画《魁拔妖侠传》反思
  18. 干货分享 | 如何搭建一个虚拟展厅虚拟展厅怎么做?
  19. B4:Unity制作Moba类游戏——小兵AI系统
  20. 使用红外传感器和Arduino制作数字转速表测量RPM

热门文章

  1. python 手机号码查询归属地
  2. android编译空间大小,编译Android源码的坑
  3. SDL入门教程(八):1、裁剪精灵图片(Clip Blitting and Sprite Sheets)
  4. 2019-7-9 [JavaSE] String ,StringBuffer,StringBuilder比较 装箱和拆箱 日期类 正则
  5. 闲谈 | 国内AI排名前 8 位的大学,顶起!
  6. 茫茫人海中,一眼选中你!
  7. C#入门03:招牌菜-C#高级功能
  8. kafka消费者停止2天offset元信息丢失
  9. 浏览器打开微信里的连接
  10. echarts vue组件封装