java面试题

1.什么是对象序列化,为什么要使用?

所谓对象序列化就是将对象的状态转换成字节流,以后可以通过这些值(字节流)再生成相同状态的对象
对象序列话的前提就是实现了Serializable接口的类,

为了保存对象到文件,方便数据的传播
因为不管是哪一种流,在传输时都是以字节方式进行传输,对象流也不例外,先将对象变成字节以方便传输,到达目地的的时候再还原成对象



2.值传递与引用传递的区别?

值传递只能传递一个值
引用传递是通过对象、数组、集合的内存地址传递值,可以传递多个值



3.接口与抽象类的区别?

1.接口只能定义抽象方法,通过继承接口来实现接口中的所有方法

抽象类不但能定义抽象方法,还可以写自己的实现方法,并且子类可以只实现自己想要的方法

2.java中只能单一继承,接口可以通过实现多个接口来达到‘多继承’的方法

3.一个抽象类可以没有抽象方法,但有抽象方法的类一定是抽象类

4.接口中定义的变量不可修改,抽象类中的变量可以修改

具体:
1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。

2、抽象类要被子类继承,接口要被类实现。

3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现

4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。

5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类

。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。

6、抽象方法只能申明,不能实现。abstract void abc();不能写成abstract void abc(){}。

7、抽象类里可以没有抽象方法

8、如果一个类里有抽象方法,那么这个类只能是抽象类

9、抽象方法要被实现,所以不能是静态的,也不能是私有的。

10、接口可继承接口,并可多继承接口



4.谈谈继承,为什么要使用继承?

继承是java面向对象的特征之一,继承就是拥有父类中所有的方法和属性使用继承,可以大大提高代码的重用性。同时,这种方式也便于扩展

终态类不能继承,构造方法不能被继承,私有的方法属性不能被继承

5.方法重载的好处?

定义:方法名相同,但参数不同。(与返回类型无关)
可以通过传入不同的参数来调用不同的方法,满足不同的功能



6.项目中印象最深的部分?

xml映射成java对象,业务层和dao层的分离,实现简单的动态页面



7.谈谈你对面向对象的理解与认识?

为什么用面向对象

什么是面向对象---封装继承多态

什么时候用面向对象----能简化程序开发,让复杂的问题简单化

怎么用面向对象----Java是面向对象语言,在编程中就要将封装继承多态应用到程序中

8.谈谈集合框架?

最顶层 Collection接口Map 接口

Collection 接口下有子接口 List和Set Map接口下 有实现类HashMap 和 TreeMap

List接口下有实现类 ArrayList 和 LinkedList 还有 Vector

Set 接口下有实现类 TreeSet 和HashSet



9.什么是异常?描述下异常处理?

异常是程序正常执行过程中出现的不正常的情况,JAVA中通过使用try-catch语句把可能抛出异常的语句包起来。当异常发生后,程序执行将忽略try程序块中剩余的语句,继续执行catch块后面的语句。如果在try程序块中没有抛出异常,那么catch块将被忽略



10.多线程的优先级?为什么要分优先级?

线程的优先级用数字表示,范围从1到10,一个线程的缺省优先级是5。通过setProperty(int i)方法设置线程优先级。Thread类中的三个线程优先级的常量:

MAX_PRIORITY:级别为10

MIN_PRIORITY:级别为5

NORM_PRIORITY:级别为1

让某些线程能够机率更大的获得cpu控制权,我们才用优先级

11.异常框架的类结构?

父类 Throwable
子类 Error, Exception(运行时异常和编译时异常)




12.说说游戏框架的搭建。

13.谈谈HashMap与Hashtable的区别。

1、都属于Map接口的类,实现了将惟一键映射到特定的值上。
2、HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。
3、Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。

4、Hashtable线程安全,HashMap线程不安全

5、Hashtable在jdk1.0时就出现了,HashMap在jdk1.2时出现

14.你的排行榜怎么做的?

15.说一下iterator。

用在集合遍历中,hasNext判断后面还有没有元素,next让指针指向下一个元素

16.什么是泛型?它有什么样的好处?

泛型就是在集合后加上<数据类型>,将类型进行参数化,存入的类型必须是指定的类型,如果不是指定类型就会报错。

好处就是定义了一种规范,指定程序员向该集合中存储该数据类型的值,方便数据的存入和取出



