java 面试笔试大全,以及总结 jsp 笔试
### Java基础知识点详解 #### 1. 多个类在一个.java文件中 - 在一个`.java`源文件中可以包含多个类(不是内部类),但只能有一个公共类(public class),且该公共类的名字必须与文件名相同。 - 除公共类外,其他类必须声明为默认访问级别(即不使用`public`, `protected`, 或`private`修饰符),这些类被称为顶级类。 #### 2. Java中的`goto` - Java中没有传统的`goto`关键字。在Java早期版本中,`goto`被保留为关键字之一,但并未启用。因此,`goto`在Java中无法使用。 #### 3. `&`和`&&`的区别 - `&`:表示按位与运算,也可以用于布尔表达式的逻辑与运算。对于布尔表达式,如果两边的表达式都为`true`则结果为`true`;如果任意一边为`false`则结果为`false`。 - `&&`:表示逻辑与运算,具有短路特性。只有当左边的表达式为`true`时,右边的表达式才会被计算。如果左边为`false`,右边的表达式不会被计算。 #### 4. 如何跳出多重嵌套循环 - 使用标签化的方式。例如,可以在外层循环前加上一个标签,然后使用`break`加标签名的方式跳出外层循环。 ```java outerLoop: for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (/* 条件 */) { break outerLoop; } } } ``` #### 5. `switch`语句的适用范围 - `switch`语句可以作用于`byte`,但不能直接作用于`long`类型,因为`long`类型太大,超过了`switch`语句的范围。 - `switch`语句可以作用于`String`类型,自Java 7起支持`String`作为`switch`条件表达式。 #### 6. `short`类型的赋值问题 - `short s1 = 1; s1 = s1 + 1;`会导致编译错误,因为`s1 + 1`的结果默认是`int`类型,而`short`不能直接赋值`int`类型的值。 - `short s1 = 1; s1 += 1;`不会导致编译错误,因为`+=`操作会自动将结果转换为`short`类型。 #### 7. `char`型变量与中文字符 - `char`型变量可以存储一个中文汉字,因为Java中的`char`类型是16位的Unicode编码,足以表示所有Unicode字符,包括中文。 #### 8. 计算效率 - 最有效率的方法计算`2 * 8`的结果是使用位运算`2 << 3`,其中`<<`表示左移位运算,相当于乘以2的幂次方。 #### 9. 设计百亿级计算器 - 实现百亿级别的计算器可以通过使用`BigInteger`类来实现,它可以处理任意大小的整数,适合用来做这种大数计算。 #### 10. `final`关键字的作用 - 使用`final`关键字修饰一个变量时,指的是变量的引用不能改变。如果`final`修饰的是一个对象,则该对象的内容仍然可以改变,但其引用地址不可改变。 #### 11. `==`与`equals`的区别 - `==`比较的是两个变量的内存地址是否相等。 - `equals`方法比较的是两个对象的内容是否相等,默认情况下`equals`方法也是比较内存地址,需要重写以实现具体内容的比较。 #### 12. 静态变量与实例变量 - 静态变量(static variable):属于类,被所有实例共享。 - 实例变量:每个对象独立拥有,随对象创建而存在。 #### 13. `static`方法调用非`static`方法 - 不可以直接从`static`方法内部发出对非`static`方法的调用,除非先创建实例对象。 #### 14. `Integer`与`int` - `int`是基本数据类型,`Integer`是`int`的包装类,提供了许多静态方法和其他功能。 #### 15. `Math.round()`函数 - `Math.round(11.5)`等于`12`,因为`round`函数遵循四舍五入规则。 - `Math.round(-11.5)`等于`-11`,负数时也遵循四舍五入规则。 #### 16. 代码问题 - 示例代码缺失,无法给出具体分析。 #### 17. 访问控制符 - `public`:公开,任何地方都可以访问。 - `private`:私有,仅当前类内部可以访问。 - `protected`:受保护,允许同一包内或子类访问。 - 无修饰符:默认,仅限于同一包内的类可以访问。 #### 18. `Overload`与`Override` - `Overload`:方法重载,同一类中方法名相同但参数列表不同。 - `Override`:方法重写,子类重写父类的方法,方法名、参数列表完全相同。 - `Overloaded`的方法可以改变返回值类型,只要参数列表不同即可。 #### 19. 构造器`Constructor`的重写 - 构造器`Constructor`不能被重写(override),但可以被重载(overload)。 #### 20. 接口与抽象类 - 接口可以继承接口。 - 抽象类可以实现接口。 - 抽象类可以继承具体类。 - 抽象类中可以有静态的`main`方法。 #### 21. `clone()`方法 - 在实现`clone()`方法时,通常会有一行代码`super.clone()`,用于调用父类的`clone()`方法。 #### 22. 面向对象特征 - 封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式。 - 继承:允许子类继承父类的属性和方法。 - 多态:允许子类对象替代父类对象,方法的重写和接口的实现体现了多态性。 #### 23. Java中的多态机制 - Java通过方法的重写(override)和接口的实现来实现多态。 #### 24. `abstract class`与`interface` - `abstract class`可以包含抽象方法和非抽象方法,可以有构造器、实例变量等。 - `interface`只能包含抽象方法(自Java 8起允许默认方法和静态方法),没有构造器和实例变量。 #### 25. `abstract`方法与其他修饰符 - `abstract`方法不可以同时是`static`,因为`static`方法是类方法,与抽象方法的概念不符。 - `abstract`方法可以是`native`,因为`native`方法是本地方法,不需具体实现。 - `abstract`方法可以是`synchronized`,表示方法是线程安全的。 #### 26. 内部类与嵌套类 - 内部类:定义在一个外部类内部的类。 - `Static Nested Class`:静态嵌套类,不需要依赖外部类实例。 - `Inner Class`:普通内部类,可以访问外部类的所有成员,包括私有成员。 #### 27. 内部类引用外部类成员 - 内部类可以引用其外部类的所有成员,包括私有成员。 - 内部类访问外部类成员时没有限制,但反过来,外部类访问内部类成员时受到访问权限的限制。 #### 28. 匿名内部类 - 匿名内部类可以继承其他类或实现接口。 - 匿名内部类可以实现接口。 #### 29. `super.getClass()` - `super.getClass()`用于获取父类的`Class`对象,这在多态和反射中经常使用。 #### 30. `String`是否为基本类型 - `String`不是基本数据类型,它是引用类型。 #### 31. `String`对象的内容是否改变 - 原始的`String`对象的内容不变,因为`String`是不可变的。 - `s = s + "world!"`会创建一个新的`String`对象。 #### 32. 是否可以继承`String`类 - `String`类是最终类(final),不允许被继承。 #### 33. `String`对象的创建 - `String s = new String("xyz");`创建了一个`String`对象。 - `String`对象在常量池中只有一个,而在堆中创建了一个新的`String`对象。 #### 34. `String`与`StringBuffer` - `String`是不可变的,每次修改都会创建新对象。 - `StringBuffer`是可变的,并且是线程安全的,适用于多线程环境。 #### 35. 字符串转换为数组 - 可以使用`split()`方法结合`toArray()`方法将逗号分割的字符串转换为数组。 #### 36. 数组与`String`的`length`属性 - 数组没有`length()`方法,而是有`length`属性。 - `String`有`length()`方法,用于获取字符串长度。 #### 37. 字符串拼接创建对象的数量 - `String s = "a" + "b" + "c" + "d";`只创建了一个对象,因为字符串常量在编译期被优化为单个常量。 #### 38. `try-catch-finally`结构中的`return` - `finally`块中的代码始终会被执行,无论是否有异常发生。 - 如果`try`块中有`return`语句,`finally`块会在`return`语句执行之前执行。 #### 39. 未给出具体代码示例,无法确定输出结果。 #### 40. `final`、`finally`、`finalize` - `final`:表示变量或方法不可变。 - `finally`:异常处理结构的一部分,确保一定执行的代码块。 - `finalize`:对象被垃圾回收前调用的方法,用于清理资源,已被弃用。 #### 41. 运行时异常与一般异常 - 运行时异常(如`NullPointerException`):由编程错误引起,通常不需要显式捕获。 - 一般异常(如`IOException`):表示正常条件下可能发生的异常,需要显式捕获。 #### 42. `error`与`exception` - `error`:表示系统级错误,通常是无法恢复的。 - `exception`:表示应用程序级的异常,可以被捕获和处理。 #### 43. 异常处理机制 - 异常处理机制主要包括`try`、`catch`、`finally`块。 - `try`块包含可能引发异常的代码。 - `catch`块用于捕获并处理异常。 - `finally`块用于执行清理工作。 #### 44. 常见的`RuntimeException` - `NullPointerException`:空指针异常。 - `ArrayIndexOutOfBoundsException`:数组索引越界异常。 - `IllegalArgumentException`:非法参数异常。 - `ClassCastException`:类型转换异常。 - `ArithmeticException`:算术异常。 #### 45. 异常处理的关键字 - `throws`:声明一个方法可能会抛出的异常。 - `throw`:抛出异常。 - `try`:尝试执行可能抛出异常的代码。 - `catch`:捕获并处理异常。 - `finally`:无论是否抛出异常都会执行。 - 在`try`块中可以抛出异常。 #### 46. 线程实现方式 - 实现`Runnable`接口。 - 继承`Thread`类。 - 使用`Callable`接口配合`FutureTask`。 - 使用`ExecutorService`和线程池。 #### 47. `sleep()`与`wait()` - `sleep()`是`Thread`类的静态方法,使当前线程暂停指定时间。 - `wait()`是`Object`类的方法,用于释放对象锁并让当前线程等待。 - `wait()`需要在同步方法或同步块中使用。 #### 48. 同步与异步 - **同步**:程序执行时,前一个任务必须完成才能进行下一个任务。 - **异步**:多个任务可以并发执行,无需等待前一个任务完成。 - 在处理耗时任务时使用异步可以提高程序的响应速度和效率。 #### 49. 方法同步性判断 - 由于没有给出具体示例,无法判断方法是否同步。 - 方法是否同步取决于其定义中是否包含`synchronized`关键字。 #### 50. 多线程实现方法与同步方法 - 多线程实现主要有实现`Runnable`接口和继承`Thread`类两种方式。 - 同步方法通过`synchronized`关键字实现,可以应用于方法或者同步块。 #### 51. 启动线程 - 应该使用`start()`方法来启动线程,而不是`run()`方法。 - `start()`方法会启动一个新线程并调用该线程的`run()`方法。 #### 52. 线程与同步方法 - 当一个线程进入一个对象的一个`synchronized`方法后,其他线程不可以进入此对象的其他`synchronized`方法,除非它们持有不同的锁。 - 对象的多个`synchronized`方法之间互斥。 #### 53. 线程的状态 - 新建(New):创建但未启动。 - 就绪(Runnable):已启动,等待CPU分配时间片。 - 运行(Running):正在执行。 - 阻塞(Blocked):等待某种条件。 - 死亡(Dead):线程结束。 - 每种状态之间可以转换,比如从新建到就绪、从运行到阻塞等。
- 粉丝: 3
- 资源: 87
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 对HFSS中的结构使用Icepak进行热仿真-以微带电路为例-HFSS工程
- Linux相关命令包括
- 圣诞树html网页代码
- 上市公司个股估值指标19980924-20240923企业价值倍数股息率BA股市值总市值市盈率市净率市现率市销率母公司 个股日度
- 华为eNSP网络仿真工具平台详解与操作指南
- 毕业设计-基于pytorch深度学习的声纹识别源码(动漫、游戏)源码+视频演示+部署说明+数据集(高分毕设)
- 天津荣联成都四向车项目接口及任务调度详解
- 电信运营商客户流失分析与预测python源码+数据(完整高分项目)
- 上市公司个股走势特征表19990924-20240923连涨天数连跌天数连续放量天数连续缩量天数等 个股日度数据 数据来源:基
- 数字电子技术基础:数制转换、逻辑函数化简与常用逻辑部件详解