华为Java面试试题解析

需积分: 9 1 下载量 163 浏览量 更新于2024-09-15 1 收藏 32KB DOC 举报
"华为java面试题,包含选择题和代码分析,涉及字符串、循环、方法重写与访问控制等Java核心概念。" 在华为的Java面试中,常常会考察候选人的基础知识掌握情况和问题解决能力。以下是对给定面试题的详细解析: 1. 题目1是一个关于字符串不变性的例子。在Java中,字符串是不可变对象,意味着一旦创建,其内容不能更改。`changeStr`方法尝试改变传递的`str`变量,但实际操作的是该字符串的引用,而不是对象本身。因此,`str='welcome';`这条语句并没有改变`main`方法中的`str`,它仍然是指向'1234'的引用。所以输出结果是: ``` 1234 ``` 2. 题目2考察了循环控制和方法调用。这是一个嵌套的条件循环,`for`循环条件由三部分组成:`foo('A')`、`foo('B')`和`(i<2)`。`foo`方法返回`true`并打印字符。首先执行`foo('A')`,然后检查`foo('B')`和`i<2`,如果都为真,则进入循环体。循环体内的`i++`使`i`在第二次迭代时变为1,导致在第二次迭代时`(i<2)`不再为真,循环结束。因此,输出结果是: ``` ABCB ``` 3. 题目3考察了Java的继承和方法重写时的访问权限。类A中有一个受保护的方法`method1`。在扩展类A的类中,哪些方法是有效的? A. `public int method1(int a, int b){return 0;}` - 正确,可以覆盖父类的受保护方法,并提高访问级别。 B. `private int method1(int a, int b){return 0;}` - 错误,不能降低访问级别。 C. `private int method1(int a, long b){return 0;}` - 错误,虽然访问级别合适,但方法签名必须保持一致。 D. `public short method1(int a, int b){return 0;}` - 正确,可以改变返回类型,只要兼容原来的返回类型。 E. `static protected int method1(int a, int b){return 0;}` - 错误,静态方法不能覆盖非静态方法。 所以,正确答案是A和D。 4. 题目4涉及到内部类(Inner Class)和外部类(Outer Class)。题目描述不完整,但通常,内部类可以访问外部类的所有成员,包括私有成员。在Line3处,可能的问题是访问外部类的私有方法或变量,或者创建内部类的实例。正确答案取决于Line3的具体内容,但常见的可能是`new Inner()`来创建内部类实例,或者调用外部类的私有方法。 这些题目反映了Java编程的核心概念,包括字符串的不可变性、循环控制、方法重写以及访问控制。在面试中,理解这些基本概念的原理和应用是非常关键的。