51、LinkedHashSet底层数据结构是什么?如何保证元素的唯一性的呢? 底层由链表和哈希表组成。 由链表保证有序。 由哈希表保证唯一。
52、什么是可变参数? 针对在写一个方法的时候,不知道具体要有多少个形式参数的时候。 java提供了可变参数的用法。 注意: A:变量其实是该数据类型的一个数组。 B:形式参数如果有多个的话,可变参数只能是最后一个。 C:数据类型要一致。
53、Map和Collection集合的区别?(*面试题) A:Map集合存储的是键值对形式的元素。 Collection集合存储的是单个的元素。 B:Map集合的键是唯一的。 Collection的子接口Set集合元素是唯一的。 C:Map集合的值是可以重复的。 Collection的子接口List集合的元素是可以重复的。 D:Map集合的数据结构仅对键有效,对值无效. Collection的数据结构是针对元素有效的
54、Hashtable和HashMap的区别?(面试题) A:HashMap 线程不安全,效率高。允许null键和null值。 B:Hashtable 线程安全,效率低。不允许null键和null值。
55、Collection和Collections有什么区别? Collection:是集合的顶层接口,定义了集合的通用方法。 Collections:是一个工具类,里面定义了对集合进行操作的一些常见方法。
56、什么是异常?异常有哪几种?各有什么特点? 程序出现了不正常的情况,就是异常。 异常的继承体系结构: Throwable |--Error 严重的问题,一般我们解决不了。 |--Exception |--RuntimeException 运行时期异常,这种问题一般要修正代码。 |--非RuntimeException 编译时期异常,必须进行处理,否则代码不能够通过。
57、throws和throw的区别? (*面试题) throws 位置:在方法()后面,跟的是类名,后面可以跟多个异常类名,并且用逗号隔开 表示抛出异常,交给调用者去处理 如果后面根据的是RuntimeException及其子类,那么,该方法可以不用处理。 如果后面根据的是Exception及其子类,那么,必须要编写代码进行处理,或者调用的时候抛出。 throw 位置:在方法中,跟的对象名称。后面只能跟一个异常对象 表示抛出异常,由方法体内语句处理 如果方法中,有throw抛出RuntimeException及其子类,那么,声明上可以没有throws。 如果方法中,有throw抛出Exception及其子类,那么,声明上必须有throws。
58、final、finally、finalize的区别?(*面试题) final:是最终的意思,用于修饰类、变量、和方法。修饰类的时候,类是最终类,不可以被继承。 修饰变量的时候,变量为常量,不可以被改变。修饰方法的时候,方法不能被重写。 finally:是异常处理的一部分,它里面的代码永远会执行(前提:jvm没退出),一般用于释放资源。 finalize:是object类的一个方法,用于垃圾处理。
59、什么是递归?使用递归需要注意哪些? 递归就是方法定义中调用方法本身的现象。 A:递归一定要有出口,否则就是死递归。 B:递归的次数不能太多,否则内存溢出。 C:构造方法不能递归使用。
60、基本的IO流有哪些?(*面试题) 字节流:InputStream、OutputStream、FileInputStream、FileOutputStream、 字符流:Writer、Reader、FileWriter、FileReader、 高效字节流:BufferedInputStream、BufferedOutputStream 高效字符流:BufferedWriter、BufferedReader 最开始的时候,只有字节流,但是后来由于中文字符或者其他字符的出现,用两个字节才能表示。 如果用字节流也是可以读写字符文件的数据的,但是比较麻烦。为了简化这种操作,就提供了字符流。
61、flush()和close()的区别?(*面试题) flush():刷新缓冲区,流对象还可以继续使用。 close():释放流资源,但是会先刷新一次缓冲区,操作完毕后,流对象不可以再使用。
62、什么是多线程?进程和线程的区别是什么? 多线程就是应用程序的多条执行路径。 进程:正在运行的应用程序,每个进程的具备独立的运行空间。 线程:是进程的执行单元,执行路径。如果是多个线程,那么,这多个线程共享同一个进程资源。
|