Java面试题

1.对象在内存中的状态有几种?
有三种:
可达状态:如果一个对象在创建之后,有一个或者多个引用指向该对象,那么这个对象就是处于可达状态。
可恢复状态:程序中,如果一个对象没有任何引用指向它,那么该对象就处于可恢复状态,处于可恢复状态下的对象,垃圾回收在准备回收垃圾时,
调用finalize方法,在finalize方法中,系统有可能重新让一个或者多喝引用指向该对象,那么这个对象由可恢复状态变为可达状态。
不可恢复状态:垃圾回收器被触发调用fianlize方法时,处于内存中的可恢复状态的对象没有重新获取引用,那么该对象就处于不可恢复状态
2.java的面对对象特征有哪些?请简要说明.
封装:隐藏对象的属性和实现细节,只对外提供公共的访问方式
继承:从现有类的基础上派生出新的类,新的类拥有原有类的特征和行为,并且可以拓展,已有类成为父类,新的类称为子类.子类继承父类.
多态:同一种事物的不同展现形式.
3.String是最基本的数据类型吗?最基本的数据类型有哪些?
String不是最基本的数据类型,String是引用数据类型.
最基本的数据类型有: byte short int long float double char  boolean
是否可以继承String类?
不可以被继承,因为String类是被final修饰,final修饰的类不可以被继承,实现细节不允许变化.
4.String和StringBuffer,StringBuilder的区别?
有两方面的区别:
执行速度:StringBuilder > StringBuffer > String
线程安全: StringBuffer是线程安全.StringBuiler是线程不安全,String因为字符串不可变,所以也是线程安全.
5.String str= new String(“abc”) 创建了几个对象?
创建了两个对象  String str 定义了一个对象,并没有创建. new String() 在堆中创建了一个,"abc"创建一个对象在常量池.
6.float = 3.4 是否正确?为什么?
不正确 . 精度不准确.在java中有小数点的默认值是doble类型.正确写法是: float  f = 3.4f;或者 float f = (float)3.4.
7.数组有没有length方法,String 有没有length方法?
数组中没有length()方法.有length属性 . String中有length()方法
8.构造器是否可以被重写?
不可以被重写.因为构造器名和类名相同.每个类的类名不同,所以不能被重写,但是可以被重载.
9.两个对象值相同(x.equals(y )=true) ,但却有不同的hashcode,这句话对不对,为什么?
这句话不多. .equals先判断对象的hashcode,在判断对象的值. 所以有相同的hashcode.但是hashcode相同对象之不一定相等.
10.GC是什么?为什么有GC?
GC是垃圾收集器. 内存是有限的,当一个程序较大的时候,造成内存不足.GC可以自动回收无用的对象,可以避免内存泄漏和释放资源.
11.接口是否可以继承接口?抽象类是否可以实现接口,抽象类是否可以继承普通类?**
接口可以继承接口,抽象类可以实现接口,抽象类可以继承普通类.
一个java源文件是否包含多个类(不是内部类)?有什么限制?
可以有多个类.但是只能有一个public,并且public的类名必须和文件名一致.
12.日期和时间
如何获取年月日,小时分秒?
方法一: 通过Calendar类获取  Calendar now =  Calendar.getInstance();  now.getTime()
方法二: Date d = new Date();  
如何取得从197011000秒到现在的毫秒数?</font>
Calendar.getInstance().getTimeInMillis().
System.currentTimeMillis();
如何取得某月的最后一天?
public static int getLastDay(int yaer ,int mouth){
 	Calendar c = Calendar.getInstance();
设置年份
c.set(Calendar.YEAR,year);
设置月份:
c.set(Calendar.MOUTH_OF_YEAR,mouth);
int lastday = c.getActualMaxinum(Calendar.MOUTH_OF_YEAR);
SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd);
sdf.format(c.getTime());
13.比较一下java和javaSciprt
java是面对对象的设计语言,适用于web应用程序开发,JS是用于拓展浏览器的功能.
java是强语言类型,js是弱语言.
java运行之前需要编译,js不需要编译.
14.Error和Exception有什么区别?
Error:表示系统级别的错误和程序不必处理的异常.
Exception:表示需要捕捉或者程序处理的异常.
15.列一些你常见的运行时异常?**
nullPointerException  空指针异常
ArraryIndexOutOfBoundsException  数组下标越界
IndexOutOfBoundsException  索引越界
IOException  输入输出越界
CalssNotFoundException  指定类不存在 
16.请说出线程同步以及线程调度相关的方法?
wait:是对象处于等待状态,并且释放所持有对象的锁.
sleep:使一个运行的线程处于休眠状态
notify:唤醒一个处于等待状态的线程
notifyAll:唤醒所有处于等待状态的线程.
17.编写多线程程序有几种实现方式?
继承Thread
实现runnable借口
18.什么是线程池?
我们只要将我们需要执行的任务交给线程池,线程池就会帮我们分配或者创建线程来执行,不用我们手动管理线程.
19.java中如何实现序列化,有什么意义?
让类实现Serializable接口
序列化是一种处理对象流机制,将对象的内容进行流化,用于读写和传输网络之间,解决在读写操作是出现的问题,
20.简述JDBC操作数据库的步骤?
 1. 加载驱动 
 2. 获取连接 
 3. 获取预编译对象 
 4. 执行语句
 5.  获取结果集 
 6. 关闭流获取连接 
21.java中如何支持正则表达式操作的?
借助Pattern类表示正则表达式对象. 
22.什么是UML?
统一建模语言
23.try{}里有一个retur语句,那么紧跟在这个try后的finally{}里面的代码会不会被执行?
会被执行
24.接口和抽象类的区别?
接口没有方法的实现  抽象类可以有默认的方法实现
子类使用extends关键字来继承抽象类   接口:子类使用implements实现接口
抽象类中有main方法可以运行  接口没有
25.静态变量和实例变量的区别?
静态变量需要用static定义,实例变量不需要
静态变量属于类所有,也称作类变量,可以直接调用. 实例变量需要实例化以后才能使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巴黎有个小铁匠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值