- 面试题
一:java为什么跨平台
首先java是在jvm上运行的,比如windows系统的jdk,linux系统的jdk等或者其他的系统的jdk,java运行依赖jdk内的jvm,处处运行。
二 :你能保证GC执行吗?
不能,虽然你可以调用 System.gc() 或者 Runtime.gc(),但是没有办法保证 GC的执行。
三 :Synchronized和lock有什么区别?
1、 首先synchronized是Java内置关键字,在JVM层面,Lock是个Java类;
2、 synchronized 可以给类、方法、代码块加锁;而 lock 只能给代码块加锁。
3、 synchronized 不需要手动获取锁和释放锁,使用简单,发生异常会自动释放锁,不会造成死锁;而 lock 需要自己加锁和释放锁,如果使用不当没有 unLock()去释放锁就会造成死锁。
4. 通过 Lock 可以知道有没有成功获取锁,而 synchronized 却无法办到。
四:抽象类必须要有抽象方法吗?
不是必须。抽象类可以没有抽象方法。
五:arryList的扩容机制?
ArrayList扩容发生在add()方法调用的时候, 调用ensureCapacityInternal()来扩容的, 通过方法calculateCapacity(elementData, minCapacity)获取需要扩容的长度:ensureExplicitCapacity方法可以判断是否需要扩容:ArrayList扩容的关键方法grow(): 获取到ArrayList中elementData数组的内存空间长度 扩容至原来的1.5倍
六:Mysql的调优?
- 业务层面的优化
- 代码层面
- S ql层面
> 在表中建立索引,优先考虑where、group by使用到的字段。
> 尽量避免使用select *,返回无用的字段会降低查询效率。
- 硬件层优