黑马程序员技术交流社区

标题: 面试中关于Java你所需知道的的一切 [打印本页]

作者: jannnonx    时间: 2016-6-14 23:04
标题: 面试中关于Java你所需知道的的一切

1. Java中的原始数据类型都有哪些,它们的大小及对应的封装类是什么?
(1)boolean
   boolean数据类型非true即false。这个数据类型表示1 bit的信息,但是它的大小并没有精确定义。
   《Java虚拟机规范》中如是说:“虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位”。这样我们可以得出boolean类型单独使用是4个字节,在数组中又是1个字节。那虚拟机为什么要用int来代替boolean呢?为什么不用byte或short,这样不是更节省内存空间吗?实际上,使用int的原因是,对于当下32位的CPU来说,一次进行32位的数据交换更加高效。
    综上,我们可以知道:官方文档对boolean类型没有给出精确的定义,《Java虚拟机规范》给出了“单独时使用4个字节,boolean数组时1个字节”的定义,具体还要看虚拟机实现是否按照规范来,所以1个字节、4个字节都是有可能的。这其实是一种时空权衡。
    boolean类型的封装类是Boolean。
(2)byte——1 byte——Byte
(3)short——2 bytes——Short
(4)int——4 bytes——Integer
(5)long——8 bytes——Long
(6)float——4 bytes——Float
(7)double——8 bytes——Double
(8)char——2 bytes——Character
2. 谈一谈”==“与”equals()"的区别。
    《Think in Java》中说:“关系操作符生成的是一个boolean结果,它们计算的是操作数的值之间的关系”。
    "=="判断的是两个对象的内存地址是否一样,适用于原始数据类型和枚举类型(它们的变量存储的是值本身,而引用类型变量存储的是引用);equals是Object类的方法,Object对它的实现是比较内存地址,我们可以重写这个方法来自定义“相等”这个概念。比如类库中的String、Date等类就对这个方法进行了重写。
    综上,对于枚举类型和原始数据类型的相等性比较,应该使用"==";对于引用类型的相等性比较,应该使用equals方法。
3. Java中的四种引用及其应用场景是什么?
4. ArrayList, LinkedList, Vector的区别是什么?
5. String, StringBuilder, StringBuffer的区别是什么?
7. TreeMap, LinkedHashMap, HashMap的区别是什么?
8. Collection与Collections的区别是什么?
Collection<E>是Java集合框架中的基本接口;Collections是Java集合框架提供的一个工具类,其中包含了大量用于操作或返回集合的静态方法。
    对Java集合框架还不太熟悉的小伙伴请参考Java核心技术点之集合框架

9. 对于“try-catch-finally”,若try语句块中包含“return”语句,finally语句块会执行吗?
    答案是会执行。只有两种情况finally块中的语句不会被执行:
10. Override, Overload的含义与区别

11. 接口与抽象类的区别
    接口是一种约定,实现接口的类要遵循这个约定;抽象类本质上是一个类,使用抽象类的代价要比接口大。接口与抽象类的对比如下:
12. Java中多态的实现原理
   所谓多态,指的就是父类引用指向子类对象,调用方法时会调用子类的实现而不是父类的实现。多态的实现的关键在于“动态绑定”。详细介绍请戳Java动态绑定的内部实现机制
13.简述Java中创建新线程的两种方法
14. 简述Java中进行线程同步的方法
15. wait(),sleep() 的区别

16. 线程池的用法与优势
17. 常见设计模式
   所谓“设计模式”,不过是面向对象编程中一些常用的软件设计手法,并且经过实践的检验,这些设计手法在各自的场景下能解决一些需求,因此它们就成为了如今广为流传的”设计模式“。也就是说,正式因为在某些场景下产生了一些棘手的问题,才催生了相应的设计模式。明确了这一点,我们在学习某种设计模式时要充分理解它产生的背景以及它所解决的主要矛盾是什么。
   常用的设计模式可以分为以下三大类:





作者: mz585858    时间: 2016-6-14 23:20
看过之后感觉总结的很详细谢谢分享 收藏起来
作者: why910107    时间: 2016-6-14 23:39
看了半天 原来一半多都还没学~~~~
作者: drandy    时间: 2016-6-15 00:04
姿
作者: 毅往志乾    时间: 2016-6-15 00:29
谢谢分享,已收藏待有时间仔细参详
作者: java小白怕不    时间: 2016-6-15 00:30
谢谢 楼主 分享 万分感谢
作者: tianzhu2725    时间: 2016-6-15 07:33
很详细谢谢
作者: haizi004    时间: 2016-6-15 09:06
谢谢楼主分享。
作者: LCR    时间: 2016-6-15 10:44
感谢楼主分享
作者: gjtdxjd    时间: 2016-6-15 10:49
谢谢分享!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2