摘要:
String s = new String(“abc”); 可能产生几个对象? 答:可能产生1和或者2个对象。 通过new String()方法产生的字符串,先会在常量池去查询有木有abc的对象,如果没有,则会在常量池里开辟一个空间,存放abc,紧接着,将拷贝此对象到堆中产生一个对象。 如果有,则堆 阅读全文
摘要:
答:String是不可变的对象,每次给String赋值的时候,实际上是产生了一个新的String对象,然后指针指向新的内存地址。 StringBuffer是线程安全的,里面方法使用synchronized修饰,在并发下不会出现异常。 StringBuilder是线程不安全的,但是速度更快。 阅读全文
摘要:
数据库事物特性是什么?事务的隔离级别有哪些? 答:数据库事务特性分为ACID A 原子性:在一个事务中有多个操作,要么同时提交成功,要么同时失败回滚 C 一致性:在一个事务执行的前后,必须保证从一个一致状态变成另一个一致状态,举个例子:A和B两者的钱一共400元,A和B来回转账,不论转几次,怎么转最 阅读全文
摘要:
ClassLoader的分类有哪些?加载顺序是什么?类加载的顺序又是什么? 答:ClassLoader分为4种:Jvm类加载器(BootstarpClassLoader),Jvm扩展类加载器(extClassLoader),系统类加载器(SystemClassLoader),自定义类加载器(AppC 阅读全文
摘要:
ConcurrentHashMap为什么比HashTable性能好? 答:ConcurrentHashMap里使用了Segment分段锁+HashEntry,而HashTable用的是Syncronized锁全部,所有线程竞争一把锁。 Segment分段锁继承ReentrantLock,在并发数高的 阅读全文
摘要:
线程和进程有什么区别? 答:进程是系统资源分配的最小单位,线程是程序执行的最小单位。 一个进程可以包含多个线程 多个线程可以访问同一进程下的共享变量、静态变量 进程拥有独立的地址空间,包含堆栈等 阅读全文