| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 大数据——Java常见面试题 -> 正文阅读 |
|
[Java知识库]大数据——Java常见面试题 |
1. JDK 和 JRE 有什么区别?
具体来说,JDK其实包含了JRE,同时还包含了编译java源码的编译器javac,还包含了许多java程序调试和分析的工具。要运行java程序,只需要安装JRE就可以了,如果需要编写java程序,则还需要安装JDK。 2. java 的基本类型、包装类型有哪些?
3. final 在 java 中有什么作用?
4. 对于String的理解首先String不属于基本类型,其次String类由final关键字修饰,表示不可被继承,一旦创建,不可修改。平常对String的操作实际在底层代码是由StringBuilder完成的 5. == 和 equals 的区别是什么?== 解读 对于基本类型和引用类型 == 的作用效果是不同的,如下所示:
代码示例:
代码解读:因为 x 和 y 指向的是同一个引用,所以 == 也是 true,而 new String()方法则重写开辟了内存空间,所以 == 结果为 false,而 equals 比较的一直是值,所以结果都为 true。 equals 解读 equals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较。看下面的代码就明白了。 首先来看默认情况下 equals 比较一个有相同值的对象,代码如下:
输出结果出乎我们的意料,竟然是 false?这是怎么回事,看了 equals 源码就知道了,源码如下:
?原来 equals 本质上就是 ==。 那问题来了,两个相同值的 String 对象,为什么返回的是 true?代码如下: ?
同样的,当我们进入 String 的 equals 方法,找到了答案,代码如下:
原来是 String 重写了 Object 的 equals 方法,把引用比较改成了值比较。 总结?:== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而 equals 默认情况下是引用比较,只是很多类重写了 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。 6. HashMap 的底层结构JDK1.7之前:
JDK1.8之后: HashMap的底层结构为数组+链表+红黑树 创建时不初始化,存入第一个值是初始化?容量为16 通过键的hashcode与容量值取余,得到键的存放节点,如果该节点上无其他键,则直接存放,若为同键,则值覆盖,若为不同键,则按链表存储,当该节点下存放的键超过7个时,则按红黑树存储 7.?两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?不对,两个对象的hashCode()相同,equals()不一定为true。 代码示例:
执行的结果
代码解读:很显然“通话”和“重地”的 hashCode() 相同,然而 equals() 则为 false,因为在散列表中,hashCode()相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等。 8. 集合框架的特点List:有序,可重复 Set:无序,不可重复 Map:无序,键不重复,值可重复 9. 集合框架底层结构的优缺点
10. String、StringBuffer、StringBuilder对比String:是不可变对象,每次对String类型进行改变其实都等同于生成一个新的String对象 StringBuffer:可变字符串,线程安全 StringBuilder:可变字符串,单线程,线程不安全 性能:StringBuilder>StringBuffer>String 11. String 类的常用方法都有哪些?
12. Java OOP 的特性和理解继承:
封装:
多态:
13. 对抽象类 abstract 和接口 interface 的理解抽象类 abstract:
接口 interface
14. Java中正则的应用
15. 对于线程的理解和应用进程是运行程序,线程是进程内部的执行序列 应用:多线程并发,提高执行的性能(例如hadoop 按行读取时是并发执行的) 16. 对于锁的理解和应用理解:在并发编程中,多个线程访问同一对象,为了保证数据的一致性,需要上锁 应用:
17. java中流分为几种?按方向来分:输入流(input)、输出流(output) 按类型来分:字节流和字符流 按功能来分:节点流和处理流
18. Java中是如何实现对象的序列化和反序列化的?
19. Files的常用方法有哪些?
20. 谈谈关于 Java 反射的理解和应用
21. jdbc 的标准接口有哪些,分别有什么作用?
22. Error 和 Exception区别
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/31 1:56:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |