2018java面试知识汇总

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

 

posted @ 2018-03-10 22:28  chenxiangxiang  阅读(254)  评论(0编辑  收藏  举报