一、JAVA基础
1、什么是面向对象?
封装、继承、多态
2、对异常有什么看法?一般会如何做处理?(finally会用来做什么,关闭流的时候会放在哪个地方?)
- 异常是程序在编译或者运行的时候出现问题的显相;
- Throwable是所有Error(非程序问题,首要解决目标以及性能调优)和Exception(程序问题,且可处理可调式)的父类;
- 手动处理异常,可提升程序的健壮性;
3、JAVA中堆和栈的区别,说下java的内存机制。(引用类型能打印出来么?当打印一个String申明的变量时,打印出来的是什么?)
- 堆用于存放基本数据类型和对象的引用(引用类型的内存地址名)
- 栈专门用来存放引用数据类型的实际值,受JVM管理,开辟空间存放资源;
4、线程池的作用(简述单例模式的懒汉式跟饿汉式的优缺点)
- 提高线程的可管理性;
- 降低资源消耗;
- 提高响应速度;
5、垃圾回收机制的基本原理(不要讲太深,讲多了就是装13,容易被针对)
- 垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收;
- 当创建对象时,GC就开始监视这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理heap(堆)中的素有对象。通过这种方式确定哪些对象是“可达的”,哪些是“不可以达的”;
6、垃圾回收机制的优缺点
- 优点:最大的优点是不用程序员自己去管理内存;
- 缺点:“不用管”也意味着“失控”,所以GC提供了System.gc()、Runtime.gc()方法来通知GC回收;
7、lambada表达式的优缺点(JDK1.8)
- 优点:语法改进、语法简洁;
- 缺点:入门理解困难,不利于JAVA初学者理解;
8、HashMap是不是有序的
- HashMap 和 HashTable 都不是有序的;
- TreeMap和LinkedHashmap都是有序的(TreeMap默认是key升序,LinkedHashmap默认是数据插入顺序);
9、ArrayList和LinkedList的异同点
- 相同点:
- 有序;
- 可重复;
- 都不是线程安全的;
- 不同点:
- ArrayList是Array(动态数组)的数据结构,LinkedList是Link(链表)的数据结构;
- 随机遍历访问时linkedlist的性能要低于arraylist;
- linkedlist的增删要优于arraylist;
- arraylist的初始化时默认10容量,而linkedlist默认初始化为空;
10、new ArrayList和Arrays.asList的区别
- Arrays.asList出来的长度是固定的;
- Arrays.asList 只支持遍历和取值,不支持 add(),remove()等任何修改操作,只能作为传递值的桥梁;
11、参数传递时,是按值传递还是引用传递;【这块我尚且存在争议,暂不写答案】
- 待确定???
12、HashMap是如何解决hash冲突的(JDK1.8)
- 使用链地址法(使用散列表)来链接拥有相同hash值的数据;
- 如何面试java基础使用2次扰动函数(hash函数)来降低哈希冲突的概率,使得数据分布更平均;
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/1554.html