Java的异常体系
面:Error和Exception的区别?
- Error:程序无法处理的系统错误如OOM,编译器不做检查
- Exception:程序可以处理的异常,捕获后可能恢复
面:说一说常见的Error以及Exception?
- RuntimeException:
- NullPointerException-空指针引用异常
- ClassCastException-类型强制转换异常
- IllegalArgumentException-传递非法参数异常
- IndexOutofBoundsException-下标越界异常
- NumberFormatException-数字格式异常
- 非RuntimeException:
- ClassNotFoundException-找不到指定class异常
- IOException-IO操作异常
- Error:
- NoClassDefFoundError-找不到class定义的异常
- StackOverflowError-深递归导致栈被耗尽而抛出的异常
- OutOfMemoryError-内存溢出异常
Java集合框架
为什么面试中常考的算法与数据结构,工作中却消失了?
因为优秀的算法和数据结构被封装到了Java的集合框架之中。
数据结构考点
- 数组和链表的区别;
- 链表的操作,如反转,链表环路检测,双向链表,循环链表相关操作;
- 队列、栈的应用;
- 二叉树的遍历方式及其递归和非递归的实现;
- 红黑树的旋转;
算法考点
- 内部排序:如递归排序、交换排序(冒泡、快排)、选择排序、插入排序;
- 外部排序:应掌握如何利用有限的内存配合海量的外部存储类处理超大的数据集,写不出来也要有相关思路
考点扩展:
- 哪些排序是不稳定的,稳定意味着什么
- 各种排序最好或最差的情况
- 如何优化算法
集合的架构
可以从参考CS-Notes
面:HashMap?
需要深入理解原理和源代码
面:ConcurrentHashMap?
需要深入理解原理和源代码
J.U.C
Java的I/O机制
BIO、NIO、AIO
BIO
Block-IO:InputStream和OutputStream(基于字节流),Reader和Writer(基于字符流)
NIO
构建多路复用的、同步非阻塞的IO操作
AIO
Asynchronous IO:基于事件和回调机制