2021 Java面试必备知识点详解
需积分: 13 45 浏览量
更新于2024-07-07
收藏 12.09MB PDF 举报
"2021 Java面试题包含Java基础、IO、集合、JVM、多线程、常用框架和计组等多个领域的常见问题,旨在帮助初中高级Java工程师准备面试,提升技能,以获取更好的职业机会。"
1. **面向对象四大特性**:封装、继承、多态和抽象是面向对象编程的四大核心特性。封装是将数据和操作数据的方法捆绑在一起,保护数据不受外部干扰;继承允许子类继承父类的属性和行为,减少代码重复;多态使得一个接口可以有多种不同的实现,增强代码的灵活性;抽象是忽略对象的具体细节,关注其共性,通过抽象类或接口来定义。
2. **Java语言特点**:包括平台独立性、简单性、面向对象、健壮性、安全性、高效性、可移植性、多线程和动态性等。
3. **主类**:Java程序的主类通常包含main方法,它是程序的入口点。应用程序和小程序(如Applet)的主类不同,Applet需要在Web浏览器环境中运行,而应用程序可以直接由Java虚拟机执行。
4. **访问修饰符**:public表示公共,可以在任何地方访问;private表示私有,只能在本类中访问;protected表示受保护,可以在本包及子类中访问;默认(无修饰符)表示包内可见。
5. **float与3.4**:float f = 3.4 是错误的,因为3.4是double类型的,需要转换为float,正确的写法是float f = 3.4f。
6. **Java中的goto**:Java中没有goto语句,它是一种控制流程的转移命令,但在Java中被省略,以鼓励使用结构化编程。
7. **&和&&的区别**:&是位运算符,无论两边表达式是否为真都会进行运算;&&是逻辑运算符,只有当左边表达式为真时,才会计算右边的表达式。
8. **Math.round**:Math.round(11.5)等于12,Math.round(-11.5)等于-11。Math.round总是返回最接近的整数。
9. **2乘以8的计算**:最有效率的方法是使用位左移运算符,即2 << 3。
10. **Java注释**:Java有三种注释方式,单行注释(//)、多行注释(/*...*/)和文档注释(/**...*/),后两者可以用于生成API文档。
11. **数据类型**:Java有基本数据类型(如int、char、boolean)和引用数据类型(类、接口、数组)。
12. **final关键字**:final用来声明不可变的对象、变量或方法,防止被修改。
13. **final、finally、finalize**:final修饰变量或方法;finally用于异常处理,保证代码块一定会执行;finalize是对象被垃圾回收前调用的方法。
14. **String创建**:"i"是字面量字符串,new String("1")是创建新的对象。两者虽然内容相同,但内存地址不同。
15. **String类**:String类提供了许多操作字符串的方法,如concat、substring、indexOf等,与其他字符串类(如StringBuilder、StringBuffer)相比,String是不可变的。
16. **Java克隆**:克隆用于复制对象,分为浅克隆(只复制对象本身,不复制引用的对象)和深克隆(连同引用的对象一起复制)。
17. **new与clone的区别**:new创建新对象,分配新的内存空间;clone复制已有对象,可能共享内存空间。
18. **多态机制**:多态是同一个接口,使用不同的实例而产生不同的效果,Java通过方法的重写和向上转型实现多态。
19. **多态理解**:多态提高了代码的复用性,降低了耦合度,增强了程序的扩展性。
20. **构造器**:构造器用于初始化新创建的对象,不能被重写(override),但可以被重载(overload)。
21. **equals与hashCode**:当两个对象x和y相等(x.equals(y)==true),根据 equals 的约定,它们的hashCode应该相同。但在某些情况下,两个不同的对象可能具有相同的哈希码。
22. **继承String类**:Java中的String类是final的,不能被继承。
23. **String方法**:String类提供了丰富的操作字符串的方法,如length()、trim()、toUpperCase()等。
24. **char与中文**:char类型可以存储单个Unicode字符,包括中文汉字。
25. **this与super**:this代表当前对象,super代表父类对象。
26. **static关键字**:static用于声明静态成员,它们属于类而非类的实例,生命周期始于类加载,终于类卸载。
27. **break、continue、return**:break用于跳出循环或switch语句;continue跳过当前循环迭代;return结束方法并返回结果。
28. **无参构造器**:用于初始化对象,即使没有显式声明,编译器也会自动添加一个无参构造器,除非类中有其他构造器。
29. **构造器特性**:构造器没有返回类型,名称与类名相同,不能被static、final、abstract等修饰。
30. **静态变量与实例变量**:静态变量属于类,所有实例共享;实例变量属于每个实例,互不影响。
31. **静态方法与实例方法**:静态方法与类关联,不依赖实例调用;实例方法与对象关联,必须通过实例调用。
32. **内部类**:内部类分为成员内部类、局部内部类、匿名内部类和嵌套枚举类,提供更灵活的封装和访问控制。
33. **异常分类**:Java异常分为检查型异常(编译时必须处理,如IOException)和运行时异常(可以选择处理,如NullPointerException)。
34. **hashCode与equals**:这两个方法常用于对象的比较,特别是集合类操作。当两个对象equals相等时,它们的hashCode也应该相等。
35. **hashCode方法**:用于返回对象的哈希码,用于快速查找和定位对象。
36. **为什么要有hashCode**:hashCode在哈希表(如HashMap)中起着关键作用,通过哈希码快速定位对象,提高查找效率。
37. **抽象类与接口**:抽象类是部分实现的类,可以有方法体,可以有非抽象方法;接口完全抽象,只能声明方法,Java7开始支持默认方法和静态方法。抽象类用于实现“is-a”关系,接口用于实现“like-a”关系。
这些面试问题覆盖了Java语言的各个方面,充分理解和掌握这些知识点对于成为一名优秀的Java开发者至关重要。
2023-07-06 上传
2021-09-23 上传
2021-04-03 上传
2022-03-25 上传
2024-03-08 上传
2009-03-10 上传
2021-11-13 上传
2022-01-04 上传
2024-12-01 上传
weixin_37177554
- 粉丝: 0
- 资源: 2
最新资源
- Angular实现MarcHayek简历展示应用教程
- Crossbow Spot最新更新 - 获取Chrome扩展新闻
- 量子管道网络优化与Python实现
- Debian系统中APT缓存维护工具的使用方法与实践
- Python模块AccessControl的Windows64位安装文件介绍
- 掌握最新*** Fisher资讯,使用Google Chrome扩展
- Ember应用程序开发流程与环境配置指南
- EZPCOpenSDK_v5.1.2_build***版本更新详情
- Postcode-Finder:利用JavaScript和Google Geocode API实现
- AWS商业交易监控器:航线行为分析与营销策略制定
- AccessControl-4.0b6压缩包详细使用教程
- Python编程实践与技巧汇总
- 使用Sikuli和Python打造颜色求解器项目
- .Net基础视频教程:掌握GDI绘图技术
- 深入理解数据结构与JavaScript实践项目
- 双子座在线裁判系统:提高编程竞赛效率