zoukankan      html  css  js  c++  java
  • 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
    */
    

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

  • 相关阅读:
    Linux内核网络协议栈优化总纲
    Java实现 蓝桥杯VIP 算法训练 连续正整数的和
    Java实现 蓝桥杯VIP 算法训练 连续正整数的和
    Java实现 蓝桥杯VIP 算法训练 寂寞的数
    Java实现 蓝桥杯VIP 算法训练 寂寞的数
    Java实现 蓝桥杯VIP 算法训练 学做菜
    Java实现 蓝桥杯VIP 算法训练 学做菜
    Java实现 蓝桥杯VIP 算法训练 判断字符位置
    Java实现 蓝桥杯VIP 算法训练 判断字符位置
    Java实现 蓝桥杯VIP 算法训练 链表数据求和操作
  • 原文地址:https://www.cnblogs.com/xiaoxian1369/p/2228260.html
Copyright © 2011-2022 走看看