• Java 外企面试若干题


    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<stdio.h>
    #include<iostream>
    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;
    }
    
    /*
    9
    10
    10
    11
    12
    9
    10
    11
    10
    11
    12
    */
    

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

  • 相关阅读:
    [BZOJ1211]:[HNOI2004]树的计数(prufer序列)
    [CSP-S模拟测试]:那一天她里我而去(堆优化Dijkstra)
    [CSP-S模拟测试]:那一天我们许下约定(DP+组合数学)
    BZOJ3130 [Sdoi2013]费用流 【网络流 + 二分】
    BZOJ3124 [Sdoi2013]直径 【树的直径】
    BZOJ3122 [Sdoi2013]随机数生成器 【BSGS】
    BZOJ2707 [SDOI2012]走迷宫 【概率dp + tarjan + 高斯消元】
    BZOJ2726 [SDOI2012]任务安排 【斜率优化 + cdq分治】
    洛谷P2351 [SDOi2012]吊灯 【数学】
    BZOJ2246 [SDOI2011]迷宫探险 【记忆化搜索dp + 概率】
  • 原文地址:https://www.cnblogs.com/xiaoxian1369/p/2228260.html
Copyright © 2020-2023  润新知