Java面试必备知识点详解
需积分: 50 201 浏览量
更新于2024-07-26
收藏 2.01MB PDF 举报
"Java面试宝典,涵盖Java基础知识、算法与编程、HTML&JavaScript&AJAX等多个方面的面试题目,旨在帮助面试者准备Java相关的技术面试。
一、Java基础部分
1. 一个`.java`源文件可以包含多个类,但只能有一个公开类(public class),其他类可以是非公开的,用于组织代码。
2. Java没有`goto`关键字,它鼓励使用结构化的控制流程。
3. `&`是位运算符,`&&`是逻辑运算符。`&`始终计算两边的操作数,而`&&`(短路逻辑运算符)仅在必要时计算右侧操作数。
4. 使用`break`语句可以跳出多重嵌套循环。
5. `switch`语句不能作用于`byte`,可以作用于`char`、`short`、`int`、枚举类型及`String`(Java 7以后)。
6. `short s1 = 1; s1 = s1 + 1;`会导致类型提升,应使用`s1 += 1;`避免类型转换错误。
7. char型变量可以存储单个Unicode字符,包括中文汉字。
8. 最有效率的方式计算2乘以8是`2 * 8`。
9. 设计一个大数计算器需要考虑长整数的运算和溢出问题。
10. `final`修饰的变量其引用一旦赋值后不可变,但如果是对象,则对象的内容可以变。
11. `==`比较基本类型值,`equals()`比较对象内容。
12. 静态变量属于类,实例变量属于对象。
13. 不可以从`static`方法内部直接调用非`static`方法,需通过对象实例调用。
14. `Integer`是`int`的包装类,两者在性能和自动装箱拆箱上有区别。
15. `Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。
16. 代码可能存在的不妥之处可能涉及类型转换、边界条件或异常处理等。
17. 作用域`public`、`private`、`protected`和默认作用域分别代表全局、类内、同一包内和类内及子类可见。
18. Overload是重载,不改变返回值类型;Override是重写,必须保持返回值类型和方法签名一致。
19. 构造器不能被override,但可以重载。
20. 接口可以继承接口,抽象类可以实现接口,抽象类可以继承具体类,抽象类中可以有静态的`main`方法。
21. 写`clone()`方法时,通常会使用`super.clone()`。
22. 面向对象的特征包括封装、继承、多态。
23. Java通过方法重写和接口实现实现多态。
24. abstract class可以包含方法实现,而interface不能。
25. abstract method不能同时是static、native或synchronized。
26. 内部类是定义在另一个类内部的类,分为静态嵌套类(Static Nested Class)和非静态嵌套类(Inner Class)。
27. 内部类可以直接访问外部类的成员,包括私有成员,但外部类访问内部类需要实例化内部类。
28. 匿名内部类可以继承类和实现接口,但不能同时进行。
29. `super.getClass()`返回父类的`Class`对象。
30. String是对象,不是基本类型。
31. `s = s + " world!"`创建了新对象,原始对象不变。
32. 不可以继承`String`类,因为它是final的。
33. `"xyz"`创建一个对象,`new String("xyz")`创建两个对象,一个在常量池,一个在堆。
34. `String`是不可变的,`StringBuffer`是可变的,适用于多线程环境。
35. 使用`split(",\\s*")`将逗号分隔的字符串转换为数组。
36. 数组有`length`属性,字符串有`length()`方法。
37. 创建3个对象。
38. `finally`块总是在`return`之前执行。
39. 代码输出取决于具体代码。
40. `final`声明不可变变量,`finally`确保代码块执行,`finalize()`是对象清理。
41. 运行时异常在运行时才会抛出,与编译时异常不同。
42. error表示严重问题,无法恢复;exception表示可处理的异常。
43. 异常处理机制:try-catch-finally,`try`捕获异常,`catch`处理异常,`finally`执行清理代码。
44. 常见的runtime exception有NullPointerException、ArrayIndexOutOfBoundsException等。
45. throws声明异常,throw抛出异常,try捕获,catch处理,finally确保执行。
46. 用`thread.start()`启动线程,`synchronized`修饰同步方法。`stop()`和`suspend()`不安全,不推荐。
47. `sleep()`让当前线程休眠,`wait()`使线程等待,释放锁。
48. 同步确保数据一致性,异步提高效率。同步适用于数据共享,异步适用于并行处理。
49. 是否同步取决于具体代码实现。
50. 多线程通过`Thread`类或实现`Runnable`接口。同步有`synchronized`、`Lock`等。
51. 使用`thread.start()`启动线程。
52. 另一线程可进入非`synchronized`方法。
53. 线程状态包括新建、就绪、运行、阻塞和终止。状态转换涉及线程调度。
54. `synchronized`与`Lock`都是同步机制,`synchronized`更简单,`Lock`更灵活。
55. 示例代码涉及线程同步和计数。
56. 示例代码涉及线程同步和控制流程。
57. Collection框架包括List、Set、Queue等,结构层次分明。
58. 实现比较需实现Comparable接口。
59. ArrayList是动态数组,Vector线程安全,性能稍低。
60. HashMap非同步,Hashtable同步,HashMap允许null键值,Hashtable不允许。
61. List存储有序元素,可重复;Map存储键值对,键唯一。
62. List和Set都继承Collection,Map独立。
63. List特点:有序、可重复;Set特点:无序、唯一;Map特点:键值对、键唯一。
64. ArrayList性能优于LinkedList的随机访问,插入删除慢;LinkedList反之。
65. 使用`removeAll()`去除重复元素。
66. Collection是接口,Collections是工具类,提供集合操作。
67. 使用`equals()`判断集合元素是否相等。
68. 集合类包括List、Set、Map等,主要方法包括增删改查等。
69. 可能不同,因为哈希码可能不同,但值相同。
70. 使用子类的`compareTo()`方法。
71. 常用类:ArrayList、HashMap、String、File、Scanner;包:java.util、java.io、java.lang;接口:Comparable、Iterable、Cloneable。
72. 字节流:InputStream/OutputStream;字符流:Reader/Writer。基础抽象类:InputStream/OutputStream/Reader/Writer。
73. 字节流处理字节,字符流处理字符,字符流基于字节流。
74. 序列化将对象状态持久化。Serializable接口标记对象可序列化。
75. 加载class文件通过类加载器,从类路径中找到.class文件并解析。
76. Heap存储对象实例,Stack存储方法调用。
77. GC自动回收不再使用的内存,减少内存泄露。
78. 优点:自动管理内存,防止内存泄露。原理:可达性分析,标记清除等。
79. 垃圾回收不一定立即回收,可手动调用`System.gc()`建议回收。
80. assert用于断言,调试时检查代码假设是否正确。
81. Java中可能出现内存泄漏,例如未释放的全局变量或静态集合。
82. 不能,因为`java.lang.String`是内置类。
83. 示例代码涉及错误检查。
二、算法与编程
这部分涉及文件操作、字符串处理、排序算法等实际编程问题,需要根据题目描述编写具体代码。
三、HTML&JavaScript&AJAX
这部分考察HTML页面结构、JavaScript编程和AJAX异步通信,例如日期比较、表格样式设置、数据提取等。同样需要编写代码来解决这些问题。
2012-04-30 上传
2019-04-24 上传
2021-01-20 上传
2017-06-30 上传
2020-12-25 上传
2021-03-19 上传
2013-06-13 上传
我叫凡客
- 粉丝: 4
- 资源: 10
最新资源
- java-row-client:ROW的Java客户端
- ardunav:您可以使用 arduino 控制您的 unav
- 基于cubeMX的串口实验
- PyKaraoke-开源
- SSEHC:半监督可扩展评估完美启发式国际象棋
- privacy-preserving-ads:鹦鹉
- torch_spline_conv-1.2.1-cp38-cp38-linux_x86_64whl.zip
- eslint-plugin-tsvue-sample
- QuizApp
- GUI-Design:来自克拉克森课程的一些示例源代码
- 石灰的
- MobileComputing:移动计算分配的存储库
- they_are_poor:一个简单的Flutter应用程序,巩固了我对脚手架类和材料应用程序的了解
- ANNOgesic-1.0.9-py3-none-any.whl.zip
- WPFlable数字计算效果
- 华容道(易语言2005年大赛三等奖).zip易语言项目例子源码下载