Java面试题之一
下面也将收集一些经典的java面试题,琢磨这些面试题还是非常有好处,可以弄清楚一些容易混淆的知识点,下面面试题的答案部分来自网络,有些来自自己的理解,都是自己精心归纳整理的,有问题的地方,希望大家指出,以便及时更正。
一、GC是什么? 为什么要有GC?
GC是Gabage Collection的缩写。中文意思就是垃圾回收。
Java由C++发展而来,在C/C++中,需要程序员自己来释放无用变量的内存空间,这样非常繁琐,程序员也可能忘记释放或者释放了不该释放的内存。同时也会耗费程序员大量精力在释放内存上。所以,Java就对此做了改进,由系统来管理内存的释放,不再由程序员去人工释放内存空间了。当Java虚拟机发觉内存资源紧张的时候,就会自动地去清理无用变量所占用的内存空间,如果程序员显示地调用System.gc(),可以通知虚拟机加快垃圾回收的速度。但并不能控制垃圾回收。
二、switch语句能否作用在byte上,能否作用在long上,能否作用在String上?
在switch(condition)中,condition只能是一个整数表达式或者枚举常量,整数表达式可以是int基本类型或Integer包装类型,由于byte,short,char都可以隐含转换为int,所以这些类型以及这些类型的包装类型也是可以的。long不能作用于switch语句中。String在jdk1.7之前的版本也不可以。
三、"=="和equals方法究竟有什么区别?
1. "=="是运算符,equals是方法,可以被重写。
2.“==”操作符用来比较变量所对应的内存中所存储的数值是否相同。所以要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。因为比较基本数据类型是否相等就是比较其内存中的数值是否相等。比较两个引用变量是否相等就是比较其内存中的值(该变量所指向的对象的首地址)是否相等,就是比较它们是否指向同一个对象。
3. equals()方法是用于比较两个独立对象的内容是否相同。比如:String a=new String("java"); String b=new String("java");这两个变量指向的是两个不同的对象,它们的首地址是不同的,也就是说a和b内存中存储的值是不同的,即a==b会返回false,但它们的内容是相同的,所以a.equals(b)将返回true。
4. equals是Object的方法。其底层实现就是根据“==”来判断的,这就是说如果一个类或者其父类没有覆盖Object的equals()方法,那么“==”和equals()效果是一样的。上面就是因为String类已经重写了equals()方法,所以“==”和equals()得到的结果才会不一样。
四、构造方法能否被重写和重载?
1、构造方法是允许被重载的,而且重载构造方法是一种很普遍的做法,可以方便使用者灵活的创建对象。重载的构造方法之间相互调用可以使用this关键字。
2、在继承过程中构造方法是不能被继承的,因此在子类中无法对父类构造方法重新定义,当然就不能被重写了。如果需要在子类中调用父类的方法,可以调用super关键字引用。
五、抽象类和接口的区别?
1、接口和抽象类都不能产生对象。接口变量只能指向实现类对象,抽象类变量只能指向子类对象。
2、一个类实现接口或者一个类继承一个抽象类,都必须实现接口或抽象类中定义的所有抽象方法。除非该类也是抽象类。
3、抽象类中可以定义抽象方法也可以定义具体方法。但接口中只能定义抽象方法。
4、接口中定义的变量都是public static final。而抽象类中定义的变量是普通属性。
5、接口中定义的方法都是public。不能用private,protected修饰。而抽象类中定义的方法可以是默认、protected、public。
6、一个类只能继承另一个类,但可以实现多个接口。
7、接口和抽象类中都可以不定义抽象方法。
Java面试题之一的更多相关文章
- java面试题及答案(转载)
JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时 ...
- 115个Java面试题和答案——终极列表(下)
第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,本章主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servle ...
- Java面试题(全)
JAVA部分 什么是反射机制?反射机制应用(Struts中反射机制的应用) 答:运行状态中,对于任意一个类,都可以知道它的所有属性和方法,对于任意一个对象都可以调用它的任意一个方法,这种动态获取信息以 ...
- Java面试题大全(四)
JAVA代码查错 1. abstract class Name { private String name; public abstract boolean isStupidName(String n ...
- 大公司的Java面试题集
找工作要面试,有面试就有对付面试的办法.以下一些题目来自我和我朋友痛苦的面试经历,提这些问题的公司包括IBM, E*Trade, Siebel, Motorola, SUN, 以及其它大小公司. 面试 ...
- 收集了50道基础的java面试题
下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最 ...
- Java笔试题解答和部分面试题
面试类 银行类的问题 问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你 ...
- 转:Java面试题集(51-70) http://blog.csdn.net/jackfrued/article/details/17403101
Java面试题集(51-70) Java程序员面试题集(51-70) http://blog.csdn.net/jackfrued/article/details/17403101 摘要:这一部分主要 ...
- JAVA面试题集之基础知识
JAVA面试题集之基础知识 基础知识: 1.C 或Java中的异常处理机制的简单原理和应用. 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就 ...
- [原]Java面试题-将字符串中数字提取出来排序后输出
[Title][原]Java面试题-将字符串中数字提取出来排序后输出 [Date]2013-09-15 [Abstract]很简单的面试题,要求现场在纸上写出来. [Keywords]面试.Java. ...
随机推荐
- 如何修改MFC发布程序的图标
(1)第一种方法,直接替换工程路径下面res下面的ico图标,然后重新编译,一般需要重启系统才会生效: (2)第二种方法,在VS工程资源预览窗口的ICO下增加一个ico资源,名为IDR_ICON1,然 ...
- Mybatis学习之JDBC缺陷
1.JDBC存在的问题 1.将sql语句硬编码到java代码中,如果修改sql语句,需要修改java代码,重新编译.系统可维护性不高. 设想如何解决?(将sql单独 配置在配置文件中) 2.数据库连接 ...
- Python开发环境Spyder安装方法
Spyder(Scientific PYthon Development EnviRonment)是一个强大的交互式 Python 语言开发环境,提供高级的代码编辑.交互测试.调试等特性,支持包括 W ...
- python的reduce()函数
reduce()函数也是Python内置的一个高阶函数. reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接 ...
- 【转】使用Boost Graph library(二)
原文转自:http://shanzhizi.blog.51cto.com/5066308/942972 让我们从一个新的图的开始,定义一些属性,然后加入一些带属性的顶点和边.我们将给出所有的代码,这样 ...
- 灵动标签内sql语句调用
本节来介绍帝国cms中,灵动标签中如何写数据库调用我们所要的信息.方便一些没有学习过数据库的朋友 转载请注明出处:谢寒的博客 灵动标签默认的语法 [e:loop={栏目ID/专题ID,显示条数,操作类 ...
- samba服务器上文件名大小写
samba服务器上文件名大小写 如果给HP_UX配置samba之后,通过windows访问有时候会发现文件名大小写不对时,请注意下述配置信息是否正确.在/etc/opt/samba/smb.conf中 ...
- BZOJ 1874 取石子游戏 (NIM游戏)
题解:简单的NIM游戏,直接计算SG函数,至于找先手策略则按字典序异或掉,去除石子后再异或判断,若可行则直接输出. #include <cstdio> const int N=1005; ...
- JAVA 创建TXT文件,写入文件内容,读取文件内容
[java] view plain copy package com.abin.facade.ws.mail.function; import java.io.BufferedReader; i ...
- golang语法学习(一):变量,常量以及数据类型
学习一门新的语言肯定是要从他的主要的语法開始,语法构成了整个程序设计的基础,从语法中我们也能够看到这门语言的一些特性.可是话说回来.语法这东西,不同的语言大同小异,所以这也对语法的记忆造成了一定的难度 ...