Java面试精华:作用域、容器比较与多线程同步详解

需积分: 9 1 下载量 97 浏览量 更新于2024-09-18 收藏 56KB DOC 举报
本文档是一份精简版的Java面试题集,涵盖了多个核心知识点。首先,讨论了Java中四种访问权限修饰符的含义及其应用:public、protected、default(即不写时,默认为friendly,也就是包内可见)、private。public的权限最大,可以在任何类中使用;protected允许同一包内的子类和不同包的其他类访问;default仅限于同一包内的访问;而private则仅限于当前类内部。这体现了封装原则,帮助开发者控制类成员的可见性。 接下来,文章对比了ArrayList和Vector,以及HashMap和Hashtable之间的区别。ArrayList与Vector的主要区别在于线程安全性:ArrayList是非线程安全的,而Vector是线程安全的,但Vector在数据增长时效率较低。HashMap和Hashtable的差异主要体现在历史背景、同步性和对空值的支持上:Hashtable是早期版本的实现,提供了同步支持但不允许空值,而HashMap引入了Map接口,支持空值,但本身非线程安全。 然后,讨论了char类型的问题,指出尽管char类型通常用于存储单个字符,但在Java的Unicode编码下,一个char实际上可以存储一个中文字符,因为一个char占用16个字节。 最后,关于并发编程,文中提到多线程可以通过两种方式实现:继承Thread类和实现Runnable接口。Java中的同步机制主要有两种手段:synchronized关键字用于控制代码块或方法的互斥访问,以及wait()、notify()和notifyAll()方法,它们配合使用来实现线程间的协作和通信。 这份面试题涉及到了Java的基础语法、面向对象特性、集合框架的使用、字符编码以及多线程和同步控制等方面,对于准备Java面试的人来说是非常有价值的参考资料。