1. 多线程
1.1 多线程7种同步方法?
答:同步方法
同步代码块
使用重入锁实现线程同步(ReentrantLock)
使用特殊域变量(volatile)实现同步(每次重新计算,安全但并非一致)
使用局部变量实现线程同步(ThreadLocal)以空间换时间
使用原子变量实现线程同步(AtomicInteger(乐观锁))
使用阻塞队列实现线程同步(BlockingQueue (常用)add(),offer(),put()
1.2 四大线程池?
答:newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor
1.3 进程与线程的区别?
答:进程是资源分配的基本单位,线程是调度的基本单位。进程包含线程,线程共用进程的资源。
1.4 线程的生命周期?
答:新建,就绪,运行,阻塞,结束
1.5 如何判断队列已满?
1.6 定时任务
答:newScheduledThreadPool, Timer
1.7 线程的五种状态及切换
1.8 sleep()和wait(),sleep()和yield的区别?
答:sleep()没有释放锁,
yield()直接让线程进入就绪状态,并且只能给同等级和高级的线程让步
join()调用,主线程进入阻塞状态,等待当前线程执行完,主线程才可以执行。
1.9 当一个线程进入一个对象的synchronized方法A之后,其它线程是否可进入此对象的synchronized方法B?不能
1.91 请说出与线程同步以及线程调度相关的方法。
答:wait():使一个线程处于等待(阻塞)状态,并且释放所持有的对象的锁;
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要处理InterruptedException异常;
notify():唤醒一个处于等待状态的线程,当然在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且与优先级无关;
notityAll():唤醒所有处于等待状态的线程,该方法并不是将对象的锁给所有线程,而是让它们竞争,只有获得锁的线程才能进入就绪状态;
2. 通信
http
tcp
udp
socket
2.1 tcp和udp的区别?
2.2 tcp的三次握手和四次挥手?
3. java jvm
3.1 五大组成部分图?
答:程序计数器,虚拟机栈,本地方法栈,堆,方法区
程序计数器(和系统相关)
虚拟机栈:存放局部变量
本地方法栈
堆:存放所有new出来的东西
方法区:被虚拟机加载的类信息、常量、静态常量等。
3.2 JVM规范中的五大java内存区域
4. 反射,代理,泛型
4.1 反射的作用和应用场景?反编译
4.2 Java反射的三种实现方式?
答:通过Object类的getClass方法 Class cla = foo.getClass();
通过对象实例方法获取对象 Class cla = foo.class;
通过Class.forName方式 Class cla = Class.forName("xx.xx.Foo");
4.3 jdk代理和cglib的区别?
答:jdk代理一定要有接口,cglib 没有接口;动态代理,目标对象一定要实现接口,静态代理,目标对象和代理对象都要实现接口
5. IO
字节流:InputStream, OutputStream
字符流:Reader, Writer
6. 封装,继承,多态
7. 接口与抽象类
8. 重载和重写
10. 集合
List -> ArrayList, LinkList, vector
Set -> HashSet, treeSet
Map -> HashMap, Hashtable, treeMap, concurrentHashMap,linkHashMap
11. &和&&
12. 异常
12.1 常见的异常有哪些?
答:空指针异常,数组越界异常,类找不到,算数异常
13. 自动装箱和拆箱
13.1 int和Integer有什么区别?
答:- 原始类型: byte,short,int,long,char, float,double, boolean
- 包装类型:Byte,Short,Integer,Long,Character,Float,Double, Boolean
14. 设计模式
单例模式,工厂模式,原型模式,代理模式,观察者模式,适配器模式
15. 接口服务
rest
eip
httpclient
webservice
16. 网络方面的面试题
17. 网络框架netty,Mina
18. Redis
19. spring
spring bean 的生命周期
spring的设计模式
spring ioc三种注入方式
20. NIO(non-blocking io)
21. 任务调度框架Quartz