A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© huburt 中级黑马   /  2016-5-26 09:00  /  794 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

黑马程序员java面试题汇总
面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
  1. byte b1 = 3;
  2. byte b2 = 4;
  3. byte b3 = b1 + b2;
  4. byte b4 = 3 + 4;
复制代码

答:byte b3 = b1 + b2;//编译出错
首先b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值;其次byte类型的变量在进行运算的时候,会自动类型提升为int类型,因此b1 + b2的结果是int类型的,无法赋值给byte类型,只能进行强转后才能赋值。
byte b4 = 3 + 4;//正确
3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了。

面试题:判断输出的值。
  1. System.out.println("hello"+'a'+1);
  2. System.out.println('a'+1+"hello");
  3. System.out.println("5+5="+5+5);
  4. System.out.println(5+5+"=5+5");
复制代码

答:输出结果:helloa1  //任何数据类型用“+”与字符串连接都会变成新的字符串
              98hello  //根据ASCII码表,a对应int类型是97,'a'+1也就是98,然后与字符串相连
              5+5=55   //2个5依次用“+”与字符串相连
              10=5+5   //5+5先进性运算,在与字符串连接

面试题:请计算出x,y的值?
  1. int x = 4;
  2. int y = (x++)+(++x)+(x*10);
复制代码

答:x=6;
y= 4+6+6*10 =70

面试题:问下列哪句会报错,为什么?
  1.   byte b = 10;
  2.     b++;
  3.     b = b + 1;
复制代码

答:b = b + 1;此处报错,1是int类型的,b+1运算b会自动提升为int类型,因此int类型的b+1无法赋值给byte。

面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
  1. short s=1;s = s+1;
  2. short s=1;s+=1;
复制代码

答:s = s+1;此句出错,原因见上题
s+=1;底层相当于s=(short)s+1;

面试题:&&和&、||和|的区别?
答:最终结果一样。
    &&具有短路效果。左边是false,右边不执行。
&是无论左边是false还是true,右边都会执行。
||同样具有短路效果。左边是true,右边不执行。
|是无论左边是false还是true,右边都会执行。

面试题:请实现两个整数变量的交换(不借用第三方参数)
int x = 1;
int y = 2;
答:第一种实现:
x = x^y;        
y = x^y;
x = x^y;
(^的特点:一个数据对另一个数据位异或两次,该数本身不变。)
另一种实现:
x = x+y;
y = x-y;
x = x-y;
(弊端:可能超出int取值范围,损失精度)

面试题:switch的表达式有哪些?
答:switch原本可以支持:byte,short,int,long类型的数据  JDK1.5新增了枚举类型,JDK1.7新增了String类型。

面试题:下列程序的结果是?
   
  1. int x = 2;
  2.     int y = 3;
  3.     switch(x){
  4.         default:
  5.             y++;
  6.         case 3:
  7.             y++;
  8.             break;
  9.         case 4:
  10.             y++;
  11.     }
  12. System.out.println("y="+ y);
复制代码

答:y=5;break表示退出switch语句,没有break会出case穿透。开始x=2,因此进入default,执行y++(4),没有break,参透case 3,继续执行y++(5),遇到break,退出switch,执行打印y=5;

面试题:选择结构if语句和switch语句的区别?
答:if语句和switch语句都能实现根据不同情况做出选择的目的。
switch适合判断固定值的时候用,if适合判断区间或范围的时候用。

面试题:在控制台输出所有的”水仙花数”。水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
举例:153就是一个水仙花数。
153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153
答:
  1. public static void main(String[] args) {
  2.                 for(int i = 100;i<1000;i++){
  3.                         int a = i/100;
  4.                         int b = i/10 - a*10;
  5.                         int c = i%10;
  6.                         if((a*a*a+b*b*b+c*c*c)==i){
  7.                                 System.out.print(i+" ");
  8.                         }
  9.                 }
  10. }
复制代码


面试题:for、while和do...while三种循环语句的区别?
答:do...while循环至少执行一次循环体,而for和while循环必须先判断条件是否成立,然后决定是否执行循环体语句。

面试题:在控制台输出九九乘法表。
答:
  1. public static void main(String[] args) {
  2.                 for(int i=1;i<10;i++){
  3.                         for(int j=i;j<10;j++){
  4.                                 System.out.print(i+"*"+j+"="+(i*j)+'\t');
  5.                         }
  6.                         System.out.println();
  7.                 }
  8. }
复制代码


面试题:return、break和continue 的区别?
答:return 是结束方法;break 是结束循环;continue 是终止本次循环,继续下次循环。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马