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
    */
    

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

  • 相关阅读:
    【若泽大数据实战第一天】大数据测试平台搭建
    数论的编程实验
    2016 百度之星资格赛 A题
    c++总结系列之期中版
    笔试面试算法题解之华为-成绩排序
    Linux光速入门之零基础安装Linux
    面试题
    SET QUOTED_IDENTIFIER
    环境变量
    eclipse的启动失败提示"发生了错误,请参阅日志文件"
  • 原文地址:https://www.cnblogs.com/xiaoxian1369/p/2228260.html
Copyright © 2011-2022 走看看