Java经典面试题 带答案(二)_接口中只能有公有的方法和属性而且必须赋值(1)

谈谈线程所拥有的几种状态
就绪:线程分配了CPU以外的全部资源,等待获得CPU调度
执行:线程获得CPU,正在执行
阻塞:线程由于发生I/O或者其他的操作导致无法继续执行,就放弃处理机,转入线程就绪队列
挂起:由于终端请求,操作系统的要求等原因,导致挂起。
面向对象的特征有哪些?
封装、继承、多态
解释一下在项目里你怎么去实现多线程的。
1:一般是实现Runnable接口,new Thread().start(); 重写run();
启动线程时可以调用run()方法吗?
可以.因为run方法里面执行的代码就是线程所要执行的方法.
Java程序的执行过程是怎样的?
java源程序 编译.class字节码 类加载器 字节码校验器 解释执行
Java的引用数据类型有哪些?
对象、集合、数组、接口
变量按作用域分类分为几种?
分为两种。局部变量和全局变量.
集合里的接口有哪些?请你创建一个List类的实例。
Collection接口、set接口、list接口、map接口、iterator接口
List list = new ArrayList();
int与Integer的区别?
int是原始数据类型,integer是int的包装类,他提供转换类型的很多方法。
checked异常与unchecked异常的区别是什么?
区分他们的区别主要是看他们是不是runtime的子类,如果是runtime的子类那么就是运行期异常,否则是编译期异常。
final与finally、finalize的区别?
final用于声明属性、方法和类,分别表示属性不可更改,方法不可重写,类不可以继承。
finally是异常处理语句结构的一部分,他表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
重写与重载的区别?参数一样,返回类型不一样 是重载吗?
重载:方法名相同,参数类型不同,参数个数不同,参数顺序不同。
重写:方法名相同,参数的类型相同,返回的类型相同。
不是。因为重载是根据参数来断定的。
写一个数组的创建。
int[] i = new int[5];
int[] i={1,2,3,4,5};
什么时候用输入流,什么时候用输出流?
读取数据的时候使用输入流。
写入数据的时候使用输出流.
双缓冲如何实现的?为什么要用双缓冲?
先在内存中分配一个和我门动画窗口一样大的空间(在内存中的空间我门是看不到的),然后利用 getGraphics_r()方法去获得给空间并将它全部一次性的显示到我门的屏幕上.这样在我门的动画窗口上面是显示出来就非常的流畅了.避免了上面的闪烁效果.
举出常用的list类。哪种情况用哪种好?
arraylist、LinkedList、Vector.
arraylist是连续的空间,遍历速度快,插入和删除就比较慢。
linkedList是一个双向链表存放数据。如果删除和添加元素比较多的话,要效率高的就可以使用LinkedList。
vector和arraylist的功能一样,唯一的区别就是vector是线程安全的,而arraylist是线程不安全的。
Map、list与set的区别?里面常用的类有哪些?
map是以键值对的方式存数据。
list里面的数据可以重复,有顺序
set里面的数据不可以重复,没有顺序。
list的常用类有arraylist
set的常用类有treeset
map的常用类用hashmap
什么时候用继承Thread?什么时候实现Runnable接口?
当一个类中没有继承的时候可以使用thread。
如果一个类中已经使用了继承,就只有实现runnable接口
对对象进行比较怎么做?为什么不用“==”?
其实如果是非String的话,==与equals并没有区别。
因为String他是重写了object的方法,所以这才有了equals比较内容,==比较地址。
静态变量与成员变量的区别。
静态变量在对象加载之前初始化,而成员变量是在编译期间初始化。
静态变量可以直接通过类名点的方式进行访问,而成员变量则不行。
访问修饰符有哪几种?它们之间的区别是什么?
有四种。
前提:在一个项目中。
public可以在所有包中的所有类随意进行访问。
private只能在被当前类访问。
protected:在同一包中,或子类可以进行访问。
默认:同包下能被访问。
对象的序列化怎么实现的?
实现Serializable接口。
讲一下多态的概念。
多态就是相同的行为不同的体现方式。(比如:爱好,每个人都要自己的爱好,但是爱好都不同)
子类继承父类,父类的构造方法能被继承吗?
能。
子类中怎么调用父类的方法?
通过super.方法
this、super的用法与区别?
this的访问当前类的属性和方法。
super是访问父类的属性和方法。
什么是构造方法?构造方法的作用?(目的、意义)
构造方法是在调用的时候被new出来的,每个类都有构造方法。
作用:为对象分配内存、初始化类变量、初始化属性、返回引用。
Error和Exception的区别是什么?
Error:是系统级的错误,可以捕获,但不同处理。
exception是程序错误,可以捕获也可以进行处理。
输入输出流分几种?分别在什么时候使用?
输入流:InputStream、Read
输出流:OutputStream、writer
读取字节,使用InputStream 以字符读取用Read
输出字节,使用OutputStream 以字符输出用writer
异常捕获的流程?如果有异常发生是怎样的流程?
try{
容易发生异常的代码
}catch(错误的类型){
打印错误信息
}finally{
不管有没有异常都要执行
}
String是基本数据类型吗?基本数据类型有哪些?
不是。
基本数据类型:byte、short、int、long、float、double、char、boolean
Collection与Collections的区别?
Collection是一个接口.
collections是一个帮助类。(主要对查找、排序)
HashMap等是实现的 Collection的接口吗?
不是。
hashMap实现的是map接口。他是以键值对的形式保存。
游戏中的paint()方法从何处来的?让窗本重绘最好采用哪种方法?
NO!!!没做过。
为什么从集合中取出来的元素都是Object类型的?.
因为他们都是object的子类。
如果try块中有多种异常,在catch块中如何处理?
直接在类型catch中写一个Exception异常。
如果要抛出异常怎么做?
使用throw明确要抛出异常的代码,在方法中使用throws抛出异常类型。
实现接口使用什么关键字?在实现一个接口时必须要做什么?
使用interface关键字。
实现一个接口必须实现这个接口里面的所有方法.
GUI响应一个事件的代码如何写?
确定事件源;确定监听器,监听器需要实现监听器接口,重写其中的方法;完成事件源和监听器的注册
JVM是什么?它的作用是什么?它和java运行环境有什么区别?
Java虚拟机是一个抽象的计算机,和实际的计算机一样,它具有一个指令集并使用不同的存储区域。
它负责执行指令,还要管理数据、内存和寄存器。Java解释器负责将字节代码翻译成特定机器的机器代码
没有java虚拟机就更不要说运行环境了。
集合和数组的区别。
1:集合中可以存放不同元素的类型,而数组中只能放同一种类型的数据。
2:集合的长度可以随着元素的多少自动增长,而数据的长度一旦定义就不能更改。
3:集合中只能放置对象,数组中可以是对象也可以基本数据类型。
4:集合提供了很好的算法,而数组里面的算法有限。
final这个修饰符的用法?
final主要修饰属性、方法、类。分别代表属性的值不可更改、方法不可以重写、类不可以继承。
如何定义一个常量?定义常量的意义何在?
使用final定义常量.主要是针对一些不需要修改的数据。
谈谈算术表达式的优先级
No!
是否可以继承String类?
不可以。因为String是final
什么样的类不能被实例化?Math这个类能不能实例化?
抽象类不能被实例化。
math不能被实例化。
基本数据类型和引用数据类型的区别是什么?
基本数据类型他们代表的是元素的实际值,也就是说基本数据类型是存在栈中的。
引用数据类型是元素所代表内存中所指向的一个地址,在栈中只是保存对象的地址。而对象的具体内容是保存在堆中的。
引用数据类型作为参数传递时,传递的是什么?
传递的是所指向内存中的一个地址。
局部变量使用时候需要注意什么问题?
局部变量是定义在方法中。
一个子类能同时继承于多个父类吗?
不能,可能出现菱形错误(比如:一个儿子,他只能有一个爸爸,但是反过来说一个爸爸就可能有多个儿子)
子类继承父类时,在子类构造方法的第一行语句应该怎么写?
throw和throws的区别
throw是明确要抛出的语句代码,throws是声明此方法将抛出某类型的异常
byte的取值范围
byte最大的取值范围是+127
byte最小取值范围是-128
java中采用什么字符编码集?char类型能不能放入一个中文字?
Unicode编码。能
main方法中有个参数String[] args。这个参数的值是由谁传递给它的。
由方法传递。
java语言的特点是什么?
简单、面向对象、分布式、跨平台、健壮、解释性、安全、多线程、垃圾回收。
项目开发的流程是怎么样的?
需求分析 设计 编码 测试 维护
创建一个线程有几种方法?
有两种方法:1:extends Thread 2:implements Runnable
在Dos界面下如何编译并执行Java程序?
javac 文件名.java
java 文件名
说几个String常用的方法
比如:拆分字符串(split) trim()取出空格 length()长度
接口里可以定义变量吗?
可以定义变量,但必须是public,而且必须初始化.
接口里方法修符是什么?
接口方法的修饰符是public.
String和StringBuffer的区别?
String他的长度不可增长。
StringBuffer的长度可以增长.
断言有什么作用?
调试程序。
GUI的布局管理器常见的有哪几种?
jframe:border
jpanel:flow
请列举switch( )括号中能接受的所有数据类型。
int\double\float\long
构造方法和方法有什么区别?构造方法能不能被重载,能不能被重写?
构造方法主要是为了调用这个类的时候用于new出这个类。
方法的作用是实现了某个功能的代码放到这个方法之中。
构造方法能被重载,不能被重写.
如果一个类实现一个接口,可不可以不实现接口里定义的所有方法?
不可以。如过不实现那就不称为接口.
类InputStream中方法read()的返回值是什么?读出的是什么?
返回的是InputStream,读取出来的是字节码。
如何将实现包装类和基本数据类型转化?
通过包装类提供的一些静态方法和方法进行转换.
什么时候类名和文件名必须一致?
在使用dos命令编译的时候。
java帮助文档是如何生成的?
在导出项目的时候选择javadoc.
游戏主界面有一个while循环,能否直接while(true)?
不能,如果是那样就是永远的循环。
什么是线程安全?
线程安全就是指在同一时间只能有一个能访问资源。比如(上厕所:一个公共厕所和一个私有是测试,那个安全性高)
线程同步化会带什么样的结果?
安全性好。
GC是什么? 为什么要有GC?
垃圾回收机制,因为有牛人帮我们做了这件事,就不需要程序员自己回收垃圾。减少了很多事情。
数组有没有length()这个方法? String有没有length()这个方法?
数组没有length(),只有length属性,String有length().
如何启动线程,它直接调用run()方法有什么区别?
Thread.start()方法启动线程,调用run方法必须启动该线程。
当一个线程进入一个对象的一个同步方法后,能否进入其它非同步方法?
不能。
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的代码会不会被执行,什么时候被执行?
会执行,当return返回后就执行finally里面的代码。
finally的作用是什么?一般在什么时候使用?
finally是无论try块中是否发生异常都能确保进行清理工作。一般都是在资源回收的情况下使用。
IO流操作的步骤是怎么样的?
1:建立流 操作流 关闭流
进行IO流操作时,如果操作的文件不存在会发生什么情况?
如果文件找不到,会抛出一个文件未找到异常。
什么是主线程?
一个线程必须执行的线程。
finally是不是什么时候都会执行?
不一定。比如:关闭虚拟机。
什么时候用继承,什么时候用接口?
在不是清楚业务的时候建议使用继承。如果是比较清楚业务的话就使用接口。
因为在接口中如果业务不确定,你想在这个接口中增加一个方法,那么他的子类都必须实现,不管他有没有用。
所以一般在业务很清楚的情况下,根据业务的需求进行选择。
Try块中是否所有的语句都一定会执行,为什么?
不是。因为try中只能有一个异常发生。
类的修饰符能不能是private、static、protected?
不能。如果是私有的这个类写来还有什么意义。
谈谈集合的作用
主要是存取数据元素。
如何让JFrame的初始位置居中(在不同的分辨率中)
设置它的setBounds的坐标.
如何将一个字符串转成一个基本数据类型
使用包装类进行转换。
静态变量和成员变量应该怎么访问?
静态变量可以使用类名点的方式访问。
成员变量可以用对象点的方式访问。
怎么样判断一个异常类是checked异常还是unchecked异常?
看他是否是runtime的子类,如果是runtime的子类则是运行期异常否则是编译期异常。
如何获得java当前的工作目录
使用系统类。System. getProperty_r(“user.dir”).
如何获得一定范围的随机整数?
使用Math类获取。Math.floor();
怎么样知道磁盘一个目录中有哪些文件?
d:/ dir
什么是包?定义包有什么好处?
包就是为了区分层次性。比如我这个包下面是业务层,另外一个包是持久层。
在IO中字节流和字符流的父类是什么?
InputStream和Reader
ArrayList和Vector的区别
ArrayList:存的元素是连续的内存空间,遍历速度比较快。在尾部插入速度也快,但是在中间插入慢,他是一个线程不安全的类。
verctor的功能和arraylist几乎一样。唯一的区别就是一个vector是线程安全的类。

前端面试题汇总

JavaScript

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

性能

linux

前端资料汇总

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值