1.字符串的比较
Sting str =null;
//str是null时会报错
system.out.println(str.equals.("test"));
//优化1
system.out.println("test".equals.(str));
//优化2
system.out.println(Object.equals.(str,b:"test"));
2.线程通信
生产者、消费者问题
//一般用wait()、notify()、notifyALL()来写;
//可以用semaphore、Google的guava类库monitor
3.ArrayList和linkedList的区别
实现randomaccess 用for循环遍历,如果无则用it迭代器
linklist不能用索引方式访问,ArrayList索引是标识出来的,linklist索引是存储起来的
4.wait和sleep的区别
必须得唤醒(notify)
5.常见的map类及其区别
6.IO模型BIO、NIO、AIO的区别
BIO:同步阻塞IO
问题:高并发的时候容易发生资源不足
服务器端收到大量的来自客户端的IO请求是需要新建线程来处理这些请求,服务器资源很可能就会被耗尽,如果是在高并发的一个情况下,就会导致大量的这个连接被挂起,服务器资源,就会严重不足,针对每soket连接服务器,他都需要去新建线程,哪怕是使用的线程池也也会因为这一个线程上下文切换造成了大量的开销
NIO:同步阻塞
AIO:异步非阻塞
使用场景
7.error和exception的区别
notclassdeffounderror :找不到类,jar不存在,存在不同的类中,大小写问题
classNotfounderror:
8.对象的四种引用
9.反射的原理和创建类实例的三种方式
10.数组在内存中如何分配
11.动态代理方式的几种方式和优缺点
本质是修改字节
12.Java是如何实现异常处理的
13.String、StringBuffer和StringBuilder。
String不可变、StringBuffer和StringBuilder可变
string:
14.spring aop的实现原和应用场景
略
15.序列化和反序列化
16.final、finally、finalize的区别
异常在方法之前,try,里面执行sytem exit,被中止被中断
通常不推荐使用
17.Tomcat结构,以及其类加载器流程,线程模型
18单例
分布式核心设计:缓存与锁