面试题(一)-java

1,javac java命令
答:
javac编译命令: 将java文件编译成.class字节码文件 javac Test.java
java运行命令:运行.class文件 java Test

2,int i=20000000000000;报错吗?为什么?
答:报错,因为int的取值范围为: -231——231-1,即-2147483648—2147483647 十位数左右

3, B(browser)/S(server) 跟C(client)/S(server)架构区别是什么?
答:
B/S结构即浏览器和服务器结构 常用于网页,如www.taobao.com
C/S结构即客户端和服务器结构 常用于开发软件,如微信APP

4,整数有哪几种类型?
答:byte(1字节),short(2字节),int(4字节),long(8字节)

5,float f=3.14 ; 报错吗?为什么?
答:会,3.14是double型的 要加f 或加float强转

6, 3.14是什么类型?
答:double

7,java中有哪些基本数据类型?(String不是基本数据类型)
答: 4类8种
整型:byte,short,int,long
浮点型:float,double
字符型:char
布尔:boolean

8,int a = 5 ;
int b = a++ + ++a +3 + a++ ;(5+7+3+7)
System.out.println(a); //8
System.out.println(b); //22
答:因为++在后先计算后自增,所以前面为计算时的值,括号为此时实际值 5(6)+7+3+7(8) a=8 b=22

9,short s = 1 ;s = s + 1 ;有错吗?为什么?short s = 1 ;s += 1 ;有错吗?为什么?
答:
(1)错的,s+1是int类型,赋值给s(short型)要进行强转
(2)没错,s+=1相当于s=(short)(s+1);其中隐含了强转

10, System.out.println(5>3?9:3.1);结果会打印出什么?
答:9.0(因为他的总体返回值是double)

11,final的用法?
答:
1,当修饰变量的时候表示常量
2,当修饰方法的时候表示这个方法不能被重写
3,当修饰类的时候表示不能被继承

12,long a=1L,switch(a) 结果打印什么?
答:报错,switch()里不能放long型

13,给数组排序
答: Sort(), 一般有四种方法:快速排序法、冒泡法、选择排序法、插入排序法

14,堆跟栈的区别
答:
堆:存储实例对象,存取速度慢
栈:存储对象、变量的引用,存取速度快

15,java中可以多继承吗?
答:不行

16,重写跟重载的区别?
答:
1.重载:重载就是在同一个类当中有多个名称相同方法,但各个相同方法的参数列表不同(无关返回值类型)。 常用在构造函数中
2.重写:则发生在不同的类当中,并且两者要有继承关系,重写是方法名字和参数的列表是要完全一致的,重写的意义在于父类的方法已经不能满足时,子类重写为自己需要的

17,常量属性的赋值方式?
答:final int a=1;

18,java的三大特性?
答:封装,继承,多态

19,说几个访问修饰符的区别?
在这里插入图片描述

20,请说出5个运行时异常?
答:
1,java.lang.NullPointerException//空指针异常

2,java.lang.ClassNotFoundException//指定类不存在

3,java.lang.ArrayIndexOutOfBoundsException//数组下标越界

4,java.lang.NoSuchMethodError//方法不存在

5,java.lang.IndexOutOfBoundsException//索引越界异常

6.java.lang.ClassCastException(数据类型转换异常)

21,父类代码块、父类静态代码块、父类构造方法、子类代码块、子类静态代码块、子类构造方法,执行顺序如何?
答:
静态代码在加载时就运行
执行顺序:父类静态静态属性–>父类静态代码块–>子类静态属性–>子类静态代码块–>父类构代码块–>父类构造方法–>子类属性赋值–>子类构造代码块–>子类构造方法

21,请说出5个常见的类?说出5个常见的包?
答:
类:Class,System,HashMap,Math,String,Object
包:java.io ; java.lang; java.math ; javax.net ;java.text;java.sql

