Java笔试题

测试题:
1、写出重写和重载的英文单词,并简述各自的特性以及你所知道的编写规则
2、列出你所知道的创建线程的方式?
3、列出你所知道的产生死锁的条件?
4、简述equals与==的使用区别?
5、可以在hashcode中使用随机数字吗?为什么?
6、书写一个匹配只两位小数正实数的正则表达式:
7、Java创建对象的方式
8、列出java内置数据类型并列出switch所支持的数据类型。
9、面向对象三个特征


测试题答案:


1、写出重写和重载的英文单词,并简述各自的特性以及你所知道的编写规则
(答案)重写:Override,重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。
[规则:
    1、参数列表必须完全与被重写方法的相同;
    2、返回类型必须完全与被重写方法的返回类型相同;
    3、访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。
    4、父类的成员方法只能被它的子类重写。
    5、声明为final的方法不能被重写。
    6、声明为static的方法不能被重写,但是能够被再次声明。
    7、子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。
    8、子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法。
    9、重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。
    10、构造方法不能被重写。
    11、如果不能继承一个方法,则不能重写这个方法。
]
重载:Overload,重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
[规则:
    1、被重载的方法必须改变参数列表(参数个数或类型不一样);
    2、被重载的方法可以改变返回类型;
    3、被重载的方法可以改变访问修饰符;
    4、被重载的方法可以声明新的或更广的检查异常;
    5、方法能够在同一个类中或者在一个子类中被重载。
    6、无法以返回值类型作为重载函数的区分标准。声明为static的方法不能被重写,但是能够被再次声明。
]

2、列出你所知道的创建线程的方式?
(答案)1、继承Thread类创建线程类[
            (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。
            (2)创建Thread子类的实例,即创建了线程对象。
            (3)调用线程对象的start()方法来启动该线程。
            ]
        2、通过Runnable接口创建线程类[
            (1)定义runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体。
            (2)创建 Runnable实现类的实例,并依此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象。
            (3)调用线程对象的start()方法来启动该线程。
        ]
        3、通过Callable和Future创建线程[
            (1)创建Callable接口的实现类,并实现call()方法,该call()方法将作为线程执行体,并且有返回值。
            (2)创建Callable实现类的实例,使用FutureTask类来包装Callable对象,该FutureTask对象封装了该Callable对象的call()方法的返回值。
            (3)使用FutureTask对象作为Thread对象的target创建并启动新线程。
            (4)调用FutureTask对象的get()方法来获得子线程执行结束后的返回值
        ]

3、列出你所知道的产生死锁的条件?
(答案)1.互斥条件:一个资源每次只能被一个进程使用。 
        2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 
        3.不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 
        4.循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

4、简述equals与==的使用区别?
(答案)值类型(int,char,long,boolean等)都是用==判断相等性。对象引用的话,==判断引用所指的对象是否是同一个。equals是Object的成员函数,有些类会覆盖(override)这个方法,用于判断对象的等价性。例如String类,两个引用所指向的String都是”abc”,但可能出现他们实际对应的对象并不是同一个(和jvm实现方式有关),因此用==判断他们可能不相等,但用equals判断一定是相等的。

5、可以在hashcode中使用随机数字吗?为什么?
(答案)不行,因为同一对象的hashcode值必须是相同的

6、书写一个匹配只两位小数正实数的正则表达式:
(答案)/^[0-9]+(.[0-9]{2})?$/

7、Java创建对象的方式
(答案)new、反射、clone、序列化

8、列出java内置数据类型并列出switch所支持的数据类型。
(答案)byte、short、int、long、float、double、boolean、char。

9、面向对象三个特征:
(答案)封装、继承、多态


 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值