• 兆隆IT云学院

    招生对象
             年龄再20-30周岁之间,具备大专或同等及以上学历(含大专及以上在读),具备良好的逻辑思维能力,有一定的计算机语言基础,身体健康无残疾,有志再IT行业发展的人士。
    培养目标
       通过对学员专业技术的培训和职业素养的强化训练,使学员具备快速进入软件行业从事专业技术及技术相关工作的能力,并对学员日后

    课程大纲

    师资队伍

    就业展示

  • 兆隆软件培训学院

    招生对象
             年龄在16-22周岁之间,具备高中毕业或同等学历,身体健康无残疾,具有良好的逻辑思维能力,有志IT行业发展人士。
    培养目标
       通过对学员专业基础理论和专业技术的培训和职业素养的强化训练,使学员具备进入软件行业从事专业技术及技术相关工作的能力,并对学员日后职业发展打下必要的知识体系及能力基础

    课程大纲

    师资队伍

    就业展示

您的位置:编程培训>Java开发>正文

Java面试宝典及答案

2017年10月11日 10:20供稿中心:兆隆教育

摘要: 每一个新进入Java软件开发行业的人员总要经历的就是Java面试,难么对于一些Java面试中常见的问题应该如何回答,这里不再过多的将Java面试的基础部分,而是整理一定的分析论证思考的Java面试题及答案。
每一个新进入Java软件开发行业的人员总要经历的就是Java面试,难么对于一些Java面试中常见的问题应该如何回答,这里不再过多的将Java面试的基础部分,而是整理一定的分析论证思考的Java面试题及答案。相信关于Java基础的问题每一个兆隆Java培训班毕业的学员都能对答如流,而今天帮大家整理一些需要进行逻辑思考以及论证的常见Java面试问题。
Java开发编程
在JAVA中如何跳出当前的多重嵌套循环?
在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break 语句,即可跳出外层循环。例如,
ok:
for(inti=0;i<10;i++)    {
          for(intj=0;j<10;j++)            {
                  System.out.println(“i=”+ i + “,j=” + j);
                  if(j == 5) break ok;
          }
}
另外,我个人通常并不使用标号这种方式,而是让外层的循环条件表达式的结果可以受到里层循环体代码的控制,例如,要在二维数组中查找到某个数字。
int arr[][] = {{1,2,3},{4,5,6,7},{9}};
boolean found = false;
for(int i=0;i<arr.length &&!found;i++)   {
          for(intj=0;j<arr[i].length;j++){
                  System.out.println(“i=”+ i + “,j=” + j);
                  if(arr[i][j]  == 5) {
                          found= true;
                          break;
                  }
          }
}
 
如何用Java设计一个一百亿的计算器?
首先要明白这道题目的考查点是什么,一是大家首先要对计算机原理的底层细节要清楚、要知道加减法的位运算原理和知道计算机中的算术运算会发生越界的情况,二是要具备一定的面向对象的设计思想。
首先,计算机中用固定数量的几个字节来存储的数值,所以计算机中能够表示的数值是有一定的范围的,为了便于讲解和理解,我们先以byte 类型的整数为例,它用1个字节进行存储,表示的最大数值范围为-128到+127。-1在内存中对应的二进制数据为11111111,如果两个-1相加,不考虑Java运算时的类型提升,运算后会产生进位,二进制结果为1,11111110,由于进位后超过了byte类型的存储空间,所以进位部分被舍弃,即最终的结果为11111110,也就是-2,这正好利用溢位的方式实现了负数的运算。-128在内存中对应的二进制数据为10000000,如果两个-128相加,不考虑Java运算时的类型提升,运算后会产生进位,二进制结果为1,00000000,由于进位后超过了byte类型的存储空间,所以进位部分被舍弃,即最终的结果为00000000,也就是0,这样的结果显然不是我们期望的,这说明计算机中的算术运算是会发生越界情况的,两个数值的运算结果不能超过计算机中的该类型的数值范围。由于Java中涉及表达式运算时的类型自动提升,我们无法用byte类型来做演示这种问题和现象的实验,相信每一位通过四个月Java培训机构学习之后对这些基础知识了如指掌,而面试中却是需要我们将自己所掌握的知识点进行融会贯通,企业需要的是能写代码的Java程序员,而不是只会背诵Java基础语法概念的假程序员。
大家可以用下面一个使用整数做实验的例子程序体验一下:
          inta = Integer.MAX_VALUE;
          intb = Integer.MAX_VALUE;
          intsum = a + b;
          System.out.println(“a=”+a+”,b=”+b+”,sum=”+sum);
 
先不考虑long类型,由于int的正数范围为2的31次方,表示的最大数值约等于2*1000*1000*1000,也就是20亿的大小,所以,要实现一个一百亿的计算器,我们得自己设计一个类可以用于表示很大的整数,并且提供了与另外一个整数进行加减乘除的功能,大概功能如下:
()这个类内部有两个成员变量,一个表示符号,另一个用字节数组表示数值的二进制数
()有一个构造方法,把一个包含有多位数值的字符串转换到内部的符号和字节数组中
()提供加减乘除的功能
public class BigInteger{
          intsign;
          byte[]val;
          publicBiginteger(String val) {
                  sign= ;
                  val= ;
          }
          publicBigInteger add(BigInteger other) {
                 
          }
          publicBigInteger subtract(BigInteger other)    {
                 
          }
          publicBigInteger multiply(BigInteger other){
                 
          }
          publicBigInteger divide(BigInteger other){
                 
          }
 
}

要想写出这个类的完整代码,是非常复杂的,如果有兴趣的话,可以参看jdk中自带的java.math.BigInteger类的源码。而在Java面试的过程中,面试官也清楚短时间内是不可能完整的书写代码的,他要的是你是否有这方面的概念和意识,他最重要的还是考查你的能力,所以,不要因为自己不能完整的写出Java代码段而放弃这类问题。另外,答案中的框架代码也很重要,体现了一些面向对象设计的功底,特别是其中的方法命名很专业,用的英文单词很精准,从一些细节问题往往能反应一个Java程序员的代码水平,以及除过专业代码水平之外的软能力,比如说精准的英文单词明明体现出了一定的英语功底,那么对于外文的技术文档肯定轻松驾驭,再就是良好的编码风格也是一个优秀Java程序员的基本素养。

文章来源:www.zhaolongedu.com

陕ICP备05010305号 Copyright  ©  2001-2018隶属于西安兆隆计算机培训学校版权所有