JAVA研发面试题总结——面向对象基础

前两天总结了阿里巴巴的笔试,因为之前也参加过一些面试,现在总结下通用面试题吧(不包含问项目的)。九月份即将参与面试的童鞋可以参考参考。

异常有哪些?

主要分为:RuntimeException与CheckedException,CheckedException是在编译时候检查的,比如IOException、ClassNotFoundException、ServletException,如果不捕捉或者抛出异常,不能通过编译(之所以需要显式抛出,我个人理解是因为可以预想到的,极容易出现的);而RuntimeException指的是运行时候可能出现的异常,如空指针、数组越界。

异常和错误的区别?

Error一般是虚拟机内部错误,无法再代码中捕获;而异常可能是代码中的可以捕获的,即程序员告诉JVM他已经知道了代码中这个地方可能会出现问题,并且会自主处理的。

Error有哪些?

比如java heapspace、java outOfMemory、StackOverflow、java permentSpace等(可能会追问,什么情况产生这些错误)。

try、catch、finally对应关系?

try块必须要有,catch与finally必须至少要有其中的一个,否则无法通过编译。一个try块可以通过多个catch块,对应一个finally块(下面可能会问执行次序)。

final、finally、finalize区别?

final可以修饰class,也可以修饰field与方法,修饰class表示不可变(可能会问不可变类有哪些特点),修饰field表示为常量(可能会问常量在何时进行初始化),修饰方法表示方法不能够被Overwrite(这个时候面试官可能会问你重写与重载的区别哦)。

finally一般同try、catch一起使用,作用是防止出现异常下/正常情况下均能够关闭数据库连接,关闭流等,因为try块与catch块在结束之前都会进入finally块(这时候会问return与finally块谁先执行,或者会问)。

finalize是Object里面的方法,用于垃圾回收。

写一个程序,证明finalize的出现场景?

<span style="font-size:18px;">package JVM;

/**
 * @author lcx
 *
 */
public class FinalizeTest {

	public void finalize()
	{
		System.out.println("finalize........");
	}

	public static void main(String[] args) {
		for(int i=0;i<1000;i++)
		new FinalizeTest();
		System.gc();
	}
}
</span>

不可变类有哪些特点?

不可变类成员是final类型,在构造器内必须完全赋值,并且方法中只有getter没有setter。

写一个不可变类?

<span style="font-size:18px;">/**
 * @author lcx
 *
 */
public class NoChangeable {

	private final int a;

	public int getA() {
		return a;
	}

	public String getStr() {
		return str;
	}
	private final String str;
	public NoChangeable(int a,String str)
	{
		this.a=a;
		this.str=str;
	}

}
</span>

不可变类如果有一个对象R,那么通过getter会导致对象逸出吧,怎么避免这个问题?

可以通过return R.clone()来实现,当然,R首先必须实现Cloneable接口。

Java自带有哪些不可变类?

最常见的是String,还有基本类型的包装类。

Object有哪些方法?

finalize、hashcode、toString、equals、wait、nitify、notifyAll、clone、getClass

java常见有哪些包?

java.lang、java.util、java.net、java.sql、java.swing、java.awt、java.io等(面试官会问包的作用)。

当然,还会问你接口、抽象类、抽象方法等问题。

这个可以百度看看。

重写和重载区别?

重写方法名、参数相同,所在类不同,不可重载构造器;作用是覆盖父类方法。

重载方法名相同,参数不同,所在类相同,可以重载构造器;作用是扩展方法,适用于不同参数。

我遇到的问题就是这些

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-07 17:11:46

JAVA研发面试题总结——面向对象基础的相关文章

百度Java研发面试题 总结

1. 单例模式常见的应用场景分析. 在23种设计模式中,单例模式排行老大.虽然理解简单,但是对于应用场景.你真正的熟悉么?使用单例,是由于没必要每个请求都新建一个对象,这样既浪费CPU又浪费内存:之所以用多例,是为了防止并发问题:即一个请求改变了对象的状态,此时对象又处理另一个请求,而之前请求对对象状态的改变导致了对象对另一个请求做了错误的处理. 先来说说Java web中的单例应用场景:数据库连接池就是单例模式,有且仅有一个连接池管理者,管理多个连接池对象.我们常用的service和dao层的

联想高级Java研发面经+面试题:Spring+多线程+MySQL+设计模式

