Java就业面试题大全

VIP免费
2024-12-11 5 0 509.5KB 147 页 5.9玖币
侵权投诉
Java 面试葵花宝典
1、一个".java"源文件中是否可以包括多个类(不是内部
类)?有什么限制?
可以有多个类,但只能有一个 public 的类,并且 public 的类名必须与文件名相一致。
2Java 有没有 goto?
java 中的保留字,现在没有在 java 中使用。
3、说说&&&的区别。
&&&都可以用作逻辑与的运算符,表示逻辑与and),当运算符两边的表达式的结果都true 时,
整个运算结果才为 true,否则,只要有一方为 false,则结果为 false
&&还具有短路的功能,即如果第一个表达式为 false,则不再计算第二个表达式,例如,对于 if(str !=
null && !str.equals(“”)) 表达式,当 str null 时,后面的表达式不会执行,所以不会出现
NullPointerException 如果将&&&,则会抛出 NullPointerException 异常。If(x==33 & ++y>0) y
If(x==33 && ++y>0)不会增长
&还可以用作位运算符,当&操作符两边的表达式不是 boolean 类型时,&表示按位与操作,我们通常
使用 0x0f 来与一个整数进行&运算,来获取该整数的最低 4bit 位,例如,0x31 & 0x0f 的结果为 0x01
备注:这道题先说两者的共同点,再说&&&的特殊之处,并列举一些经典的例子来表明自己理
解透彻深入、实际经验丰富。
4、在 JAVA 中如何跳出当前的多重嵌套循环?
Java 中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码
中使用带有标号的 break 语句,即可跳出外层循环。例如,
ok:
for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
Java 面试葵花宝典
{
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(int j=0;j<arr[i].length;j++)
{
System.out.println(“i=” + i + “,j=” + j);
if(arr[i][j] == 5)
{
found = true;
break;
}
}
}
5switch 语句能否作用在 byte 上,能否作用在 long 上,能
否作用在 String ?
switchexpr1)中,expr1 只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是
int 基本类型或 Integer 装类型,由于,byte,short,char 都可以隐含转换为 int,所以,这些类型以及这些类
型的包装类型也是可以的。显然,long String 型都不符合 switch 的语法规定,并且不能被隐式转换成
int 类型,所以,它们不能作用于 swtich 语句中。
6short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;
有什么错?
对于 short s1 = 1; s1 = s1 + 1; 由于 s1+1 运算时会自动提升表达式的类型,所以结果是 int 型,再赋值
Java 面试葵花宝典
short 类型 s1 时,编译器将报告需要强制转换类型的错误。
对于 short s1 = 1; s1 += 1;由于 += java 语言规定的运算符java 译器会对它进行特殊处理,因此
可以正确编译。
7char 型变量中能不能存贮一个中文汉字?为什么?
char 型变量是用来存储 Unicode 编码的字符的,unicode 编码字符集中包含了汉字,所以,char 型变量
中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在 unicode 编码字符集中,那么,这个 char
型变量中就不能存储这个特殊汉字。补充说明:unicode 编码占用两个字节,所以,char 类型的变量也是占
用两个字节。
备注:后面一部分回答虽然不是在正面回答题目,但是,为了展现自己的学和表现自己对题理解
的透彻深入,可以回答一些相知识知无不言,言
8、用最有效率的方法算出 28等於几?
2 << 3
因为将一个数左移 n位,就相当于2n方,那么,一个数8只要将其左移 3位即可,
而位运算 cpu 直接支持的,效率,所以,28等於几的最效率的方法是 2 << 3
9请设计一个一百亿的计算器
先要明这道题目的查点是什么,一是大家首先要对计算机原理的节要清楚、要加减
法的位运算理和道计算中的算运算会发生越界情况,二是要具备一定的面想。
先,计算中用定数量的个字节来存储的数值,所以计算中能表示的数值是有一定的范围
的,为了便解和理解,我们先以 byte 类型的整数为例,它用 1个字节进行存储,表示的最大数值范围
-128 +127-1 在内存中对的二进制数11111111,如果两个-1 ,不考虑 Java 运算时的类型提
升,运算后产生进位,二进制结果为 1,11111110由于进位后过了 byte 类型的存储空间所以进位部
分被舍弃即最的结果11111110,也就是-2,这正位的方式实现了的运算。-128 内存
中对的二进制10000000,如果两-128 Java 运算时的类型提升,运算后会产生
位,二进制结果为 1,00000000,由于进位后过了 byte 类型的存储空间,所以进位部分被舍弃,即最
结果为 00000000,也就0,这的结果显然不是我们期望的,这说计算的算运算是发生越界
情况的,两个数值的运算结果不能过计算中的该类型的数值范围由于 Java 及表达式运算时的类
型自动提升,我们法用 byte 类型来做演示这种题和现的实验,大可以用面一个使用整数实验
的例子程序体验一
int a = Integer.MAX_VALUE;
int b = Integer.MAX_VALUE;
int sum = a + b;
System.out.println(“a=”+a+”,b=”+b+”,sum=”+sum);
Java 面试葵花宝典
先不考虑 long 类型,由于 int 的正数范围231 方,表示的最大数值约等2*1000*1000*1000
也就20 亿的大,所以,要实现一个百亿的计算器,我计一个类可以用于表大的
数,并且提了与另外一个整数进行加减乘除的功能,大功能如
()这个类内部有两个成变量,一个表示符号,另一个用字节数组表示数值的二进制数
()有一个构造方法,一个包含有多位数值的字符转换到内部的符号和字节数组中
()提供加减乘除的功能
public class BigInteger
{
int sign;
byte[] val;
public Biginteger(String val)
{
sign = ;
val = ;
}
public BigInteger add(BigInteger other)
{
}
public BigInteger subtract(BigInteger other)
{
}
public BigInteger multiply(BigInteger other)
{
}
public BigInteger divide(BigInteger other)
{
}
}
备注:要想出这个类的整代码,是的,如果有,可以jdk 中自带的
java.math.BigInteger 类的源码。面的人也都不可能在短时出这个类的整代码的,要的
是否有这方面的概念意识最重要的还是的能,所以,不要因为自己整的
结果就放弃答这道题,的就是你比别人写得多,你比别人强,有这方面的意识就可
以了,毕竟别人可能题目的意思,什么都没于答这道题,即使只答了一部分,那也
与那些什么都不的人区别出来,拉开距离,算是子中的个,会当然就了。另外,答
框架代码也重要,体现了一些面象设计的功,特别是中的方法很专业,用的单词很
精准,这也是能经验、专业性水平等多个方面的体现,会给人留下很好印象,在编
方面条件不多的情况下好除了可以使更多会外,薪水可以出一千元
Java 面试葵花宝典
10使用 final 关键修饰一个变量时,是用不能变,还是
用的对不能变?
使用 final 修饰一个变量时,是用变量不能变,用变量所中的内还是可以
改变的。例如,对于如语句:
final StringBuffer a=new StringBuffer("immutable");
执行如语句将报告编译错误:
a=new StringBuffer("");
但是,执行如语句则可以通过编译:
a.append(" broken!");
有人在定义方法的数时,可能想用如下形式来阻止方法内部进来的数对
public void method(final StringBuffer param)
{
}
实际上,这是不到的,在该方法内部然可以增代码来数对
param.append("a");
final:可以修饰类、方法和属性
如果修饰类:那么该类不能被继承
修饰方法:方法不能重
修饰属性属性不能用=(不能重赋值表示常量)
11"=="equals 方法究竟有什么区别?
单独把一个东西清楚,然后再说清楚另一个,这,它们的区别自然就出来了,在一说,则
很难清楚
==操作符专门用来比较两个变量的值是否相,也就是用于比较变量所对的内存中所存储的数值是
否相同,要比较两个基本类型的数或两个用变量是否相,只能用==操作符。
如果一个变量指向的数是对类型的,那么,这时候涉及了两内存,对占用一内存(
内存),变量也占用内存,例Objet obj = new Object();变量 obj 一个内存new Object()是另一个
内存,此时,变量 obj 所对的内存中存储的数值就是对用的那内存的地址。对于类型
的变量,如果要比较两个变量是否指向同一个对,即要这两个变量所对的内存中的数值是否相
这时就需要用==操作符进行比较
equals 方法是用于两个独立是否相同,就好比去比较个人的长相是否相同,它
的两个对独立的。例如,对于面的代码:
String a=new String("foo");
String b=new String("foo");
Java 面试葵花宝典
两条 new 语句创建了两个对,然后用 a,b 这两个变量分别指向中一个对,这是两个不同的对
,它们的首地不同的,ab中存储的数值是不相同的,所以,表达式 a==b false,而
两个对中的内是相同的,所以,表达式 a.equals(b)true
在实际开 发 中,我们经常要比较传递进行来的字符是 否 ,例如, String input =
…;input.equals(“quit”)不注就使用==进行比较了,这是错误的,便从目实
视频看看,里面就有大量这的错误。记住,字符比较基本上都是使用 equals 方法。
如果一个类没有自己定义 equals 方法,那么它将Object 类的 equals 方法,Object 类的 equals 方法
的实现代码如
boolean equals(Object o){
return this==o;
}
这说明,如果一个类没有自己定义 equals 法,equals 法(Object 继承的)就是使
==操作符,也是在比较两个变量的对是否是同一对,这时使equals 和使用==到同
的结果,如果比较的是两个独立的对总返false。如果的类希望够比较该类创建的两个实例
的内是否相同,那么必须覆盖 equals 方法,由自己代码来定在什么情况即可两个对
的内是相同的。
12静态变量和实例变量的区别?
在语法定义上的区别:静态变量前要static 关键字,而实例变量前则不
程序运行时的区别:实例变量于某个对属性,必须创建了实例对中的实例变量才会被
配空间,才能使用这个实例变量。静态变量不于某个实例对,而是于类,所以也为类变量,只
程序加载了类的字节码,不用创建任何实例对静态变量就会被分配空间静态变量就可以被使用了 。
之,实例变量必须创建后才可以通过这个对来使用,静态变量则可以直接使用类名来用。
例如,对于面的程序无论创建个实例对永远都只分了一staticVar 量,并且每创
一个实例这个 staticVar 1但是创建一个实例就会instanceVar即可
多个 instanceVar,并且instanceVar 的值都只自1
public class VariantTest
{
public static int staticVar = 0;
public int instanceVar = 0;
public VariantTest()
{
staticVar++;
instanceVar++;
System.out.println(“staticVar=” + staticVar + ”,instanceVar=” + instanceVar);
}
}
备注:这个解答了说清楚两者的区别外,最后还用一个具体的用例子来说明两者的异,体现了
自己有很好的解说题和例的能敏捷过一般程序员,有作能力!
Java 面试葵花宝典
13是否可以一个 static 方法内部出对static 方法的
用?
不可以。因为static 方法是要与对象关联在一的,必须创建一个对后,才可以在该对上进行方
用,而 static 方法用时不需要创建,可以直接调用。也就是说,当一个 static 方法被用时,可
能还没有创建任何实例对,如果一个 static 方法中出对static 方法的用,那个static 方法是
个对上的?这个逻辑法成,所以,一个 static 方法内部出对static 方法的用。
14Integer int 的区别
int java 8原始类型之一。Java 类型提类,Integer java int
装类。int 值为 0Integer null,即 Integer 可以区分出赋值和值为 0的区
int 法表达出赋值的,例如,要想表达出没有参加考试0的区别,则只能使用
Integer。在 JSP 中,Integer 默认null,所以用 el 表达式在文本中显示时,值为空白,而
int 默认默认值为 0,所以用 el 表达式在文本中显示时,结果为 0,所以,int 合作为 web 层的表
的类型。
Hibernate 中,如果将 OID 定义为 Integer 类型,那么 Hibernate 就可以根据其值是否为 null 判断
个对是否是时的,如果将 OID 定义为了 int 类型,还需要在 hbm 映射文件中设置其 unsaved-value 属性
0
另外,Integer 了多个与整数相的操作方法,例如,将一个字符转换成整数,Integer 中还定义
了表示整数的最大值和最值的常量。
15Math.round(11.5)等於? Math.round(-11.5)等於?
Math 类中提个与取整有的方法:ceilfloorround,这些方法的作用与它们的文名的含
ceil Math.ceil(11.3)
12,Math.ceil(-11.3)的结果是-11floor 义是地板,该方法就表示向下取整,所以,Math.floor(11.6)
的结果为 11,Math.floor(-11.6)的结果是-12难掌握round 方法,它表示“四舍五,算法为
Math.floor(x+0.5) , 即 将 来 的 数 字 0.5 后 再 向 下 取 整 , 所 以 , Math.round(11.5) 的 结 果 为
12Math.round(-11.5)的结果为-11
Java 面试葵花宝典
15面的代码有什么不之处?
1. if(username.equals(“zxx”){}
2. int x = 1;
return x==1?true:false;
1说出作用publicprivateprotected,以及不
的区别
个作用的可见范围表所示。
说明:如果在修饰元素上面没有写任访问修饰符,则表示 friendly
作用 当前类 同一 package 其他 package
public
protected ×
friendly × ×
private × × ×
备注:只要记住了有 4访问权限,4访问范围,然后将范围水平上分别按
从小到大或大到顺序排列,就很容易画出上面的了。
2Overload Override 的区别。Overloaded 的方法是否可
以改变回值的类型?
Overload 是重意思Override 覆盖意思,也就是重
Overload 表示同一个类中可以有多个名相同的方法,但这些方法的数列表不相同(即
个数或类型不同)。
Override 表示子类中的方法可以与类中的某个方法的名完全相同,通过子类创建的实
例对象调用这个方法时,将用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖
了,这也是面的多态性的一种表现。子类覆盖父类的方法时,只能比父类抛出更的异常,或
Java 面试葵花宝典
者是抛出类抛出的异常的子异常,因为子类可以解决父类的一些题,不能比父类有更多的题。子类
方法的访问权限只能比父类的更大,不能更。如果类的方法是 private 类型,那么,子类则不存在覆盖
的限制,相当于子类中增了一个全新的方法。
Overloaded 的方法是否可以改变回值的类型这个题,要看你什么?这个题目
。如果Overloaded 的方法的数列表不一,它们的回者类型当然也可以不一。但我
题是:如果两个方法的数列表完全,是否可以让它们的回值不同来实现重Overload。这
是不行的,我们可以用法来说明这个题,因为我们有时候调用一个方法时也可以不定义回结果变
量,即不要其返回结果,例如,我们map.remove(key)方法时,虽然 remove 方法有回值,但是
我们通常都不会定义回结果的变量,这时该类中有两个名数列表完全相同的方法,
回类型不同,java 法确定编是想个方法了,因为它法通过回结果类型来
override 可以译为覆盖字面就可以道,它是覆盖了一个方法并且对,以
达到不同的作用。对我们来说最熟悉覆盖就是对方法的实现,在中一只是对
方法进行了明,而我们在实现时,就需要实现口声明的所有方法。了这个典型的用
法以外,我们在继承中也可能会在子类覆盖父类中的方法。在覆盖要注点:
1覆盖的方法的标必须要和被覆盖的方法的标完全,才能达到覆盖
2覆盖的方法的回值必须和被覆盖的方法的回一致
3覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是子类
4覆盖的方法不能为 private,否则在子类中只是定义了一个方法,并没有对进行
覆盖
overload 对我们来说可能比较熟悉,可以译为重,它是我们可以定义一些名相同
的方法,通过定义不同的数来区分这些方法,然后再用时,VM 就会根据不同的
式,来的方法执行。在使用重要注点:
1、在使用重时只能通过不同的式。例如,不同的数类型,不同的数个数,不
同的顺序(当然,同一方法内的数类型必须不一,例如可以是 fun(int,float)
但是不能为 fun(int,int)
2、不能通过访问权限、回类型、抛出的异常进行重载;
3、方法的异常类型和数目不会对重载造影响
4、对说,如果某一方法在类中访问权限是 priavte,那么就不能
在子类对进行重,如果定义的,也只是定义了一个方法,而不会达到
果。
3421 同学贡献的一些题?
朱 wenchao350021 岁
了多个重方法,数分别是 int ,char,double,然后将 double x = 2
传递,会个方法?
说说对 javaee 中的 session 的理解,么用 session 的?
Java 面试葵花宝典
yong, 4000
一个子里有子,子有子与子是什么子与是什么
如果子有多个子,就是,否则是一种关联,当然合是一种特殊的
子与时组合
说说 has a is a 的区别。
答:is-a 表示的是得关于一种动继承关)。
has-a 表示组合,包含子包含有组件
工厂模式的类
4515 同学贡献的一些题?
1. 线如何同和通 同学回答说 synchronized 方法或代码块!官似乎太满意!
有多synchronized 代码使的是,这synchronized
才具有线互斥a代码obj1 作为器对b代码obj2 作为
器对,那么,两个并线可以同时分别进入这两个代码 这里还可以分
理。
对于同方法的分,所用的同步监器对this
对于静态方法的分,所用的同步监器对是该类的 Class
对如何实现代码与方法的同进行分
2.ClassLoader 如何加载 class
jvm 里有多个类加载加载加载特定位的类,例如, bootstrap 加载
加载 jre/lib/rt.jar 的类 我们时用jdk 中的类都位rt.jar 中。extclassloader
jar/lib/ext/*.jar 中的类,appclassloader classpath 定的目jar 中的类。
bootstrap 之外,其他的类加载器本也都是 java 类,它们的类是 ClassLoader
3.Servlet 生命
4.类的作用
5.ArrayList 如何实现入的数按自定义的方式有
class MyBean implements Comparable{
public int compareTo(Object obj){
if(! obj instanceof MyBean)
throw new ClassCastException() //具体异常的名,我要查 jdk
MyBean other = (MyBean) obj;
return age > other.age?1:age== other.age?0:-1;
}
}
class MyTreeSet {
private ArrayList datas = new ArrayList();
摘要:

Java面试葵花宝典1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。2、Java有没有goto?java中的保留字,现在没有在java中使用。3、说说&和&&的区别。&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str!=null&&!str.equals(“”)...

展开>> 收起<<
Java就业面试题大全.doc

共147页,预览30页

还剩页未读, 继续阅读

声明:本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。玖贝云文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知玖贝云文库,我们立即给予删除!
分类:计算机 价格:5.9玖币 属性:147 页 大小:509.5KB 格式:DOC 时间:2024-12-11

开通VIP享超值会员特权

  • 多端同步记录
  • 高速下载文档
  • 免费文档工具
  • 分享文档赚钱
  • 每日登录抽奖
  • 优质衍生服务
/ 147
客服
关注