阿里巴巴研发笔试题解析:进制转换与Java编程实践

版权申诉
0 下载量 162 浏览量 更新于2024-09-09 收藏 526KB PDF 举报
"阿里巴巴2016研发工程师笔试题及答案(二).pdf" 这篇文档是阿里巴巴2016年研发工程师的笔试题目的部分摘录,包含了与计算机科学和编程相关的多道题目,主要涉及了数值进制、Java语言特性和面向对象编程的概念。 第一题考察的是数值进制的理解。根据题目中的公式78+78=123,我们可以推断出这不是十进制的计算结果,因为78+78在十进制中不会等于123。通过观察数字和它们的和,我们可以发现每个数字都在10以内,所以可能是小于10的其他进制。由于7在该进制中代表的数值超过了5(在五进制中,7代表5),我们可以排除五进制。同样,7也不会出现在二进制、三进制或四进制中。因此,最有可能的答案是C,即13进制,因为在13进制中,7+7=13,8代表10,符合题目的计算规则。 第二题是关于Java中的基本类型和引用类型的比较。题目中定义了一个整型变量i和一个Integer对象j,然后比较i和j。首先,i==j是比较两个对象的引用是否相同,由于一个是原始类型,另一个是对象,所以它们的引用肯定不同,输出为false。然后,j.equals(i)调用Integer对象的方法来比较其包含的值是否相等,这里都是0,所以结果为true。因此,正确答案是B,即`false,true`。 第三题是一个关于方法调用和对象状态的问题。在Java中,方法参数传递的是值的副本,而不是引用。题目中的`change`方法接受一个字符串引用和字符数组作为参数。方法内部改变了字符串str的引用(将其指向了"testok"),但原对象ex.str并没有改变,所以第一个输出仍然是"hello"。对于字符数组ch,方法内部改变的第一个元素的值,这会影响到原数组,因此第二个输出是'c'。所以,正确答案是B,即`helloandcb`。 第四题涉及到Java的静态方法和空对象调用。`testMethod`是静态方法,可以通过类名直接调用,不需要实例化对象。但是,尝试用null对象调用非静态方法会抛出NullPointerException。在本例中,`((TestClass)null).testMethod();`虽然能够通过编译,但在运行时会抛出NullPointerException。因此,正确答案是B,即`编译通过,运行异常,报NullPointerException`。 这些题目展示了面试中可能遇到的编程基础知识和逻辑推理能力的测试,对理解计算机科学基础和Java编程有很好的复习价值。