本文档分享了作者在2011年5月参加南京南瑞信通公司面试的经历,主要关注的是技术方面的试题,包括选择题和面向对象编程的相关概念。以下是部分内容的详细解析:
1. 选择题部分:
- 题目1询问的是关于循环结构的判断。选项A中的`while`循环有一个`break`语句,当`i`超过100时会跳出循环,因此它不是死循环。选项B的`for(;;)`表示一个无限循环,不包含任何终止条件,是典型的死循环。选项C中的`do...while`循环会在`k`小于10000时持续执行,当`k`等于10000时结束,不是死循环。选项D中的`while(s);--s;`因为`s`被初始化为36,而循环条件是`s`,当`s`为0时结束,但由于这里`s`被赋值后立即递减,会形成死循环。
2. 第二个问题是关于线程的启动点。Java中,如果一个类要创建新线程进行执行,通常定义`Runnable`接口或者继承`Thread`类。题目要求选择作为新线程启动点的方法。正确答案是A `public void start()`,这是`Thread`类中的方法,用于启动一个新的线程实例。
3. 第三个问题是关于继承和调用父类方法的问题。在Java中,子类可以访问和调用父类的`protected`成员。题目中,子类`SubclassY`创建了两个对象`objX`和`objY`,然后在`subclassMethodY`中,虽然`objY`是`SubclassY`实例,但可以通过`superclassMethodX()`调用父类`SuperclassX`的`protected`方法。至于`superclassVarX`,由于是`protected`变量,`objY`也可以直接访问,所以代码中`int i = objY.superclassVarX;`不会报错。但根据代码,没有显示实际执行这些操作的结果,所以这部分可能需要额外上下文来确定答案。
总结,这份文档提供了实用的面试经验,涉及Java基础、循环结构的理解、多线程编程和面向对象编程中的继承与访问控制。对于准备参加南瑞或类似公司面试的求职者来说,这些问题有助于复习和提升相关技术能力。同时,理解并解答这些问题也能展示应聘者对Java语言和编程实践的扎实掌握。