java常见面试题(含答案)

来源:互联网 发布:淘宝网官网电话 编辑:程序博客网 时间:2024/05/16 15:09

1.main方法是怎样写的
public static void main(String [] args){}
2.变量的命名规则是怎么样的?
类名的定义:必须以大写开始,采用驼峰命名
方法名、属性名的定义:以小写开始,采用驼峰命名
常量:全部大写
3.if…else和写两个if有什么区别
两个if为两次选择判断,两条语句,都会执行
if…else为一次判断,if为选择条件1,else为除去选择条件1之外的其它情况,一条语句只会执行一次
4.在Java中直接写浮点常量,默认是什么类型?
默认类型为double
5.什么是标识符?他的命名规则是什么?
标识符是可以命名的地方。标识分为用户标识符和系统标识符(关键字)
命名可以只用数字,字母,下划线(_),美元符号($)作为变量名,且首字母不能为数字
6.什么是变量
命了名的内存空间,并且空间的值可以变化
7.JDK与JRE分别是什么
JDK为Java开发工具包,包括编译环境,运行环境,调试环境和基础类库,JDK包含JRE.
JRE为Java运行环境,包括虚拟机,核心类库和链接文件
8.try-catch-finally三个基本块的作用?catch里的代码是干什么的?
try块进行异常捕获,catch块对捕获的异常分别处理,finally块在try-catch块执行完毕后再执行,进行清理和系统回收,catch块的代码是进行异常捕获,显示异常信息和处理意见的。
9.继承类和实现接口分别怎么做?
使用extends关键字继承类,使用implements关键字实现接口
10.如何去获得字符串的长度?
调用字符串的length()方法获得字符串长度
11.Java的基本数据类型有哪些?
byte,short,int,long,float,double,char,Boolean
12.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,是值传递还是引用传递
值传递
13.列出至少5个最常见的runtime exception并描述在什么情况下出现
ClassNotFoundException没有找到类
IndexOutOfBoundsException数组下标越界
NullPointerException空指针
IOException输入输出异常
SQLException数据库链接异常
FileNotFoundException文件无法找到
14.ArrayList和Vector的区别
ArrayList和Vector都是集合框架中的类,都实现了List接口,结构相似
ArrayList为JDK1.2效率高,线程不安全
Vector为JDK1.0效率低,线程安全
15.在IO中字节流和字符流的父类是什么?
字节流:InputStream/OutputStream
字符流:Reader/Writer
16.什么是包?定义包有什么好处?
包就是文件夹,包定义了类的路径,用户区分相同名字的类和对不同类的归类,对类进行组织,包可以用做信息的隐藏。
17.怎么样知道磁盘一个目录中有哪些文件?
在当前目录创建File对象,调用list()方法获得所有文件和路径名
18.如何获得一定范围的随机整数
(int)(Math.random()*(Max-Min)+Min)
19.如何获得Java当前的工作目录
System.getProperty(“user.dir”)方法获得当前目录
20.怎么样判断一个异常类是checked异常还是unchecked异常?
是否是RuntimeException子类
21.静态变量和成员变量应该怎样访问?
静态变量使用类名直接访问。类名.静态变量
成员变量需要先创建实例,使用对象名.属性
22.如何将一个字符串转成一个基本数据类型
调用Integer.parseInt(字符串)方法转换
23.如何让JFrame的初始位置居中(在不同的分辨率中)
调用JFrame的setLocationRelativeTo(null)方法,此方法继承自java.awt.Window类
24.谈谈集合的作用
存储,检索,操作,传输
25.类的修饰符能不能是private,static,protected?
可以使用。但这种类只能是内部类
private为私有类,不能被外部访问
protected为受保护类,只能同包类和非同包子类访问
static为静态类,该类不需创建对象
26.Try块中是否所有的语句都一定会执行,为什么?
Try块中的所有语句不一定会执行,当执行中遇到异常后,会终止try中其它语句的执行。跳转到catch块中捕获异常
27.什么时候用继承,什么时候用接口?
继承是属性和方法的重用。接口只重用方法。
28.finally是不是什么时候都会执行?
不是,当我们调用System.exit(0),这个方法时,是不会执行finally的
29.什么是主线程?
程序运行一开始的线程,通常为main方法所在的线程,主线程产生子线程并在所有线程结束后执行清理。
30.进行IO流操作时,如果操作的文件不存在会发生什么情况?
读取流发生FileNotFoundException异常
写入流会创建新文件
31.IO流操作的步骤是怎么样的?
创建流,操作流,关闭流
创建目录对象,在目录对象上建立IO流,传输数据后IO流关闭
32.finally作用是什么?
在异常捕获try_catch结束后执行相关清理
33.当一个线程进入一个对象的一个同步方法后,能否进入其它非同步方法么?一般在什么时候使用?
可以。
34.try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行,什么时候执行?
会执行,在return之前执行。
35.如何启动线程,和直接调用run()方法有什么区别?
调用start()方法产生子线程,直接调用run()方法不产生子线程,而是常规的对象方法调用。
36.数组有没有length()这个方法?String有没有length()这个方法?
数组没有length()方法,只有length属性,String有length()方法
37.GC是什么?为什么要有GC?
垃圾回收,提醒垃圾回收器执行垃圾回收工作
38.线程同步化会带来什么样的结果?
保证被操作的数据源安全,但降低了程序的效率。
39.什么是线程安全?
线程安全即是线程同步,在同时访问数据时通过同步保证数据的正确性
40.服务器类有一个while循环,能否直接while(true)?
不能,服务器不能关闭,只能直接结束主线程
41.Java帮助文档是如何生成的?
通过在程序中添加文档注释,在eclipse中使用导出功能生成帮助文档
42.什么时候类名和文件名必须一致?
当类的访问修饰符为public
43.如何实现包装类和基本数据类型转化
使用构造方法由基本数据类型转化包装类,调用包装类的方法转化成基本类型
44.类InputStream中方法read()的返回值是什么?读出的是什么?
返回值为整型,读取的单个字符的byte值
45.如果一个类实现一个接口,可不可以不实现接口里定义的所有方法?
可以。但这个类只能是抽象类
46.构造方法和方法有什么区别?构造方法能不能被重载,能不能被重写?
构造方法是产生对象时使用的方法,只能被重载,不能被重写
47.请列举switch()括号中能接受的所有数据类型。
byte,short,char,int,jdk1.7后支持String
48.GUI的布局管理器最常见的有哪几种?
绝对布局,卡片布局,borderlayout,gridlayout,flowlayout
49.断点有什么作用?
调试模式时运行到断点则程序停止,查看到当时变量和对象
50.String和StringBuffer的区别
String保存在常量池,长度不可改变,StringBuffer保存在堆中,长度可以改变
51.接口里方法修饰符是什么?
public 或者 不写,均代表公共的
52.接口里可以定义变量吗?
不能,只能定义静态常量。
53.说几个String常用的方法
Length(),substring(),indexOf(),trim(),split()
54.在Dos界面下如何编译并执行Java程序?
使用javac+文件名 进行编译,然后执行java+类名执行
55.创建一个线程有几种方法?
继承Thread类或者实现runnable接口
56.项目开发的流程是怎么样的?
需求分析,概要设计,具体设计,编码,程序测试,部署
57.java语言的特点是什么?
面向对象,跨平台,安全性,垃圾回收
58.main方法中有个参数String[] args,这个参数的值是由谁传递给它的?
参数args的主要作用是为程序使用者在命令行状态下与程序交互提供了一种手段。例如我们在命令行界面使用 java + 类名+一些字符串,此时我们在main方法遍历打印args就会有我们传递进来的值。例如 java Test aaa ,遍历打印结果就为aaa
59.java中采用什么字符编码集?char类型能不能放入一个中文字?
Unicode 一个字符两个字节,可以
60.byte的取值范围
-128~127
61.throw和throws的区别?
throw在程序中声明抛出气场,是一条语句
throws方法修饰符,在方法声明上声明将要抛出的异常
62.子类继承父类时,在子类构造方法的第一行语句应该怎么写?
super()
63.注释分为几种?你是如何使用的?
文档注释,单行注释,多行注释,在方法名和属性使用文档蛛丝,在语句中使用单行注释或者多行注释。
64.一个子类能同时继承多个父类吗?
不能
65.局部变量使用时需要注意什么问题?
局部变量的作用域,初始化,修饰符只能是final或不写
66.引用数据类型作为参数传递时,传递的是什么?
传递的是保存的内存地址
67.基本数据类型和引用数据类型的区别是什么?
基本数据类型中保存的是实际的值,引用数据类型保存的是被引用的内存地址
68.什么样的类不能被实例化?Math这个类能不能被实例化?
抽象类,不能,因为Math构造方法私有
69.是否可以继承String?
不能,因为String是最终类,使用final修饰
70.谈谈算术表达式的优先级
.();
一元运算符++ –
算术运算符+ - * /
比较运算符> < ==
位运算符^|&
逻辑运算符&& ||
赋值 =
71.如何定义一个常量?定义常量的意义何在?
Final关键字,常量可以避免使用数字造成意思不明确,可以在代码中做到只需修改一处即可改变常量
72.final这个修饰符的用法
Final在修饰变量时为常量,在修饰方法时不能被重写,在修饰类时不能被继承
73.集合和数据的区别
集合中可以放不同类型的对象,集合中结构多样,可以无序也可以有序,长度可以改变。数组为有序且内存地址连续,只能保存同一数据,长度不能改变。
74.JVM是什么?它的作用是什么?它和java运行环境有什么区别?
Java虚拟机,类加载,字节码校验,解释器,交给OS执行。
JRE包括JVM,还包含核心类库,JVM,链接文件
75.GUI响应一个事件的代码如何写?
1.确定事件源
2.确定监听器,实现ActionListener
3.注册
76.实现接口使用什么关键字?在实现一个接口时必须要做什么?
implements,必须实现接口中所有抽象方法
77.如果要抛出异常怎么做?
throw 异常对象
78.如果try块中有多种异常,在catch块中如何处理?
使用多个catch块分别处理多个异常
79.为什么从集合中取出来的元素都是Object类型的?
集合中可以保存多种类型的对象,所以当从集合中抽取出的对象,虚拟机并不能识别是什么类型,所以向上转型为Object类。
80.HashMap等是实现的Collection的接口吗?
不是,实现的Map接口
81.Collection和Collections的区别?
Collection是集合接口,Collections是集合的算法类
82.String是基本数据类型吗?基本数据类型有哪些?
String是引用数据类型,基本数据类型有byte,short,int,long,float,double,char,boolean
83.异常捕获的流程?如果有异常发生是怎样的流程?
try 块中执行代码,当触发异常后转换到catch块,执行完catch块后,无论是否有异常都会执行finally块
84.输入输出流分几种?分别在什么时候使用?
字符流,字节流,对象流;字符流在字符文件传输时,对象流在传输对象时使用
85.Error和Exception的区别是什么?
Error是系统错误信息,可以捕获,但无法处理。
Exception是异常,可以通过异常捕获在程序中捕获,也可以处理
86.什么是构造方法?构造方法的作用?(目的,意义)
构造方法是类产生对象的方法,作用:为对象分配空间,判断类是否加载,否则加载类,初始化成员变量,返回对象地址
87.this,super的用法与区别?
this 为当前类,super为父类
88.子类中怎么调用父类的方法?
使用super.方法
89.子类继承父类,父类的构造方法能被继承吗?
不会
90.讲一下多态的概念。
相同的行为,不同的表现。
允许用父类变量指想子类的实例,允许用接口变量指向实现类实例。
91.对象的序列化怎么实现的?
被序列化的对象先实现serializable接口,然后使用对象输出流将对象转化为二进制输出
92.访问修饰符有哪几种?他们之间的区别是什么?
public 公共的,所有的类都可以访问
protected 受保护的,同包的子类和非子类,不同包的子类可以访问
default 默认的,同包的类可以访问
private 私有的,其它类不可访问
93.静态变量与成员变量的区别?
静态变量在类加载时产生,所有对象使用的静态变量均为同一的变量,放在数据段中成员变量需在产生对象后初始化产生,放在堆中
94.对对象进行比较怎么做?为什么不用“==”?
equals方法,==是比较对象内存地址的值
95.什么时候用继承Thread?什么时候实现runnable接口?
当只有一个类继承时使用继承Thread,当已经继承了其它类,同时需要实现多线程则使用runnable接口
96.Map,List与Set的区别?里面常用的类有哪些?
Map是按照键值对的方式保存,主要有HashMap,HashTable,TreeMap
List是按照顺序存放,主要有ArrayList,LinkedList,Vector
Set是不按照顺序存放,主要有HashSet,TreeSet
97.举出常用的List类,哪种情况用哪种好?
ArrayList:按照顺序,在末尾插入或需要遍历时使用
LinkedList:链表结构,在中间或前端插入数据使用
98.什么时候用输入流,什么时候用输出流
对于内存输入则使用输入流,从内存输出则使用输出流
99.写一个数组的创建
String [] str =new String[5]
100.重写与重载的区别?参数一样,返回类型不一样 是重载吗?
重写:父类和子类之间,访问修饰符大于等于父类,返回类型相同,方法名和参数列表相同
重载:在同一个类中,访问修饰符可不相同,返回类型可不相同,方法名相同,参数列表不同
不是
101.final与finally,finalize的区别?
final 修饰变量为常量,修饰方法不可重写,修饰类为最终类
finally在异常捕获的最后执行清理工作
finalize为系统清理垃圾的方法
102.int与Integer的区别?
int 为基本数据类型,Integer为包装类
103.集合里的接口有哪些?请你创建一个List类的实例
Collection,List,Set,Map
List list=new ArrayList();
104.变量按作用域分类分为几种?
局部变量,成员变量,静态变量
105.Java的引用数据类型有哪些?
对象,数组,接口
106.Java程序的执行过程是怎样的?
编写源文件(.java) 将源文件编译成(.class)文件,类加载,字节码校验,解释器,OS
107.启动线程时可以调用run()方法吗?
不可以
108.解释一下在项目里你怎么去实现多线程的。
写子线程类,产生子线程类对象,调用start()
109.面向对象的特征有哪些?
继承,封装,多态
110.谈谈线程所拥有的几种状态
新建,就绪,运行,结束,休眠,挂起,阻塞,等待
111.java安全性体现在什么地方?
垃圾回收机制 异常处理
112.谈集合遍历的方式
使用Iterator遍历,使用for-each结构(jdk1.5) for循环(List)
113.定义抽象方法的意思何在?
当子类继承父类后必须重写抽象方法,对子类行为的规范和统一
114.你是怎么使用静态变量和成员变量的?
静态变量:共享 统一,当类中对象都有属性,但值不同,使用成员变量
115.transient是什么意思?
当序列化时不序列化,该属性的值不做传输。该关键词修饰的属性
116.创建对象的方式有哪些?
new ,反射,反序列化
117.什么是反射?
在编译时并不知道应该加载哪个类,类的加载是运行是进行的。反射具有对类本身信息进行探知和自审的功能。
118.用接口有什么好处?
达到系统的分离,提高系统的灵活性,使用接口规定公共的行为
119.抽象方法能不能是private和static修饰符?
不能
120.Java基础技能中强大程序代码的读写能力,如果一个类很长,你会怎样读写?
分离 分离方法 分离类
121.线程和进程的区别是什么?
系统中程序的运行对应一个进程,每个进程都会消耗内存。一个进程包括多个线程。
122.为什么实现一个接口必须要实现接口里面所有的方法?
因为在使用接口调实现类方法时,必须要确保该方法已经有实现。
123.awt和swing的区别?
awt 调用的是OS中的样式,均有的组件才能使用。
Swing使用自身组件,不调用系统组件
124.Class和class的区别?
Class是类模版类,class为关键字
125.在线程中wait与sleep的区别?
wait在同步中使用,为Object类的方法自动释放锁,且不需要其它程序调用notify唤醒。
Sleep任何地方使用,为Thread类的方法,不会释放锁,休眠一定时间后自动唤醒。
126.什么是封装?封装的好处是什么?
封装是将对象所具有的属性和方法作为一个整体,封装第一是信息的集合。第二信息的隐藏
127.什么是线程同步?
当两个以上的线程访问同一个资源时,为了保护资源,避免数据混乱。对象在同一时间只能被一个线程访问,等该线程释放锁后其它线程才能访问
128.static和非static修饰的变量哪个生命周期长?
Static修饰的变量
129.java的环境变量如何配置?为什么要配置?
将系统环境变量中建JAVA_HOME的键,同时将其bin目录的全路径添加到path中,配置环境是为了在任何目录下都能使用jdk的编译和运行环境
130.演示java项目如何打包成jar文件?
使用eclipse中导出功能
131.prviate变量能不能被其它类访问?如果能,怎么访问?
可以,使用反射或为该类提供get/set方法
132.Java为什么能过跨平台?
Java代码运行是在虚拟机中解释运行的,不同OS有针对于该OS编写的虚拟机
133.System.out和System.in是什么意思?
系统标准输入和输出。标准的含义是利用标准的外设,键盘、鼠标、显示器,作为输入输出的设置。
134.谈谈&&和&的区别
&&逻辑与,为逻辑判断符号 短路
&位运算符号,相同的位保存为该相同的数值,不同则为0
135.你的程序遇到错误时怎么解决?
查看错误描述和行数,分析错误原因,使用断点调试
136.什么是泛型?它有什么样的好处?
对与集合指定其类型,规定了集合中只能存放的类型,在集合中取出的对象不需要Object类强转。
137.说一下Iterator
迭代器,Iterator作为指针的工作有理,在集合中的元素之间进行跳动达到遍历集合的作用。
138.谈谈HashMap和HashTable的区别。
HashMap为jdk1.2,允许空键和空值,线程不安全,效率高
HashTable为jdk1.0,不允许空键和空值,线程安全,效率低
139.什么是对象序列化,为什么要使用?
对象序列化是将对象以二进制方式传输对象,流都是字节方式传输,传输对象之前必须将对象打散成字节序列以利用传输。需要序列化的对象需要实现serializbale接口
140.异常框架的类结构?
Throwable类下分为Error类和Exception类
141.多线程的优先级?为什么要分优先级?
1-10,数字越大,优先级越高;优先级可增大系统资源的获得概率。
142.什么是异常?描述下异常处理?
异常是描述错误信息的对象,通过try_cathc捕获异常处理异常
143.谈谈集合框架?
集合框架包含:1.接口 2.实现类3.算法(Collections Iterator)
144.谈谈你对面向对象的理解与认识?
使用面向对象的方式开发可以做到组件式的开发,对于不同的对象使用封装,对程序进行模块化的设计。
145.项目中印象最深的部分?
需求分析
146.方法重载的好处?
实现好的兼容性,同一方法可以完成不同情况下的行为。
147.谈谈继承,为什么要使用继承?
继承使子类拥有父类的属性和方法,简化代码提高代码的重用。
148.接口与抽象类的区别?
接口关键字interface,只能有静态常量,抽象方法,无构造方法,可以多重实现
抽象类关键字abstract,可以有实现方法和抽象方法,静态常量和属性,有构造方法,不能产生对象,只能单根继承
149.说说项目工作流程?
需求分析-概要设计-详细设计-代码编写-程序测试-程序上线
150.说说工厂模式?
工厂模式是指将需要创建对象所做的初始化工作封装成类,外部直接调用该工厂类产生对象(接口对象),将类信息放在文件中,怎讲代码灵活性。
151.什么是单例模式?
确保该类的对象只有一个,为的是减少内存消耗,提高效率。类中提供静态方法判断是否产生类,并返回该类,构造方法为private修饰
152.说说socket开发的流程?
创建ServerScoket,开放端口,调用其accept()方法等待客户端连接
153.log4j有几个级别?
debug,info,warn,error,fatal
154.Socket和ServerSocket的区别?
Socket为客户端请求的数据对象,ServerSocket为服务器端接受数据对象
155.PreparedStatement和Statement的区别
Statement只能直接编译写好的sql语句,不同的sql语句需要重新编译
PreparedStatement预编译sql,对值部分使用问号代替,不同的值只需编译一次sql语句。
156.什么是格式良好的xml,什么是有序的xml?
良好是结构符合标记成对出现,标记意思明确,有序是指满足DTD约束
157.解析XML的方式主要有哪些?各自有什么优缺点?
DOM:将文档全部读取到内存,方便操作,消耗资源
SAX:通过事件回调模式解析,按需求读取,效率高,对xml结构不直观

1 1
原创粉丝点击