Java面试题
- Java8 http://www.open-open.com/lib/view/open1403232177575.html
- 对Java的理解
- Java和其他语言相比有什么不同
- 你刚才提到了平台无关性,Java为什么平台无关
- 面向对象
- 面向对象举例理解
- 面向对象三大特点?你怎么理解多态?Java中是怎么实现多态的?
- 抽象类和接口
- 接口和抽象类的异同,抽象类有没有构造,我说有,但不确定。面试官还是很亲和的,接着问我父类没有默认构造器,子类构造能否不显示调用,我说不能,因为一定会调用默认构造,但父类没有。这时他再问我,抽象类要是没有构造器,行不行,我说不行,子类不能隐式构造了
- 抽象类接口区别和相同点
- 接口和抽象类都不能实例化
- 抽象类可以有构造方法,接口中不能有构造方法。
- 抽象类中可以有普通成员变量,接口中没有普通成员变量
- 抽象类中可以包含非抽象的普通方法,接口中的可以有非抽象方法,比如deafult方法
- 抽象类中的抽象方法的访问类型可以是public,protected,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
- 抽象类中可以包含静态方法,接口中不能包含静态方法
- 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
- 一个类可以实现多个接口,但只能继承一个抽象类。
- 抽象类里面的方法子类必须全部实现吗,可不可以有不实现的方法,接口呢?
- 抽象类不一定,子类只会实现父类里的抽象方法,抽象类里可以有抽象方法也可以非抽象方法,子类不需要再去实现非抽象方法,如果子类一定要再次实现的话就叫做覆盖了
- 接口里的方法必须全部实现,因为接口里的方法都是抽象的,默认都是public abstract
- 抽象类的作用是什么,什么时候用到抽象类
- 封装(隐藏对象的属性和实现细节,仅对外公开接口)
- 继承 JAVA单继承,接口多实现
- 多态:多态跟返回值没关系,跟参数个数,参数类型,参数顺序有关系(只跟方法签名有关系)
- java有多继承吗?(没有)那如何实现类似于多继承的功能呢?
- 关键字
- static理解,final理解
- 解释synchronized和volatile关键字,有什么区别,如何理解volatile保证内存有序性
- 同步机制synchronized
- synchronized锁实现原理
- 重入锁
- 锁类锁表分别锁了什么
- synchronized底层
- lock类和sychronized有什么区别
- volatile 为什么使用AtomicLong而不使用Long?
- AtomicLong的底层是怎么实现的?
- 双重检查锁为啥用volatile变量 重排序会咋排。
- synchronized 和 ReentrantLock
- 区别
- synchronized实现原理(字节码指令)
- 可重入概念
- ReentrantLock实现原理(AQS,结构,volatile的变量state,同步队列CLH,独占锁和共享锁模式获取锁的方法,CAS)
- 容器
- 容器的各种方法
- Java容器层次结构 Object类的方法
- 数组、链表的区别,它们分别使用于什么场合?
- ArrayList和LinkedList的区别?
- ArrayList是怎么扩容的?
- String、StringBuffer、StringBuilder的区别?对应的使用场景?
- string为什么设计成final
- hashMap
- map实现
- hashMap实现原理
- hashmap为什么是数组+链表,不是数组加数组
- 数组为什么是连续存储的
- 数组的初始长度为什么是15
- hashmap里的链表初始长度为什么是16 (java中数组初始化要么null要么必须定长,没有初始长度,如果问的arraylist,它初始长度是10(以前查过资料,说就是一个经验值没有具体原因);hashmap用16是为了减少哈希碰撞。)
- hash是解决什么问题的
- hashMap中的hash冲突怎么解决,JDK1.8有没有升级过这块
- 怎样减少hash碰撞,给出具体方案
- hadoop和map reduce,如何用map reduce实现两个大数据集合的差集
- 项目中的hashmap介绍下设计策略,怎么优化?
- HashMap是不是线程安全? 为什么非线程安全或者说哪里体现了非线程安全?HashMap的读写线程安全吗?
- hashmap为何是线程不安全的?线程不安全有哪些表现?https://www.jianshu.com/p/1e9cf0ac07f4
- 在并发的时候,hashmap会出现死锁,有没有考虑过为什么?
- 有没有线程安全的Map?(ConcurrentHashMap还有一个Collections类中的静态内部类SynrhonizedMap)
- 那如何实现线程安全呢?
- 分布式的hashmap考虑过吗(没有……又问我就凭自己的想法设计下)
- HashMap、HashTable、ConcurrentHashMap的区别?
- Hashtable和ConcurrentHashMap实现方式?
- concurrenthashmap在1.8和1.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(扯回HashMap的put操作。源码)
- 堆和栈
- 哪些情况下用栈
- 栈空间太大/小会怎样?
- 如何查看堆内存信息?
- 出现OOM怎么排查问题?
- jstack有哪些参数可以用,能看到哪些信息
- jstate能看到那些信息
- java中的nio和bio有什么区别,bio最常见的类有什么,nio用到了操作系统的什么服务
- 1.8 新特性保证一个方法执行多个操作
- 字符串连接的几种方法,区别
- 如何实现不可变的类?
- 浅复制和深复制?怎样实现深复制?
- 讲一下一个变量从产生到结束所经历的过程,讲一下字符串常量的过程?
- Integer和int有啥区别,integer中有哪些特殊的函数?
- JDK
- 对JDK1.5的concurrent包了解吗?
- 有了解其他jdk提供的包么 J.U.C下的类库
- Java8对链地址法有何优化
- 1.8新特性
- 为什么1.8要引入红黑树这种结构呢?
- jdk1.8 concurrenthashmap 的新的特性,有没有看过源码
- 其他
- 序列化有了解过吗?
- Java网络I/O了解吗?
- 动态代理一般有哪几种实现方式?动态代理的应用场景有哪些?
- 可以自己实现一个与java.lang.String完全相同的类吗?(答了自己的理解,扯到类加载和类相同的问题上)
- CountDownLatch与Semaphore实现原理(AQS共享锁原理)
- CountDownLatch与CyclicBarrier区别
- JUC包(atomic、locks、thread pool、同步组件等)

浙公网安备 33010602011771号