博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 外企面试若干题
阅读量:6872 次
发布时间:2019-06-26

本文共 3214 字,大约阅读时间需要 10 分钟。

1Which of the following fragments might cause errors? (5%)

  A. String s = “Gone with the wind”;
  String t = ” good “;
  String k = s + t;

  可以,String重载了+ 运算符

  B. String s = “Gone with the wind”;

  String t;
  t = s[3] + “one”;

  不可以,s[3]表示的是字符串数组s,而这里是字符串s。

  C. String s = “Gone with the wind”;

  String standard = s.toUpperCase();

  可以

  D. String s = “home directory”;

  String t = s – “directory”;

  不可以,String没有重载-运算符

2 public class Parent { (5%)

  public int addValue( int a, int b) {
  int s;
  s = a+b;
  return s;
  }
  }
  class Child extends Parent {

  }

  Which methods can be added into class Child?
  A. int addValue( int a, int b ){// do something…}

  不行,访问权限不行默认为default

  B. public void addValue (){// do something…}

  可以,另外一种方法

  C. public int addValue( int a ){// do something…}

  可以,另外一种方法,当有同一种方法名时,以变量的个数的不同,选择方法,重载

  D. public int addValue( int a, int b )throws MyException {//do something…}

  不可以,异常在父类中不存在,所以抛出不行

  E.public int addValue(int a,int b){//do something}

  可以,重写了父类的方法

3 Given: (5%)

Exhibit:

public class Main {	public static void stringReplace(String text) {		text = text.replace('j', 'i');	}	public static void bufferReplace(StringBuffer text) {		text = text.append("C");	}	public static void main(String[] args) {		String textString = new String("java");		StringBuffer textBuffer = new StringBuffer("java");		stringReplace(textString);		bufferReplace(textBuffer);		System.out.println(textString + textBuffer);	}}/*运行结果:javajavaC*/

 String类是不可变的类,是final类,而StringBuffer类是可以修改的,修改的是对象本身(个人理解,不对,请指教,谢谢)

What is the output?

4.对于

int a =4;

1).a+=(a++);

先a++,所以右边的值为4,之后左边的a=5,所以结果为a+5=9

2).a+=(++a); 

先++a,所以右边的值为5,并且a=5,所以结果为a+5=10

以下编译出错:

3).(a++)+=a;

4).(a++)+=(a++); 

5).(a++)+=(++a);

以下只能在C++中才能编译通过: 

6).(++a)+=a;

先执行++a,此时a=5,之后该式子的右边的值为5,所以结果为a+5=10

7).(++a)+=(a++);

先执行左边的++a,a就变为5,之后执行a++,所以此式右边为5,之后a为6,所以结果就是a+5=11

8).(++a)+=(++a);

先执行++a,之后a=5,在执行++a,a=6,此时式子的右边的值为6,所以结果为a+6=12

总结:由于++的运算优先级高于+=,所以式子中先执行++的运算,之后在执行+=。

 扩展:

  9).a=(a++)+a

  先执行a++,之后a=5,此时第一个括号的值为a,而此时第二个括号的式子的值为5,之后从右向左赋值给a,所以结果为a+5=10

   10).a=(a++)+(a++)

  先执行a++,之后a=5,此时第一个括号的值为a,在执行a++,之后a=6,而此时第二个括号的式子的值为5,之后从右向左赋值给a,所以结果为a+5=11

  11).a=(a++)+(++a)

  先执行a++,之后a=5,此时第一个括号的值为a,在执行++a,之后a=6,而此时第二个括号的式子的值为6,之后从右向左赋值给a,所以结果为a+5=11

  12).a=(++a)+a

  先执行++a,之后a=5,此时第一个括号的值为a,而此时第二个括号的式子的值为5,之后从右向左赋值给a,所以结果为a+5=10

  13).a=(++a)+(a++)

  先执行++a,之后a=5,此时第一个括号的值为a,在执行a++,之后a=6,而此时第二个括号的式子的值为5,之后从右向左赋值给a,所以结果为a+5=11

  14).a=(++a)+(++a)

  先执行++a,之后a=5,此时第一个括号的值为a,在执行++a,之后a=6,此时第二个括号的式子的值为6,之后从右向左赋值给a,所以结果为a+6=12

 

code:

#include
#include
using namespace std;int main() { int a = 4; a += (a++); printf("%d\n", a); a = 4; a += (++a); printf("%d\n", a); a = 4; (++a) += a; printf("%d\n", a); a = 4; (++a) += (a++); printf("%d\n", a); a = 4; (++a) += (++a); printf("%d\n", a); a = 4; a = (a++) + a; printf("%d\n", a); a = 4; a = (a++) + (a++); printf("%d\n", a); a = 4; a = (a++) + (++a); printf("%d\n", a); a = 4; a = (++a) + a; printf("%d\n", a); a = 4; a = (++a) + (a++); printf("%d\n", a); a = 4; a = (++a) + (++a); printf("%d\n", a); return 0;}/*91010111291011101112*/

 

以上仅是个人浅见,路过的大牛,请指教,谢谢。

转载于:https://www.cnblogs.com/xiaoxian1369/archive/2011/10/29/2228260.html

你可能感兴趣的文章
《Effective C#》读书笔记——条目21:限制类型的可见性<使用C#表达设计>
查看>>
年关将至,公司都有年会了,做个幸运大抽奖软件,一起庆祝下
查看>>
书单标签:IT技术 - 酷瓜书单
查看>>
PhoneGap Connection
查看>>
Artificial Intelligence: How To Build A Robot - Udacity
查看>>
分享jQuery瀑布流的插件和案例、几款jquery瀑布流插件、jquery瀑布流下载
查看>>
Java基础10 接口的继承与抽象类
查看>>
JavaScript中的类型
查看>>
Heritrix 3.1.0 源码解析(十六)
查看>>
uva 270 Lining Up
查看>>
数组集合oracle 11g PL/SQL Programming学习五
查看>>
[Python] 安装及环境配置
查看>>
Qt中float类型与QString类型相互转换
查看>>
cocos2d-x学习笔记之辅助工具
查看>>
C/C++程序员应聘常见面试题剖析(经典)
查看>>
ASP.net Web API综合示例
查看>>
ie6下a标签使用location.href 不跳转的解决办法
查看>>
向量样本【模式识别】感知器 Perceptron
查看>>
委托杂谈
查看>>
《Android内核剖析》读书笔记 第7章 理解Context
查看>>