22,final、finally、finalize区别?
答:
final:是修饰符。声明类时,这个类不能再派生出新的子类,一个类不能同时被abstract和final声明。
声明属性时属性必须初始化。声明方法时表示这个方法不能被重写。
finally:在异常处理时提供finally块来执行清楚操作。
如果抛出一个异常,相匹配的catch语句执行进入finally块(如果存在finally块的情况下)。
finalize:是方法名。finalize()方法在垃圾收集器将对象从内存中清除之前作必要的清理工作。
这个方法在垃圾收集器确定对象没有被引用的情况之后才能被调用。此方法在Object中被定义,因此所有类都可以调用它,也可以重写该方法。

23,= =跟equals的区别?
答:
==用于基本数据类型的对象时比较的是值,用于引用数据类型的对象时比较的是地址。

equals只能用于引用数据类型,比较两个对象是否相等。equals 默认情况下是引用比较,只是很多类重写了 equals 方法,
比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。

24,ArrayList元素用循环全部删除。
答:
List list = new ArrayList();
list.add(“zhangsan”);
list.add(“lisi”);
for(int i=list.size()-1;i>=0;i–){
list.remove(list.size()-1);
}

25, 浅谈一下String, StringBuffer,StringBuilder的区别?
答:
String:是一个被final修饰的类,不能被继承。
StringBuffer:可变类,(多线程)线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。
StringBuilder:可变类,(单线程)线程不安全的字符串操作类,其方法和StringBuffer相同。

26、下面的代码将创建几个字符串对象?
String s1 = new String(“Hello”);
String s2 = new String(“Hello”);
答:3个

27、在java中,String s=new String(“xyz”);创建了几个对象?(B )
A 1个 B 1个或2个 C 2个 D 以上都不对

28、下面的代码输出什么?
String s1 = new String(“abc”);
String s2 = new String(“abc”);
System.out.println(s1 == s2); false//地址不同
System.out.println(s1.equals(s2)); true//值相同

29、下面的代码输入什么?
String s1 = “abc”;
String s2 = new String(“abc”);
s2.intern();
System.out.println(s1 ==s2);//false

30、下面的代码输出什么?
String s1= “abc”;
String s2= “abc”;
String s3 = new String(“abc”);
String s4 = new String(“abc”);
System.out.println("s3 = = s4 : "+(s3= =s4)); //false
System.out.println("s3.equals(s4) : "+(s3.equals(s4))); //true
System.out.println("s1 = = s3 : "+(s1= =s3)); //false
System.out.println("s1.equals(s3) : "+(s1.equals(s3))); //true
System.out.println(s1= =s2); //true

31、下面的代码输出什么?
String str1 = “ab” + “cd”;
String str11 = “abcd”;
System.out.println("str1 = str11 : "+ (str1 == str11));
答:true

32、下面的代码输出什么?
String str2 = “ab”;
String str3 = “cd”;
String str4 = str2+str3;
String str5 = “abcd”;
System.out.println("str4 = str5 : " + (str4==str5));
答:false

33、下面的代码输出什么?
final String str2 = “ab”;
final String str3 = “cd”;
String str4 = str2+str3;
String str5 = “abcd”;
System.out.println("str4 = str5 : " + (str4==str5));
答:true

34、下面的代码输入什么?
String str6 = “b”;
String str7 = “a” + str6;
String str67 = “ab”;
System.out.println("str7 = str67 : "+ (str7 == str67));
答:false

35、下面的代码输入什么?
final String str8 = “b”;
String str9 = “a” + str8;
String str89 = “ab”;
System.out.println("str9 = str89 : "+ (str9 == str89));
答:true

36、String s1=”Hello”; String s2=”hello”; String s3=s1.toLowerCase(); String s4=s2.toLowerCase( C );
下面选项结果为true的是:
A.S1= =s3
B.S2= =s3
C.S2= =s4
D.S3= =s4

37。Math.round(5.5)、Math.round(-5.5)分别输出多少?
答:6,-5

38。
Integer i1 = 1 ;
Integer i2 = 1 ;
Integer i3 = 128 ;
Integer i4 = 128 ;
System.out.println(i1 = = i2); //true
System.out.println(i3 = = i4); //false

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值