Java面试必备知识:基础与进阶
需积分: 9 162 浏览量
更新于2024-07-22
收藏 1.14MB PDF 举报
"Java面试宝典2013版.pdf"
该资源是一个针对Java程序员面试的指南,包含了大量的Java基础知识和面试常见问题。以下是部分详细知识点解析:
1. Java源文件与类:一个.java源文件可以包含多个类,但只能有一个公开的(public)类,其他非公开类没有限制。
2. goto关键字:Java中没有goto关键字,它不支持像C/C++那样的跳转语句。
3. &和&&的区别:&是位运算符,用于按位与操作;&&是逻辑运算符,用于短路逻辑与,只有当左侧表达式为真时才会评估右侧。
4. 跳出多重循环:可以用`break`语句跳出当前循环,用`return`语句结束整个方法执行,也可以通过标签(label)配合`break`跳出特定循环。
5. switch语句:switch不支持byte、long和String类型,但在Java 7以后,switch可以支持String。
6. short变量增加:直接相加可能导致溢出,需要类型提升,因此`s1=s1+1`可能出错;而`s1+=1`会自动处理类型提升,避免溢出。
7. char存储中文:char可以存储一个Unicode字符,因此可以存储中文汉字。
8. 计算2乘以8:最有效率的方式是`2 << 3`,利用位左移操作。
9. 一百亿计算器:设计一个能处理大整数的计算器,考虑使用BigInteger类。
10. final关键字:final修饰变量意味着其引用不可变,如果是对象,对象的引用不可变,但对象内容可以变。
11. ==与equals:==比较的是对象的引用,而equals()比较的是对象的内容,对于基本类型,两者效果相同。
12. 静态变量与实例变量:静态变量属于类,实例变量属于对象,静态变量由类初始化,实例变量由对象初始化。
13. static方法与非static方法:不能在static方法内部直接调用非static方法,因为非static方法依赖于实例对象。
14. Integer与int:Integer是int的包装类,int是原始类型,Integer对象在某些情况下需要装箱拆箱。
15. Math.round:Math.round(11.5)等于12,Math.round(-11.5)等于-11。
16. 代码不妥之处:未给出具体代码,无法分析。
17. 作用域:public表示全局访问,private表示私有,protected表示包内及子类访问,不写则默认为包内访问。
18. Overload与Override:Overload是重载,方法名相同但参数列表不同;Override是重写,子类方法覆盖父类方法,必须保持方法签名一致。
19. 构造器不能被override,但可以重载。
20. 接口与继承:接口可以继承接口,抽象类可以实现接口,抽象类也可以继承具体类,但静态main方法不能在抽象类中声明为抽象。
21. clone方法:通常会包含`super.clone()`来创建对象的副本。
22. 面向对象特征:封装、继承、多态。
23. 多态机制:通过方法的重写和接口的实现,以及父类引用指向子类对象实现。
24. abstract class与interface:抽象类可以有方法实现,可以有构造器,可以有成员变量;接口不能有方法实现,不能有构造器,只能有public static final的常量和抽象方法。
25. abstract与static、native、synchronized:抽象方法不能同时是static,因为静态方法与类绑定,而抽象方法与实例绑定。不能同时是native,因为native方法是用C/C++实现的。不能同时是synchronized,因为抽象方法无具体实现。
26. 内部类:内部类是定义在另一个类中的类,分为静态嵌套类(StaticNestedClass)和非静态嵌套类(InnerClass)。静态嵌套类不持有对外部类的引用,而内嵌类可以直接访问外部类的成员。
27. 内部类与外部类成员:内部类可以访问外部类的所有成员,包括私有成员,但外部类不能直接访问内部类的私有成员。
28. A类和B类关系:如果未给出更多信息,无法判断它们之间的关系,可能为继承、实现、组合或其他关系。
这个面试宝典涵盖了广泛的Java知识,是准备Java面试的重要参考资料。
2021-12-19 上传
2012-11-08 上传
2015-07-30 上传
2018-03-16 上传
2019-05-19 上传
2012-06-13 上传
2012-09-12 上传
2013-07-09 上传
YouDesign
- 粉丝: 5
- 资源: 1
最新资源
- 基于Python和Opencv的车牌识别系统实现
- 我的代码小部件库:统计、MySQL操作与树结构功能
- React初学者入门指南:快速构建并部署你的第一个应用
- Oddish:夜潜CSGO皮肤,智能爬虫技术解析
- 利用REST HaProxy实现haproxy.cfg配置的HTTP接口化
- LeetCode用例构造实践:CMake和GoogleTest的应用
- 快速搭建vulhub靶场:简化docker-compose与vulhub-master下载
- 天秤座术语表:glossariolibras项目安装与使用指南
- 从Vercel到Firebase的全栈Amazon克隆项目指南
- ANU PK大楼Studio 1的3D声效和Ambisonic技术体验
- C#实现的鼠标事件功能演示
- 掌握DP-10:LeetCode超级掉蛋与爆破气球
- C与SDL开发的游戏如何编译至WebAssembly平台
- CastorDOC开源应用程序:文档管理功能与Alfresco集成
- LeetCode用例构造与计算机科学基础:数据结构与设计模式
- 通过travis-nightly-builder实现自动化API与Rake任务构建