"2019Java面试题(附答案) 129页 十二章 面面俱到"
这份129页的Java面试复习文档涵盖了Java开发的多个关键领域,旨在帮助求职者准备全面的面试。文档内容分为十二个章节,包括基础概念、算法与编程、前端技术、Java Web、数据库、XML、流行框架、软件工程、J2EE、EJB、Web服务以及面试技巧。
以下是部分Java基础知识面试题的详解:
1. 一个".java"源文件中可以包含多个类,但只能有一个公共类(public class),其他类可以是非公共的(如private或默认访问级别)。
2. Java没有goto语句,这与C/C++等语言不同,Java鼓励使用结构化控制流,避免了无尽的跳转可能导致的混乱。
3. &是位运算符,表示按位与;&&是逻辑运算符,表示逻辑与。在布尔表达式中,&&会进行短路运算,即如果第一个操作数为假,就不会计算第二个操作数。
4. 要跳出多重嵌套循环,可以使用break语句,配合标签(label)来指定跳出特定的循环层。
5. switch语句不能直接作用于byte,但可以通过类型转换;不能作用于long,因为Java 7之前switch只支持byte, short, char和int;在Java 7及以后版本,可以作用于String。
6. shorts1=1;s1=s1+1;是错误的,因为s1+1的结果是int型,需要强制类型转换回short。而s1+=1是正确的,编译器会自动处理类型转换。
7. char型变量可以存储中文字符,因为Java的char类型是16位Unicode编码,足以表示大部分汉字。
8. 计算2乘以8最有效率的方式是直接使用`2 << 3`,利用位移运算。
9. 设计一个能处理一百亿的计算器,需要考虑数值的存储和计算方式,例如使用BigInteger类处理大整数。
10. 使用final修饰变量,意味着该变量一旦赋值后就不能再改变。对于引用类型的final变量,其引用不能变,但引用的对象状态可以变。
11. "=="比较的是两个变量的引用,而equals方法比较的是对象的内容。对于基本类型,"=="与equals行为一致,但对于对象,两者可能不同。
12. 静态变量属于类,所有类实例共享;实例变量属于每个对象,每个对象有自己的副本。
13. 不可以从static方法内部直接调用非static方法,因为static方法与对象无关,而非static方法需要对象实例。
14. Integer与int的区别在于,Integer是int的包装类,支持对象操作,而int是原始类型,效率更高。
15. Math.round(11.5)等于12,Math.round(-11.5)等于-11,round方法四舍五入。
16. 未给出代码,无法分析不妥之处。
17. public、private、protected和默认访问权限分别代表全局、私有、包内可见和仅类内可见。
18. Overload是重载,方法名相同但参数列表不同;Override是重写,子类方法覆盖父类方法。Overloaded方法可以改变返回类型,但Override不可以。
19. 构造器不能被override,但可以被重载。
20. 接口可以继承接口,抽象类可以实现接口,但抽象类不能继承具体类。抽象类中的main方法可以是静态的,但与程序入口无关。
21. 实现clone()方法时,通常会调用super.clone()以创建对象副本。
22. 面向对象的特征包括封装、继承、多态。
23. Java实现多态主要依靠方法的重写(Override)和接口的实现。
24. abstract class可以包含方法实现,而interface只能声明方法。抽象类可以有构造器,而接口不能。
25. abstract方法不能是static、native或synchronized,因为这些特性与抽象方法的定义相冲突。
26. 内部类是定义在另一个类内部的类,分为静态嵌套类(StaticNestedClass)和非静态嵌套类(InnerClass)。静态嵌套类像普通类一样,可以独立于外部类存在;非静态嵌套类需要外部类实例才能创建。
27. 内部类可以直接引用包含类的成员,但不能引用静态成员(除非通过外部类实例)。
28. 匿名内部类可以继承其他类或实现接口,但不能声明为static或有名称。
以上只是部分面试题的解答,完整文档将更深入地探讨这些主题,并提供答案,对于准备Java面试的人来说是一份宝贵的资源。