17.说一下你在游戏中遇到的异常,并说出什么时候发生的,怎么解决的。

18.你的程序遇到错时怎么解决的?

首先找出现的异常,然后调试,如果还是不能解决,就上网找问题所在

19.谈谈&&和&的区别

&是位运算符。&&是布尔逻辑运算符。


20.System.out和System.in是什么意思?

前者是输出,后者是输入

21.Java为什么能够跨平台?

因为Java有不同平台使用的虚拟机,而虚拟机是先将java文件编译成字节码文件,然后再解释执行,所以Java能够跨平台

22.private变量能不能被其他类访问?如果能,怎么访问?

能。通过get和set方法或者反射访问。

23.演示java项目如何打包成jar文件

24.java的环境变量如何配置?为什么要配置?

JAVA_HOME指向的是JDK的安装路径
PATH环境变量原来Windows里面就有,你只需修改一下,使他指向JDK的bin目录,
CLASSPATH=.;%JAVA_HOME%\lib\tools.jar



这样你在控制台下面编译、执行程序时就不需要再键入一大串路径了。

25.static和非static修饰的变量哪个生命周期长?

当类首次被加载时static定义的变量被分配空间,程序结束后由系统释放.他的生命周期是整个程序。

非static的变量要运行时才会产生。

26.什么是线程同步?

线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。为了解决这个问题我们使用synchronized关键字同步方法或代码块加上synchronized代码块。

27.媒体追踪器的作用是什么?

28.什么是封装?封装的好处是什么?

将属性方法实现的细节进行隐藏的过程叫封装

封装就是外部不能直接操作该类的属性,只能调用该类方法操作该属性值
优点:防止使用者错误的修改系统属性
解耦,提高系统独立性
提高软件的可重用性



29.在线程中wait与sleep的区别?

Wait在object类里面,sleep在thread的里面

sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级
(b)正在运行的线程因为其它原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。


30.Class 和class的区别

Class 类是在Java语言中定义一个特定的类,Class 类的实例表示正在运行的 Java 应用程序中的类和接口。

class是java语言关键字

class也是每个类的一个成员变量

31.awt和swing的区别?

32.为什么实现一个接口必须要实现接口里面所有的方法?

因为接口的定义是一种规范,可以通过接口调用实现类的方法,达到解耦和多态
假如不实现接口里面所有的方法,父接口就不能调用到实现类的方法了,就会出问题



33.线程和进程的区别是什么?

1:每个进程都有独立的内存地址空间,进程间的切换会有较大的开销;

2:线程是共享内存地址空间,线程切换开销小;

3:多进程,指在操作系统中能同时运行多个任何(程序);

4:多线程,在同一个应用程序中有多个顺序流同时执行。

34.Java基础技能中强调程序代码的读写能力,如果一个类很长,你会怎样读写?

读:首先看总体功能,然后再逐步分解,一段一段读



35.抽象方法能不能是private和static修饰符?

不能

36.用接口有什么好处?

代码复用、隐藏细节、安全性

37.什么是反射?

反射是Java程序的特征之一,允许运行中的JAVA程序对自身进行检查(自省),

38.创建对象的方式有哪些?

● 用new语句创建对象

● 运用反射手段,调用java.lang.Class 或者 java.lang.reflect.Constructor 类的newInstance()实例方法

● 调用对象的clone()方法

● 运用序列化手段,调用java.io.ObjectInputStream 对象的 readObject()方法.

39.transient是什么意思?

被transient修饰的方法或者属性的状态不能被序列化

40.在设计游戏类的时候,你是怎么使用静态变量和成员变量的?

41.定义抽象方法的意义何在?



42.谈集合遍历的方式

1、for-each循环遍历(JDK1.5版本,只能从头遍历到尾)
for(List list : temp{
temp就是每个元素对象
}
2、for循环遍历(只适用于List接口类)
for(int i = 0 ; i <temp.size(); i++){
temp.get(i)就是每个元素对象
}
3、使用迭代器循环遍历(只能从头遍历到尾)
while(it.hasNext()){
it.next()获得下一个元素对象
}



43.java安全性体现在什么地方?

44.谈谈线程所拥有的几种状态

睡眠 --sleep(),线程进入休眠状态,待时间到了自动唤醒

等待---调用Object的wait()方法

挂起---调用yield()方法,线程显式出让cpu控制权

阻塞---等待IO事件输入,如JoptionPane输入框
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值