zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    ODBC连接数据库
    发送邮件
    动态控制某些字段可以修改
    动态调用SQL和存储过程
    写数据到TXT文档
    动态创建Form
    动态调用报表
    ICE学习笔记2:摸了这么些天,终于有点着道了
    如何使用 Symbol Retriever
    Win XP注册表之性能优化
  • 原文地址:https://www.cnblogs.com/cxxjohnson/p/8542402.html
Copyright © 2011-2022 走看看