Java面试题

 

      • 面向对象
      • 面向对象举例理解
      • 面向对象三大特点?你怎么理解多态?Java中是怎么实现多态的?
      • 抽象类和接口
      • 接口和抽象类的异同,抽象类有没有构造,我说有,但不确定。面试官还是很亲和的,接着问我父类没有默认构造器,子类构造能否不显示调用,我说不能,因为一定会调用默认构造,但父类没有。这时他再问我,抽象类要是没有构造器,行不行,我说不行,子类不能隐式构造了
      • 抽象类接口区别和相同点
        • 接口和抽象类都不能实例化
        • 抽象类可以有构造方法,接口中不能有构造方法。
        • 抽象类中可以有普通成员变量,接口中没有普通成员变量
        • 抽象类中可以包含非抽象的普通方法,接口中的可以有非抽象方法,比如deafult方法
        • 抽象类中的抽象方法的访问类型可以是publicprotected,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
        • 抽象类中可以包含静态方法,接口中不能包含静态方法
        • 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
        • 一个类可以实现多个接口,但只能继承一个抽象类。
      • 抽象类里面的方法子类必须全部实现吗,可不可以有不实现的方法,接口呢?
      • 抽象类不一定,子类只会实现父类里的抽象方法,抽象类里可以有抽象方法也可以非抽象方法,子类不需要再去实现非抽象方法,如果子类一定要再次实现的话就叫做覆盖了
      • 接口里的方法必须全部实现,因为接口里的方法都是抽象的,默认都是public abstract
      • 抽象类的作用是什么,什么时候用到抽象类
      • 封装(隐藏对象的属性和实现细节,仅对外公开接口)
      • 继承 JAVA单继承,接口多实现
      • 多态:多态跟返回值没关系,跟参数个数,参数类型,参数顺序有关系(只跟方法签名有关系)
      • java有多继承吗?(没有)那如何实现类似于多继承的功能呢?

 

 

      • 关键字
      • static理解,final理解
      • 解释synchronizedvolatile关键字,有什么区别,如何理解volatile保证内存有序性
      • 同步机制synchronized 
      • synchronized锁实现原理
      • 重入锁 
      • 锁类锁表分别锁了什么   
      • synchronized底层
      • lock类和sychronized有什么区别
      • volatile 为什么使用AtomicLong而不使用Long? 
      • AtomicLong的底层是怎么实现的?
      • 双重检查锁为啥用volatile变量 重排序会咋排。

 

      • synchronized  ReentrantLock
      • 区别
      • synchronized实现原理(字节码指令)
      • 可重入概念
      • ReentrantLock实现原理(AQS,结构,volatile的变量state,同步队列CLH,独占锁和共享锁模式获取锁的方法,CAS

 

      • 容器
      • 容器的各种方法
      • Java容器层次结构  Object类的方法
      • 数组、链表的区别,它们分别使用于什么场合?
      • ArrayListLinkedList的区别?
      • ArrayList是怎么扩容的?
      • StringStringBufferStringBuilder的区别?对应的使用场景?
      • string为什么设计成final

 

      • hashMap
      • map实现
      • hashMap实现原理
      • hashmap为什么是数组+链表,不是数组加数组
      • 数组为什么是连续存储的 
      • 数组的初始长度为什么是15 
      • hashmap里的链表初始长度为什么是16 java中数组初始化要么null要么必须定长,没有初始长度,如果问的arraylist,它初始长度是10(以前查过资料,说就是一个经验值没有具体原因);hashmap16是为了减少哈希碰撞。)
      • hash是解决什么问题的
      • hashMap中的hash冲突怎么解决,JDK1.8有没有升级过这块
      • 怎样减少hash碰撞,给出具体方案
      • hadoopmap reduce,如何用map reduce实现两个大数据集合的差集
      • 项目中的hashmap介绍下设计策略,怎么优化?
      • HashMap是不是线程安全为什么非线程安全或者说哪里体现了非线程安全?HashMap的读写线程安全吗?
      • hashmap为何是线程不安全的?线程不安全有哪些表现?https://www.jianshu.com/p/1e9cf0ac07f4
      • 在并发的时候,hashmap会出现死锁,有没有考虑过为什么?
      • 有没有线程安全的Map?(ConcurrentHashMap还有一个Collections类中的静态内部类SynrhonizedMap
      • 那如何实现线程安全呢?
      • 分布式的hashmap考虑过吗(没有……又问我就凭自己的想法设计下)
      • HashMapHashTableConcurrentHashMap的区别?
      • HashtableConcurrentHashMap实现方式?
      • concurrenthashmap1.81.7里面有什么区别
      • 为什么ConcurrentHashMap会比hashtable的效率要高?

 

 

      • 基础
      • java作用符及其权限范围
      • 异常
        • 分为Error和Exception,Exception分为RuntimeException和IOException
        • Error和RuntimeException并称为非受查unchecked异常,其他称为checked异常
        • Error:
          • 系统内部错误和资源耗尽,只能通知用户,无法处理
        • RuntimeException:
          • 错误的类型转换、数组访问越界、访问null指针
        • IOException:
          • 在文件尾部读写数据,打开一个不存在的文件,根据给定字符串查找Class对象,但是这个字符串表示的类不存在。
      • 错误处理机制
        • 抛出一个异常、assert断言(测试使用,发行版本时自动去除)、日志
      • Java中的IllegalMonitorException是什么意思
      • Java反射机制 ,反射在哪些地方有应用场景?
        • 便于编写能够动态操控Java代码的程序,被大量地运用在JavaBeans中,可以用来
        • 在运行时分析类的能力(为每个类维护一个Class对象,包含了类相关的信息,可以动态地加载这个Class对象——编译、运行时加载都可以。在Java.lang.reflect包中有三个类field\method\constructor,存储了描述类的区域、方法、构造器,通过这些类中的方法可以获得原本那个类的信息)
        • 在运行时查看对象,例如:编写一个toString方法给所有的类使用
        • 实现通用的数组操作代码
        • 利用Method对象,在Method类中有一个invoke方法,允许调用包装在当前Method对象中的方法,这个对象很像C++中的函数指针
      • 泛型
        • 编写的代码可以被很多不同类型的对象所重用,类型参数指示类型。如ArrayList<int>

 

 

 

      • 什么时候需要重写equals()
      •  
      • 什么时候需要重写hashCode()
      • 为什么重写equals必须重写hashcode(扯回HashMapput操作。源码)
      • 堆和栈
      • 哪些情况下用栈
      • 栈空间太大/小会怎样?
      • 如何查看堆内存信息?
      • 出现OOM怎么排查问题?
      • jstack有哪些参数可以用,能看到哪些信息 
      • jstate能看到那些信息 
      • java中的niobio有什么区别,bio最常见的类有什么,nio用到了操作系统的什么服务
      • 1.8 新特性保证一个方法执行多个操作
      • 字符串连接的几种方法,区别
      • 如何实现不可变的类?
      • 浅复制和深复制?怎样实现深复制?
      • 讲一下一个变量从产生到结束所经历的过程,讲一下字符串常量的过程?
      • Integerint有啥区别,integer中有哪些特殊的函数?

 

 

      • JDK
      • JDK1.5concurrent包了解吗?
      • 有了解其他jdk提供的包么   J.U.C下的类库
      • Java8对链地址法有何优化
      • 1.8新特性
      • 为什么1.8要引入红黑树这种结构呢?
      • jdk1.8 concurrenthashmap 的新的特性,有没有看过源码

 

    • 其他
    • 序列化有了解过吗?
    • Java网络I/O了解吗?
    • 动态代理一般有哪几种实现方式?动态代理的应用场景有哪些?
    • 可以自己实现一个与java.lang.String完全相同的类吗?(答了自己的理解,扯到类加载和类相同的问题上)
    • CountDownLatchSemaphore实现原理(AQS共享锁原理)
    • CountDownLatchCyclicBarrier区别
    • JUC包(atomiclocksthread pool、同步组件等)
posted @ 2018-09-24 15:26  人儿大哥  阅读(194)  评论(0)    收藏  举报