ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:19.40KB ,
资源ID:25057042      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25057042.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java基础面试题.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java基础面试题.docx

1、Java基础面试题一、JDK与JRE有什么区别?答:JDK:Java开发工具包,包括Java开发工具和JRE。JRE:Java运行环境,包括运行Java程序所需的核心类库和JVM。JVM:Java虚拟机,保证Java程序的跨平台性。总结:由JDK开发的Java程序,交给JRE来运行,并由JVM来保证Java程序的跨平台性。二、byte b = (byte)130;的运行结果是 ?130的原码:00000000 0000000000000000 10000010130的反码:00000000 0000000000000000 10000010130的补码:00000000 00000000000

2、00000 10000010一个字节截取的补码为10000010补码10000010的反码为10000001反码10000001的原码为11111110,计算结果为-126三、判断下面代码第三行和第四行编译会出现问题吗?byte b1=3;byte b2=4;byte b3=b1+b2;byte b4=3+4;第三行会出现问题。如果是变量相加,首先会自动提升数据类型,然后再运算。第四行编译运行通过。如果是常量相加,会直接计算,然后看运算的结果是否在其数据类型所能描述的范围内。四、判断下列代码的第二行和第三行编译是否能通过?并说明理由short s=5;s=s+2;/报错,变量s参与运算,会自动

3、提升数据类型至ints+=2;/编译通过。s+=2隐含了强制类型转换,相当于s=(short)(s+2);五、请用高效的形式写出:2*82子类的静态代码块-父类的构造代码块-父类的构造方法-子类的构造代码块-子类的构造方法注意:静态代码块只加载一次(.class字节码文件只加载一次的情况下)Fu静态代码块zi静态代码块Fu构造代码块Fu构造方法zi构造代码块zi构造方法Fu构造代码块Fu构造方法zi构造代码块zi构造方法八、方法重载和方法重写有什么区别?方法重载:同一个类中,出现方法名相同、参数列表不同的两个或多个方法时,即构成方法重载。方法重写:子父类间,出现一模一样的方法时,被称为方法的重

4、写,或者复写、覆盖。也就是要求返回值类型、方法名、参数列表都一致。day12九、如何理解字符串一旦初始化就不可以被改变。String s = hello;s += world;System.out.println(s);解释:字符串一旦被初始化就不能被改变,说的不可以改变的是hello这个字符串在常量池中的值不可以被改变,而非s这个引用不能改变。十、s1、s2有区别吗?String s1 = new String(abc);String s2 = abc;答:第一种方式:在内存中存在两个对象,一个在堆内存中,一个在Sting常量池中;第二种方式:在内存中只有一个对象,在String常量池中。十

5、一、length和length()这两个关键字的区别?答:它们都不是关键字length是属性,用来获取数组的长度length()是个方法,用来获取字符串的长度十二、1. public static void main(String args) String s = abc; change(s); System.out.println(s);public static void change(String s) s += hello;把”abc”在String常量池的地址值传递进去,change方法里的s对象指向了”abc”,然后和hello连接形成新的字符串“abchello”,把新的字符串”

6、abchello”的地址值赋给change方法里的s,但main方法的s还是指向“abc”,因为”abc”是字符串对象,一但初始化就不会被改变。2. public static void main(String args) String s1 = a; String s2 = b; String s3 = ab; System.out.println(s3 = s1 + s2); System.out.println(s3 = a + b);常量相加,直接累加,然后再常量池里找有没有,有结果就是常量池的值。而变量相加,需要重新在常量池里开辟空间,然后把s1、s2替换为“a ”、“b”,进行连接

