不是所有人都敢改变自己,但所有敢于改变自己的人 都将成功!

西安软件培训_Java培训机构_西安IT培训_Java视频教程—西安兆隆

当前位置: > Java开发 >

Java面试宝典及答案

时间:2017-10-11 10:00来源:未知 作者:admin 浏览:
每一个新进入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

(信息来源:兆隆IT云学院)

------分隔线----------------------------

Java面试宝典及答案
西安Java培训要多少钱?万八千的学费值得吗?
高中毕业学Java软件开发培训基础
Java入门基础教程之Java学习中的Map接口
------分隔线----------------------------

Java游戏编程入门

很多学习Java编程的人,更有人想从事游戏编程行业,那么对于Java编程语言而言,从事Java游戏编程需要如何去做呢?首先Java语言基础是必不可少的,可以通过Java培训机构系统

Java面试宝典及答案

每一个新进入Java软件开发行业的人员总要经历的就是Java面试,难么对于一些Java面试中常见的问题应该如何回答,这里不再过多的将Java面试的基础部分,而是整理一定的分析论

西安Java培训要多少钱?万八千的学费值得吗

Java程序员在西安软件开发行业越来越受欢迎了,很多人想要通过Java培训班学习进入Java软件开发行业,那么在西安Java培训班学习Java软件开需要多少钱?四到五个月的Java培训

高中毕业学Java软件开发培训基础

Java软件开发一直是IT行业求职人员最为热衷的岗位了,那么高中毕业不想上大学,如何成为Java软件开发工程师?零基础人群参加Java软件开发培训需要什么基础?

推荐内容