java 面试基础典型题及答案
1、switch能否作用在byte、int、long、String?
答案:switch能作用在byte、int、enum常量, 补充:jdk7可以作用在String上
2、short s = 1; s = s + 1;有什么错? short s = 1; s += 1;有什么错?
答案: s = s + 1; 在计算右边的表达式时,隐式的将s转换为int,将一个int类型赋值给short出错,必须强制转换,即: s = (short)(s+1); 而s+=1; 编译器会首先将+=后面的1强制转换为+=前面的数据类型。故无错。
3、char型变量中能不能存贮一个中文汉字?为什么?
答案: 可以,因为java默认采用unicode编码表示一个字符。
4、用最有效率的方法算出2乘以8等於几?
答案: 2<<3 将2左移3位,2的3次方等于8;
5、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
答案: 引用不能变,而引用对象的值可以改变,
比如final StringBuffer BUFF = new StringBuffer("123");
BUFF.append("456"); //打印后是123456的字符串
6、静态变量和实例变量的区别?
答案:静态变量又叫类变量,属于类而不是对象,用static关键字修饰;而实例变量属于对象,必须先实例化一个对象后,才能使用实例变量。
7、是否可以从一个static方法内部发出对非static方法的调用?
答案: 不能,因为static方法属于类,而非static方法属于实例化对象,静态类方法不知道调用哪个对象的非静态方法。
8、Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
答案:12, -11;原因:向最大方向四舍五入。
9、请说出作用域public,private,protected,以及不写时的区别
答案:同一个包下的类认为是朋友:friendly。默认为friendly
public: 当前类、子类、同一包、其他包
protected: 当前类、子类、同一包
private: 当前类
friendly: 当前类、同一包
10、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
答案: Overloaded是重载,Override是重写。Overloaded在方法参数列表不同时,可以改变返回值的类型。
11、构造器Constructor是否可被override?
答案: Constructor即构造方法,不能被继承,当然不能被重写。
12、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法?
答案:接口可以被继承,使用extends关键字;抽象类可以实现接口;抽象类可以继承具体类;抽象类中可以有静态main方法,也可以有静态方法。
13、写clone()方法时,通常都有一行代码,是什么?
答案: super.clone(); clone即克隆,将一个对象拷贝给另一个对象,这两个对象属于独立的对象,改变其中一个对象,不会改变另一个对象。注意有浅克隆和深克隆之分。
14、抽象类和接口的区别:
答案: 1、面向对象中,所有对象都用类来描述,但是并不是所有类都用来描述对象。如果一个类中没有足够的信息来描述具体的对象,我们称之为抽象类。是对一系列看上去不同,但本质相同的具体概念的抽象。
2、语法上,用abstract class和interface区别,实现分别用extends和implements实现。
3、抽象类可以有非抽象方法但接口只能有抽象方法
4、一个类只能继承一个类,但可以实现多个接口。
5、抽象类中的字段可以不被初始化,但接口中定义字段时必须被初始化。
15、什么是内部类?Static Nested Class 和 Inner Class的不同。
答案: 内部类:是定义在类中的类。static nested class(嵌套类)是静态内部类:1、创建嵌套类的对象,并不需要其外部类的对象。 2、不能从嵌套类的对象中访问非静态的外部类对象。
16、是否可以继承String类?
答案: 不能,String类是一个final终结类。
17、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别?
答案:两个。"xyz"作为一个常量字符串首先被创建,它保存在”常量“区,一旦创建不能修改,因此下次需要一个相同的字符串时,不必创建。引用一个常量串没有任何危险,因为它是只读的。当new String("xyz")调用时,再在堆(heap)中创建一个对象,值为常量区字符串的拷贝。区别:一个在常量池,一个在堆中。
18、String 和StringBuffer、StringBuilder的区别?
答案:都不是基本数据类型,都是final类不能被继承。String对象是一个不可变对象,一旦创建不能修改它的值。对于已经存在的String对象修改它的值,会重新创建一个新的对象,然后把新的值保存进去。对String对象的连接操作(+)实际上是会建立一个StringBuffer类对象,然后把字符串添加进去,最后调用toString()方法。 StringBuffer类是一个可变对象,当对它进行修改时不会像String那样重新建立一个对象,调用append()方法即可。 StringBuffer是线程安全的,而Stringbuilder不是线程安全的。所谓线程安全,就是每个修改容器中数据的是同步的,因此保证了线程安全。
19、如何把一段逗号分割的字符串转换成一个数组?
答案: 调用String类中的实例方法split(); str.split(",");
20、数组有没有length()这个方法? String有没有length()这个方法?
答案: 数组没有length()方法,有一个length字段,String有length()方法。
21、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";
答案:5个对象,现在常量池创建了"a","b","c","d",4个对象。再在堆中创建了一个"abcd"对象。
22、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
答案: finally{}里的代码一定会被执行。return之后执行finally,再执行了return,但是finally修改后的值,return的是修改之前的值。
23、final, finally, finalize的区别。
答案:final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
24、error和exception有什么区别?
答案: 相同处:Error类和Exception类都继承自Throwable类。不同处:Exception: 1、可以是可被控制(checked)或不可控制的(unchecked); 2、表示一个有程序员导致的错误。3、应该在应用程序级被处理。Error: 1、总是不可控制的(unchecked); 2、经常用来用于表示系统错误或底层资源错误。 3、如果可能的话,应该在系统级被捕获。
25、运行时异常与一般异常有何异同?
答案: 1、一般异常指checked exception: 这类异常都是Exception的子类。异常向上抛出,可能导致的问题:代码效率低,耦合度过高。 2、运行时异常unchecked exception:这类异常都是RuntimeException的子类,虽然RuntimeException同样也是Exception的子类,但是他们是不同的,他们不能通过用户代码来试图解决。
26、请写出你最常见到的5个runtime exception?
答案: ClassCastException类型转换异常, ArithmeticException算数运算异常,NullPointerException空指针异常,IndexOutOfBoundsException索引越界异常。
NegativeArraySizeException负数作为数组大小异常,BufferOverflowException缓冲区溢出异常。
java 面试基础典型题及答案的更多相关文章
- java面试一日一题:讲下mysql中的undolog
问题:请讲下mysql中undo log的作用 分析:mysql中有很多日志,例,bin log undo log redo log,要弄清楚这些日志的作用,就要了解这些日志出现的背景及要解决的问题: ...
- java面试一日一题:java中垃圾回收算法有哪些
问题:请讲下在java中有哪些垃圾回收算法 分析:该问题主要考察对java中垃圾回收的算法以及使用场景 回答要点: 主要从以下几点去考虑, 1.GC回收算法有哪些 2.每种算法的使用场景 3.基于垃圾 ...
- java面试一日一题:mysql中常用的存储引擎有哪些?
问题:请讲下mysql中常用的引擎有哪些? 分析:该问题主要考察对mysql存储引擎的理解,及区别是什么? 回答要点: 主要从以下几点去考虑, 1.mysql的存储引擎的基本概念? 2.mysql中常 ...
- java面试一日一题:讲下在什么情况下会发生类加载
问题:请讲下在什么情况下会发生类加载? 分析:该问题主要考察对java中类加载的知识,什么是类加载,为什么会发生类加载,什么情况下发生类加载? 回答要点: 主要从以下几点去考虑 1.什么是类加载: 2 ...
- java面试一日一题:java中的垃圾回收器
问题:请讲下java中垃圾回收器有哪些? 分析:该问题主要考察hotspot虚拟机下实现的垃圾回收器 回答要点: 主要从以下几点去考虑, 1.垃圾回收器的种类 2.每种垃圾回收器的着重点是什么 前边的 ...
- JAVA面试基础
JAVA相关基础知识1.面向对象的特征有哪些方面 ?1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂 ...
- JAVA 面试基础
经典的Java基础面试题________________________________________________________________________________________ ...
- java面试基础题(三)
程序员面试之九阴真经 谈谈final, finally, finalize的区别: final:::修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此 ...
- java面试基础题------》Java 中的父子类静态代码块,代码块,构造方法执行顺序
4.指出下面程序的运行结果. class A { static { System.out.print("1"); } public A() { System.out.print(& ...
随机推荐
- 关于phpmyadmin中添加外键的做法
今天想加个外键,又不想用命令行,打开PHPMYADMIN看怎么弄,找了半天没有找到添加外键的地方,然后上网搜了一会,发现目前的PHPMYADMIN确实没有这个设置,所以只能手动命令行添加了. 语法 ...
- java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转)
下面是从网上找到的关于堆空间溢出的错误解决的方法: java.lang.OutOfMemoryError: Java heap space ============================== ...
- SURF特征
了解了SIFT特征后,来学习SURF特征. 虽说是SIFT的一个变种,可是跟SIFT还是有差别的 差别有例如以下: 1.尺度空间的构建(近似)不同. 2.同意尺度空间多层图像同一时候被处理 3.特征点 ...
- 酷Q机器人,QQ机器人使用教程
软件介绍: 酷Q,软件酷Q机器人是一款基于webqq开发的一款自动接收.处理qq消息的软件. 改程序使用易语言编写,精简大量不必要代码,减小了软件体积,优化程序速度,使得酷Q更加轻巧好用. 在消息处理 ...
- Android 基于Netty的消息推送方案之对象的传递(四)
在上一篇文章中<Android 基于Netty的消息推送方案之字符串的接收和发送(三)>我们介绍了Netty的字符串传递,我们知道了Netty的消息传递都是基于流,通过ChannelBuf ...
- vmstat
vmstat(virtual memory statitics)命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况, ...
- 使用VS Code开发Angular 2应用程序所需配置文件的解析
目录 package.json typings.json tsconfig.json launch.json settings.json tasks.json package.json: 这是项目的基 ...
- FileStream操作文件读写
FileStream fsRead = new FileStream(@"C:\Users\Administrator\Desktop\u.html",FileMode.OpenO ...
- MySQL 分区表 partition线上修改分区字段,后续进一步学习partition (1)
公司线上在用partition,有一个表的分区字段错了,需要重建,结果发现没有办法像修改主键字段或者修改索引字段那样直接一条sql搞定.而是需要建临时表,有down time,所以去仔细看了文档,研究 ...
- js formatString 格式化字符串
/* 函数:格式化字符串 参数:str:字符串模板: data:数据 调用方式:formatString("api/values/{id}/{name}",{id:101,name ...