上个礼拜,之前的一个同事突然联系我说他去面了联想的JAVA开发工程师,想分享一下面试经历和面试题.我当时就拍板说,好啊! 然后就整理了一下,写了这篇文章:和大家分享一下这次面试经验和面试题. 薪资还可以啊,年薪40W+啊!多少人的梦想啊! 言归正传,和大家分享一下这次联想的面经和面试题: 联想面经: 第一轮:电话初面 第二轮:技术面谈 第三轮:高管复试 第四轮:HR最后确认 No.1:第一轮面试--电话初面 首先确认对联想的意向度(如果异地更会考虑对工作地点(北京)的意向度!联想很看重这个):其

Java工程师笔试题整理[校招篇]

隔着两个月即将开始校招了.你是不是也想借着这个机会崭露头角,拿到某些大厂的offer,赢取白富美.走上人生巅峰?当然如果你还没能打下Java基础,一定要先打好Java基础:如何一步一步的学Java - 学习编程 - 知乎专栏.然后再来看一下练习一下各大厂的面试笔试题目. 如果以下内容满足不了你,你还可以去看这篇: 2016校招编程题汇总 - 学习编程 - 知乎专栏 进入主要内容(主要内容整理来自牛客网:牛客网)(以下内容按照各大公司进行划分,对每一公司按照年份进行划分,如果想想下载以下内容,可以

【Java面向对象基础(三)】面向对象思想

[喵"的Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinking in Java中提到“Everything is an object”,即万物皆对象.这里的“对象”指的是任何实体或者任何可以当作实体看待的“虚幻的事物”.比如现实中的人(男人.女人.老人.小孩而...).动物(大象.狮子.猴子...).桌子.凳子.汽车.ATM机等等,也可以使看不见摸不着的空气(氧气.二氧化碳.氮气

【Java面向对象基础(一)】数据类型与运算符

[喵"的Android之路][基础篇(一)][Java面向对象基础]数据类型与运算符 1.数据类型介绍 在Java中,数据类型分为两种:基本数据类型和引用类型. 基本数据类型共8种,见下表: 基本数据类型 字节数 二进制位数 最小值 最大值 默认值 byte 1 8-bit -2^7 +2^7 - 1 0 short 2 16-bit -2^15 +2^15 - 1 0 int 4 32-bit -2^31 +2^31 - 1 0 long 8 64-bit -2^63 +2^63 - 1 0

【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder

[喵"的Android之路][基础篇(二)][Java面向对象基础]细说String.StringBuffer和StringBuilder 1.String String是Java中的一个final类,主要用于字符串的处理. 1.1 不可变性 String内的字符串是不可变的,每一次修改都会重新生成一个新的String对象实例. 例: 1 // 在堆中会创建一个"Hello"字符串实例,把地址赋给对象a 2 String a = new String("Hello&

Java入门——面向对象基础(一)

Java入门——面向对象基础(一) 本博客目的 练习题(重要) 面向对象的概念(了解) 面向对象的三大特性(重要) 2016-09-10——13:13:39 ll练习题 用方法调用的形式进行数组排序 1 package Sep10; 2 //调用方法完成两个整形数组的排序并打印 3 public class ArrayRefDemo03 { 4 5 /** 6 * @param args 7 */ 8 public static void main(String[] args) { 9 // T

《Java从小白到大牛》之第10章 面向对象基础(下)

<Java从小白到大牛>纸质版已经上架了!!! 封装性与访问控制 Java面向对象的封装性是通过对成员变量和方法进行访问控制实现的,访问控制分为4个等级:私有.默认.保护和公有,具体规则如表10-1所示. 表 101 Java类成员的访问控制 可否直接访问控制等级 同一个类 同一个包 不同包的子类 不同包非子类 私有 Yes 默认 Yes Yes 保护 Yes Yes Yes 公有 Yes Yes Yes Yes 下面详细解释一下这4种访问级别. 私有级别 {#-0} 私有级别的关键字是pri

第二十五节:Java语言基础-面向对象基础

面向对象 面向过程的代表主要是C语言,面向对象是相对面向过程而言,Java是面向对象的编程语言,面向过程是通过函数体现,面向过程主要是功能行为. 而对于面向对象而言,将功能封装到对象,所以面向对象是基于面向过程的.以前是主要以面向过程为思想,现在是将功能装进对象中,如果要用到功能时,就调用该对象即可. 面向对象是入门思想的进步,适用于人类的思考,将复杂的东西进行了简单化,将我们程序员从执行者变化成指挥者.由以前面向功能(面向过程)转变为面向对象(封装的功能). **** 面向对象设计思想 设计思