Java基础面试题整理----(自用)(二)

7. 什么是已检查异常?什么是未检查异常?编程时,catch异常后,应该怎么处理

解答:

  • 已检查异常:指的是一个函数的代码逻辑没有错误,但程序运行时会因为IO等错误导致异常,你在编写程序阶段是预料不到的。如果不处理这些异常,程序将来肯定会出错。所以编译器会提示你要去捕获并处理这种可能发生的异常,不处理就不能通过编译。就比如所有try catch的异常都是已检查异常。因为已检查异常必须被处理。
  • 未检查异常:也就是RunTimeException异常,指的是你的程序逻辑本身有问题,比如数组越界、访问null对象,NullPointException,这种错误你自己是可以避免的。编译器不会强制你检查这种异常。也检查不过来,太多了。
    Java中的检查异常和未检查异常
  • 编程时,catch异常后,应在catch(Execption e){}中写出自己的异常处理逻辑,例如输出处理xxxx业务出错了,e.getMessage()。

8. 数组和链表有什么区别,如何选择,如何实现栈和队列?

解答:

  • 数组:数组是一种具有固定大小的数据结构,它将享同数据类型的元素在内存中连续存放,可通过下标快速访问数据中的任何元素。适合查询操作,插入和删除元素代价昂贵。

  • 链表:链表是一种采用链式结构的数据组织形式。它采用动态分配内存的形式实现,需要时可以用new分配内存空间,不需要时用delete释放已分配的空间,不会造成内存空间的浪费。适合插入和删除,查询操作开销较大。

  • 区别总结:
    数组静态分配内存,链表动态分配内存;
    数组元素在内存中存放,链表元素不连续;
    数组元素存储在栈区,链表元素在堆区;(在程序执行过程中,申请的内存空间属于堆区,而栈区用于存放程序函数中的局部变量)
    数组利用下标定位,查询操作很快,链表则较慢
    数据插入和删除元素中,链表效率比数组高
    数组和链表的区别

  • 栈属于一种遵循后进先出(LIFO)的原则的集合。
    队列属于一种遵循先进先出(FIFO)原则的集合。
    Java如何实现栈和队列

你可能感兴趣的:(Java面试)