线程生命周期html
一、新建状态(New):新建立了一个线程对象。 java
二、就绪状态(Runnable):线程对象建立后,其余线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。算法
三、运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。 spring
四、阻塞状态(Blocked):阻塞状态是线程由于某种缘由放弃CPU使用权,暂时中止运行。直到线程进入就绪状态,才有机会转到运行状态。阻塞的状况分三种: sql
(一)、等待阻塞:运行的线程执行wait()方法,JVM会把该线程放入等待池中。(wait会释放持有的锁) 数据库
(二)、同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池中。 设计模式
(三)、其余阻塞:运行的线程执行sleep()或join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程从新转入就绪状态。(注意,sleep是不会释放持有的锁) 五、死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。 数组
wait()释放锁,sleep()不释放锁安全
Java有没有goto?有,是个关键字,没启用
bash
&;和&&的区别? 按位与 ;逻辑与
Math.round(),四舍五入,无论正数负数,想象有1个横轴,只要恰好一半或者过半就等于右边那个数
switch 是否能做用在byte 上,是否能做用在long 上,是否能做用在String上?
能做用在char,byte,short,int 及其对应的包装类型,还有String,enum
数组有没有length()方法?String有没有length()方法?数组有length属性,String有方法
两个对象值相同(x.equals(y) == true),但却可有不一样的hash code,这句话对不对?
不对,要看equals()是否被重写
当一个对象被看成参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里究竟是值传递仍是引用传递?
值传递,这个值就是对象的地址
String和StringBuilder、StringBuffer的区别?
String:适用于少许的字符串操做的状况 StringBuilder:适用于单线程下在字符缓冲区进行大量操做的状况 StringBuffer:适用多线程下在字符缓冲区进行大量操做的状况 StringBuilder线程不安全是由于它有不少方法没有使用synchronized关键字
描述一下JVM加载class文件的原理机制?
1.装载:查找和导入class文件;
2.链接:
(1)检查:检查载入的class文件数据的正确性;
(2)准备:为类的静态变量分配存储空间;
(3)解析:将符号引用转换成直接引用(这一步是可选的)
3.初始化:初始化静态变量,静态代码块。
char 型变量中能不能存贮一个中文汉字,为何?
char标识的变量就是用来表示unicode编码的字符的,unicode表示的字符占2个字节,因此char也是2个字节,0~65535,unicode编码的字符是包含部分文字的
静态嵌套类(Static Nested Class)和内部类(Inner Class)的不一样?
Static Nested Class是被声明为静态(static)的内部类,它能够不依赖于外部类实例被实例化。而一般的内部类须要在外部类实例化后才能实例化
Java 中会存在内存泄漏吗,请简单描述
内存泄漏指对象再也不使用,可是引用一直存在致使GC没有回收的状况,不是内存溢出
1.对象再也不使用,引用还在,没有置为null
2.经过外部类实例化内部类后,外部类再也不使用,内部类仍然使用,由于内部类实例依赖外部类而存在,因此外部类实例不会被释放
3.HashSet添加的对象s,若是这个对象参与hash计算的一些值被改变,contains(s)将会返回null,也删除不了
抽象的(abstract)方法 是否可同时是 静态的(static),是否可同时是 本地方法(native),是否可同时被 synchronized修饰?
如何实现对象克隆?
1.浅拷贝,拷贝当前对象,不拷贝引用 当前对象及其引用对象实现Cloneable,重写Object的clone()方法(调用super.clone())
2.深拷贝,连同引用的对象一块儿拷贝
a.当前对象及其引用对象实现Cloneable,重写Object的clone()方法(调用super.clone()),在当前对象的clone()方法中调用引用对象的clone()方法,嵌套调用
b.当前对象及其引用对象实现Serializable,串行化,先将对象以流的形式输出,再读取
String s = new String("xyz");建立了几个字符串对象?
2个,过程为先去String池看看有没有,有的话后续只new一个对象在堆空间,返回引用,若是没有,则先在String池建立1个对象,再去堆new一个对象
这篇讲得贼清楚 https://www.cnblogs.com/dangzhenjiuhao/p/4585389.html
抽象类是否可继承具体类(concrete class)?能够
内部类没法改变外部类的值,尽管操做看起来像改变了
static int a=5;
int b=6;
public void ain() {
Test t=new Test();
t.test(new AccChkResultDao() {
@Override
public int insert(AccChkResult entity) {
a=6;
return 0;
}
});
}
public static void main(String[] args) {
System.out.println(a);//结果为5
}复制代码
内部类能够引用它的包含类(外部类)的成员吗?有没有什么限制?
1.静态内部类 只能访问外部类静态成员
2.成员内部类 可访问外部类全部成员
3.局部内部类(定义在方法中) 外部类成员随便访问,局部变量要求必须被final修饰才可访问
4.匿名内部类 局部内部类的简写形式
Java 中的final关键字有哪些用法?
1.修饰变量 2.修饰方法的参数 3.修饰方法或类,不能被重写或被继承
怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串?
eg: String s1 = "你好"; String s2 = new String(s1.getBytes("GB2312"), "ISO-8859-1");
在java中是最经常使用的获取系统时间的方法,它返回的是1970年1月1日0点到如今通过的毫秒数
何时用断言(assert)?
开发调试时;assert(a > 0); // throws an AssertionError if a <= 0 ,须要在VM options中填写 -ea 才能启用
try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行,何时被执行,在return前仍是后?
先执行finally再返回,若是finally中有return,则会返回finally中return的结果
List、Set、Map是否继承自Collection接口?
List和Set是,Map是和Collection同等地位
Collection和Collections的区别?
Collection是接口,Collections是操做集合的工具类
List、Map、Set三个接口存取元素时,各有什么特色?
1.List按索引添加 2.Map按键值对添加 3.Set添加元素方式也是add(),能够add()重复值,可是存储不进去(Collection家族都是add(e),Map家族都是put(k,v))
TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?
两个集合在添加元素后都会排序 1.TreeSet要求存放的对象所属的类必须实现Comparable接口,进而实现compareTo(E e),当插入元素时会回调该方法比较元素的大小。 2.TreeMap要求存放的键值对映射的键必须实现Comparable接口从而根据键对元素进行排序 3.Collections.sort(List<T> a,Comparator<? super T> b), 至关于有个单独的类实现Comparator<? super T>,重写compare(T1 t1,T2 t2),告诉Collections比较方法
线程的sleep()方法和yield()方法有什么区别?
① sleep()方法给其余线程运行机会时不考虑线程的优先级,所以会给低优先级的线程以运行的机会;yield()方法只会给相同优先级或更高优先级的线程以运行的机会; ② 线程执行sleep()方法后转入阻塞(blocked)状态,而执行yield()方法后转入就绪(ready)状态; ③ sleep()方法声明抛出InterruptedException,而yield()方法没有声明任何异常; ④ sleep()方法比yield()方法(跟操做系统CPU调度相关)具备更好的可移植性
当一个线程进入一个对象的synchronized方法A以后,其它线程是否可进入此对象的synchronized方法B?
不能,同步方法拿的是对象锁,不过能够访问其它非同步方法
同步和异步的解释?zhidao.baidu.com/question/20…
什么是线程池?www.jianshu.com/p/916ea29ff…
说白了就是预先建立一些线程放在容器中供使用,减小了用时建立以及销毁的过程,由于对象建立和销毁是比较耗资源的操做
简述synchronized 和java.util.concurrent.locks.Lock的异同?
synchronized的功能Lock都能实现,Lock更强大,前者会自动释放锁,后者必须在finally中手动释放锁
使用JDBC操做数据库时,如何提高读取数据的性能?如何提高更新数据的性能?
1.指定返回记录数(空间换时间策略)2.多个语句放在PreparedStatement中处理
事务的ACID是指什么?
JDBC中如何进行事务处理?
Connection的setAutoCommit()可设置是否自动提交
JDBC可否处理Blob和Clob?cloud.tencent.com/developer/a…
得到一个类的类对象有哪些方式?
如何经过反射建立对象?
简述一下你了解的设计模式
对象建立型:1.原型模式;2.工厂模式;3.抽象工厂模式;4.单例模式;5.生成器
接口适配型:1.适配器模式;2.桥接模式;3.外观模式
对象去耦型:1.中介者模式;2.观察者模式
抽象集合型:1.组合模式;2.迭代器模式
行为扩展型:1.访问者模式;2.装饰器模式;3.责任链模式
算法封装型:1.模版方法模式;2.策略模式;3.命令模式
性能与对象访问型:1.享元模式;2.代理模式
对象状态型:1.备忘录模式
spring中的FactoryBean接口就是工厂模式;aop处理部分有用到适配器模式(保证接口兼容),代理模式(用一个中间对象控制原对象);观察者模式(1个对象的状态改变了通知其它对象改变状态)
JSP有哪些内置对象?做用分别是什么?
9大内置对象:www.cnblogs.com/yuyu666/p/9…
讲解JSP中的四种做用域? blog.csdn.net/tanyunlong_…
JSP和Servlet是什么关系?
jsp编译之后就是servlet,本质同样
如何实现JSP或Servlet的单线程模式? blog.csdn.net/xichengqc/a…
实现会话跟踪的技术有哪些?blog.csdn.net/qq_33098039…
MyBatis中使用<code>#</code>和<code>$</code>书写占位符有什么区别?
#将传入的数据都当成一个字符串,会对传入的数据自动加上引号;
$将传入的数据直接显示生成在SQL中,较易遭受sql攻击
Spring中Bean的做用域有哪些?
1.singleton 2.prototype 3.request 4.session 5.globalsession
抽象类必定要有抽象方法吗?不须要
抽象类能被final继承吗?
不能,定义抽象类就是用来继承的,子类必须实现抽象类的抽象方法
字节流和字符流的区别?
字节流是8位一个单位,字符流是16位一个单位
BIO,NIO,AIO的区别?
HashMap线程不安全,后者线程安全(官方不推荐使用)。前者key,value能够为null,多线程状况可以使用ConcurrentHashMap代替
HashMap实现原理?
HashSet原理?底层就是操做HashMap,不容许有重复值