7、,形成一个新的“ab”对象,和s3内容相同,但属于不同的空间即不同的对象。十三、 Integer i1 = new Integer(127); Integer i2 = new Integer(127); System.out.println(i1 = i2); /false System.out.println(i1.equals(i2); /true Integer i3 = new Integer(128); Integer i4 = new Integer(128); System.out.println(i3 = i4); /false System.out.println(i3.e

8、quals(i4); /true Integer i5 = 128; Integer i6 = 128; System.out.println(i5 = i6); /false System.out.println(i5.equals(i6); /true Integer i7 = 127; Integer i8 = 127; System.out.println(i7 = i8); /true System.out.println(i7.equals(i8); /true通过new出来的是不同的对象,所以比较对象,相当于比较对象的地址值,肯定为false(自动装箱,也相当于自动创建Integ

9、er对象)一般都会重写Object类中的euqals方法,不再比较地址值,而是比较对象的内容是否相同。127始终存在于byte常量池中,创建对象,直接指向127在byte常量池中的地址。十四、用LinkedList模拟栈数据结构题意解析:你有一个LinkedList可以用,需要你自己定义一个栈集合,对外提供添加和获取功能(把LinkedList对象的方法封装在自定义栈方法的内部)public class MyStack private LinkedList link; public MyStack() link = new LinkedList(); public void add(Objec

10、t obj) link.addFirst(obj); public Object get(int index) return link.get(index); public int size() return link.size(); public class LinkedListStack public static void main(String args) MyStack stack = new MyStack(); stack.add(hello); stack.add(world); stack.add(java); for(int i=0;istack.size();i+) Sy

11、stem.out.println(stack.get(i); 十五、Collection和Collections的区别?A:Collection是Collection集合的顶层接口,它里面定义了Collection集合的共性方法。B:Collections是一个类,定义了针对Collection集合操作的各种功能,有排序、二分查找、反转、找最大值、随机置换等。十六、Map和Collection的区别?Map:是双列集合,键必须是唯一的,值可以重复,是键值对形式的集合。Collection:是单列集合,它的子接口List可以存储重复元素,它的另一子接口Set,元素唯一。十七、统计字符串中每一个字

12、符出现的次数需求:cbxzbvavdvgd获取字符串中,每一个字母出现次数:a(1)b(2)c(1)d(2)g(1)v(3)x(1)z(1)代码如下:String s = cbxzbvavdvgd;/把字符串转成字符数组char chs = s.toCharArray();/创建一个map集合,用出现的字母做键,出现的字母的次数做值,因为键存在自然顺序,所以选TreeMapTreeMap tm = new TreeMap();/遍历数组中的字符,获取字符键对应的值,如果值为空,则添加该键和值1的键值对,如果值不为空,用原来的值+1替换原来的值 for(char key : chs) Integ

13、er value = tm.get(key); if(value=null) tm.put(key, 1); else tm.put(key, value+1); /获取字符键的Set集合 Set keySet = tm.keySet();/创建一个StringBuilder对象,用来拼接遍历到的字符和出现的次数 StringBuilder sb = new StringBuilder(); for(Character key:keySet) Integer i = tm.get(key); sb.append(key).append().append(i).append(); String

14、str = sb.toString(); System.out.println(str);十八、HashMap和Hashtable的区别A:HashMap线程不安全,效率高,允许null键和值B:Hashtable线程安全,效率低,不允许null键和值十九、finally的面试题1、请问final,finally,finalize的区别。final是一个关键字它修饰的类不能被继承;它修饰的方法不能被重写;它修饰的变量,具备了常量的特性。finally它是异常处理的一部分,finally里面的代码永远被执行。但是有一个特殊情况,程序在finally执行之前就退出了虚拟机。finalize它是Ob

15、ject中的方法,当对象没有引用指向时,该对象的垃圾回收器调用此方法把对象变成垃圾,等待回收。2:finally里面的代码真的永远会执行吗?会永远执行。但是有一个特殊情况:在代码执行到finally之前,jvm就退出了。3:加入在catch里面有return语句,请问finally里面的代码还会执行吗?如果执行,是在return前,还是return后?会执行。在return之前执行。但更准确来说,是在return之间执行。int a = 10;try System.out.println(a / 0); System.out.println(a1: + a); catch (Arithmeti

16、cException ae) System.out.println(a2: + a); / a2:10 a = 20; return a; /这个时候,在内存中就会有一个路径产生,该路径返回值是20. /但是,它看到了finally代码块,所以,继续执行finally里面的内容 /当finally里面结束后,会回到以前的执行路径。 finally System.out.println(a3: + a); / a3:20 a = 30; return a;二十、面试题:写一个死锁程序public class DeadLock extends Thread private static Objec

17、t objA = new Object(); private static Object objB = new Object(); private boolean flag; public DeadLock(boolean flag) this.flag=flag; public void run() if(flag) synchronized(objA) System.out.println(true*objA); synchronized(objB) System.out.println(true*objB); else synchronized(objB) System.out.prin

18、tln(false*objB); synchronized(objA) System.out.println(false*objA); public class DeadLockTest public static void main(String args) DeadLock dl1 = new DeadLock(true); DeadLock dl2 = new DeadLock(false); dl1.start(); dl2.start(); 二十一、线程的生命周期线程的状态有新建:新建一个线程就绪:具备执行资格,不具备执行权可能出现阻塞状态:不具备执行资格,不具备执行权运行:具备执行

19、资格,具备执行权消亡:线程对象变成垃圾,等待垃圾回收器回收新建*start()*就绪*抢到cpu的执行权*运行*run方法结束或者stop()*消亡运行*其他线程抢到cpu的执行权*就绪运行*sleep()或wait()阻塞*时间到或notify()*就绪二十二、sleep方法和wait方法的区别?wait():Object类中的方法,可以不传参数,它释放锁对象。sleep():Thread类中的静态方法,必须传递参数,它不释放锁对象。二十三、我给你ArrayList的一个对象,我想在这个集合中添加一个字符串数据,如何实现呢?public class ArrayListTest public

20、static void main(String args) throws Exception /创建泛型为Integer的ArrayList集合 ArrayList al = new ArrayList(); al.add(10);/反射越过泛型检查 Class c = al.getClass(); Method m = c.getMethod(add, Object.class); m.invoke(al, hello); System.out.println(al); 二十四、单例设计模式(饿汉式和懒汉式)饿汉式public class Student /把构造函数私有化,不让外界创建对象

21、 private Student() /创建本类对象,并私有化,不让外界直接访问 private static Student s = new Student(); /对外提供公共的静态访问方式,返回本类对象 public static Student getStudent() return s; public void show() 懒汉式public class Teacher /把构造函数私有化,不让外界创建对象 private Teacher() /定义一个本类对象的引用型变量,并赋值为null private static Teacher t = null; public static Teacher getInstance() if (t = null) synchronized (Teacher.class) if (t = null) t = new Teacher(); return t;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1