java面试题
常见面试题总结
浮_雲
这个作者很懒,什么都没留下…
展开
-
synchronized和ReentrantLock的区别
synchronized和ReentrantLock的区别ReentrantLock (再入锁)位于java.util.concurrent.locks包和CountDownLatch, FutureTask, Semaphore一样基于AQS实理能够实现比synchronized更细粒度的控制,如控制fairness调用lock()之后,必须调用unlock释放锁性能未必...原创 2019-04-04 13:15:47 · 146 阅读 · 0 评论 -
Spring注解@Resource和@Autowired区别对比
@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。1、共同点两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。2、不同点(1)@Autowired@Autowire...原创 2019-03-14 09:57:13 · 113 阅读 · 0 评论 -
JAVA反射
什么是反射?反射就是动态加载对象,并对对象进行剖析。在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法,这种动态获取信息以及动态调用对象方法的功能成为Java反射机制。反射的基本操作创建一个类,用于演示反射的基本操作,代码如下:package fs;public class Student { private l...原创 2019-03-14 09:48:55 · 355 阅读 · 0 评论 -
泛型中占位符T和?有什么区别?
public static void printColl(ArrayList<?> al){ Iterator<?> it = al.iterator(); while(it.hasNext()) { System.out.prin...原创 2019-03-14 09:44:07 · 528 阅读 · 0 评论 -
spring IOC
spring IOC:即控制反转上层建筑依赖下层建筑,如果要修改下层建筑,那么依赖其所有的上层建筑都需要修改,这种模式是不可维护的依赖注入:含义:把底层类作为参数传递给上层类,实现上层对下层的"控制"依赖注入的方式1.Setter2.Interface3.Constructor4.AnnotationIOC容器的优势1.避免在各处使用new来创建类,并...原创 2019-03-11 22:48:29 · 107 阅读 · 0 评论 -
java内存模型JMM
java内存模型JMM jmm本身是一种抽象概念,实际并不存在,它描述的是一组规则或规范,通过这组规则或规范定义了程序中各个变量(包括实例字段、静态字段、构成数组对象的元素)的访问方式。JMM中主内存 1.存储java实例对象 2.包括成员变量、类信息、常量、静态变量等 3.属于数据共享的区域,多线程并发操作时,会引发线程安全问题JMM中的工作内存...原创 2019-03-11 16:11:05 · 292 阅读 · 0 评论 -
多线程
为什么用线程池有时候系统需要处理非常多的执行时间很短的请求,如果每一个请求开启一个新线程的话,系统就会不断的进行线程的创建与销毁,有时花在线程的创建与销毁的时间比真正线程执行的时间要长。而且当线程数量太多时,线程不一定受得了使用线程池主要是解决以下几个问题:通过用线程池中的线程,来减少每个线程创建和销毁的性能开销对线程进行一些维护管理,比如定是开始、周期执行,并发数控制等等...原创 2019-03-03 22:50:57 · 155 阅读 · 0 评论 -
java内存溢出场景
内存溢出场景1.jvm栈溢出栈里面存的是一些基本类型和方法的引用,如果溢出,说明基本类型空间不够用了public class Test { private int n=1; public void addn(){ n++; addn();//无线循环调用其本身,会导致栈溢出异常,Exception in thread "main" ja...原创 2019-02-26 16:54:35 · 389 阅读 · 0 评论 -
jvm垃圾回收
GC发生在JVM那个部分,有几种GC,他们的算法是什么?GC发生在JVM那个部分?发生在堆(heep)里面。GC是什么?分代收集算法次数上频繁收集Young区 minor GC次数上较少收集Old区 full GC基本不动 Perm区GC算法总体概述1.引用计数法(较难处理循环引用)2.复制算法年轻代使用的minor GC采用的是复制算法(Copy...原创 2019-02-25 11:38:40 · 117 阅读 · 0 评论 -
Mysql什么时候建索引
那些情况需要建索引1.主键自动创建唯一索引2.频繁作为查询条件的字段应该创建索引3.查询中与其他表关联的字段,外键关系建立索引4.单键/组合索引的问题,组合索引性价比更高5.查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度6.查询中统计或分组字段那些情况下不需要建索引1.表记录太少2.经常增删改的表或者字段3.where条件里用不到的字段不需要创...原创 2019-02-25 10:24:59 · 310 阅读 · 0 评论 -
redis持久化
redis持久化-RDB在指定时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot,它恢复时是将快照文件直接读到内存里。1.备份是如何执行的redis会单独创建一个(fork)子进程来持久化,先将数据写到一个临时文件中,待持久化过程结束了,再用这个临时文件去替换上一次持久化好的文件,整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能,如果需要进行大规模的数...原创 2019-02-25 10:08:24 · 115 阅读 · 0 评论 -
spring bean作用域之间有什么区别
在spring中可以在bean元素的scope属性里设置bean的作用域,以决定这个bean是单实例的还是多实例的。 默认情况下,spring只为每一个在ioc容器中声明的bean创建唯一一个实例,整个ioc容器内都能共享该实例;所有后续的getBean()调用和bean引用都将返回这个唯一的bean实例。该作用域称为Singleton,他是所有bean默认作用域。 ...原创 2019-02-24 18:40:59 · 924 阅读 · 0 评论 -
递归与迭代
public class Test { public static void main(String[] args) throws IllegalAccessException { int sum =f(0); System.out.print(sum); } public static int f(int n) th...原创 2019-02-24 18:10:02 · 132 阅读 · 0 评论 -
方法参数传递机制
方法参数传递机制一、形参是基本数据类型传递数据值二、实参是引用类型传递地址值特殊的类型:String、包装类等对象不可变性原创 2019-02-22 17:29:27 · 155 阅读 · 0 评论 -
类初始化和实例初始化
一、类初始化过程1.一个类要创建实例需先加载并初始化该类(1)、main方法下的类需要先加载和初始化 (2)、一个子类初始化需要先初始化他的父类(3)、一个类初始化就是执行<clinit> ()方法 说明: <clinit> ()方法由静态变量显示赋值代码和静态代码块组成,静态变量显示赋值代码和静态代码块从上到下顺序执行,&l...原创 2019-02-22 16:38:37 · 2099 阅读 · 0 评论 -
单例模式
什么是Singleton?singleton:在java中指的是单例设计模式,他是软件开发常用的设计模式之一单:唯一例:实例单例设计模式:即某个类在整个系统中只能有一个实例对象可获取和使用的代码模式 要点一是某个类只有一个实例: 构造器私有化二是它必须自行创建这个实例: 含有一个该类的静态变量来保存这个实例:三是它必须自行向整个系统提供这个实例:...原创 2019-02-21 17:51:43 · 162 阅读 · 0 评论 -
mysql优化相关
一 问:有没有做过mysql优化方面的事情1.查找定位慢查询,并优化2.创建索引:创建合适的索引,我们就可以在索引中查询,查询以后直接找到对应的记录3.分表:当一张表数据比较多或者一张表的某些字段值比较多并且很少使用时采用水平分表或垂直分表来优化4.读写分离:当一台服务器不能满足需求是,采用读写而分离的方式进行集群5.使用redis进行缓存数据库表遵循范式1nf::表...原创 2019-02-19 23:07:30 · 120 阅读 · 0 评论