您的位置:首页 > 职场人生

Java面试题

2016-07-13 09:43 309 查看
</pre>1. 请简述值类型与引用类型的区别?<p></p><p><span style="white-space:pre"></span>答:值类型:<span style="font-family:verdana,sans-serif; font-size:13px; line-height:19.5px">直接存放于栈中,取的时候是直接取得值。</span></p><p><span style="font-family:verdana,sans-serif; font-size:13px; line-height:19.5px"><span style="white-space:pre"></span>  引用类型:存在于托管堆中,取的时候是从栈取该对象的地址,然后用这个地址去托管堆中取值。</span></p><p><span style="font-family:verdana,sans-serif; font-size:13px; line-height:19.5px">2. 面向对象三大基本特征?</span></p><p><span style="font-family:verdana,sans-serif"><span style="font-size:13px; line-height:19.5px"><span style="white-space:pre"></span>答: 继承,封装,多态。</span></span></p><p><span style="font-family:verdana,sans-serif"><span style="font-size:13px; line-height:19.5px">3. 请简述ArrayList和List的主要区别。</span></span></p><p><span style="font-size:13px; line-height:19.5px; font-family:verdana,sans-serif"><span style="white-space:pre"></span>答: List 是一个接口类不可以被实例化, ArrayList 是一个List的实现类,可以被实例化。</span></p><p><span style="font-family:verdana,sans-serif"><span style="font-size:13px; line-height:19.5px">4. 请简述GC(垃圾回收机制)产生的原因,并描述如何避免?</span></span></p><p><span style="font-family:verdana,sans-serif"><span style="font-size:13px; line-height:19.5px"><span style="white-space:pre"></span>答:GC机制是Java虚拟机提供的能力,用于在空闲时间以不定时的方式动态回收无任何引用的对象占用的内存空间。</span></span></p><p><span style="font-family:verdana,sans-serif"><span style="font-size:13px; line-height:19.5px"><span style="white-space:pre"></span><span style="white-space:pre"></span>1) 减少类的实例化,因为实例化类会产生内存碎片。产生内存碎片无法使用。</span></span></p><p><span style="font-size:13px; line-height:19.5px; font-family:verdana,sans-serif"><span style="white-space:pre"></span><span style="white-space:pre"></span>2) 使用公用的对象(静态成员,常量) ,但是不能乱用。因为静态成员和常量的生命周期是伴随整个程序的。</span></p><p><span style="font-size:13px; line-height:19.5px; font-family:verdana,sans-serif"><span style="white-space:pre"></span><span style="white-space:pre"></span>3) 在拼接大量字符串时StringBuilder。再使用注意,创建StringBuilder对象时要设置StringBuilder的初始化大小。</span></p><p><span style="font-size:13px; line-height:19.5px; font-family:verdana,sans-serif"><span style="white-space:pre"></span><span style="white-space:pre"></span>4)使用object pool(对象池)。</span><span style="font-family:verdana,sans-serif; font-size:13px; line-height:19.5px">  </span></p><p><span style="font-family:verdana,sans-serif"><span style="font-size:13px; line-height:19.5px">5. 请描述 interface 与抽象类之间的不同?</span></span></p><p><span style="font-family:verdana,sans-serif"><span style="font-size:13px; line-height:19.5px"><span style="white-space:pre"></span>答:抽象类:有抽象方法的类叫做抽象类,抽象类不能被实例化,继承抽象类的子类一定要实现抽象类方法。 interface类里面的方法全是抽象方法,解决了Java不能多继承的弊端。继承接口类的实现类一定要实现接口类方法,当然接口类不能被实例化。</span></span></p><p><span style="font-family:verdana,sans-serif"><span style="font-size:13px; line-height:19.5px">6. public/protect/private/internal 修饰符的区别</span></span></p><p><span style="font-family:verdana,sans-serif"><span style="font-size:13px; line-height:19.5px"></span></span><table border="1" width="200" cellspacing="1" cellpadding="1"><tbody><tr><td> </td><td>包内</td><td>包外</td><td>子类</td><td>类内</td></tr><tr><td><span style="font-family:microsoft yahei; color:#555555"><span style="font-size:15px; line-height:35px">public</span></span></td><td>Y</td><td>Y</td><td>Y</td><td>Y</td></tr><tr><td><span style="font-family:verdana,sans-serif; font-size:13px; line-height:19.5px">protect</span></td><td>Y</td><td>N</td><td>Y</td><td>Y</td></tr><tr><td><span style="font-family:verdana,sans-serif; font-size:13px; line-height:19.5px">private</span></td><td>N</td><td>N</td><td>N</td><td>Y</td></tr></tbody></table></p><p><span style="font-family:verdana,sans-serif"><span style="font-size:13px; line-height:19.5px">7. 什么是单例模式,写一个运用单例模式的类。</span></span></p><p><span style="font-family:verdana,sans-serif"><span style="font-size:13px; line-height:19.5px">8. 重载与重写的区别,分别描述各自的含义。</span></span></p><p><span style="font-family:verdana,sans-serif"><span style="font-size:13px; line-height:19.5px"><span style="white-space:pre"></span>答:重载是在一个类里面,方法名相同,返回值或形式参数不同,不同的两个方法。</span></span></p><p><span style="font-family:verdana,sans-serif"><span style="font-size:13px; line-height:19.5px"><span style="white-space:pre"></span>     重写时子类重写父类方法。方法名, 返回值,形式参数都相同得两个不同的方法。</span></span></p><p><span style="font-family:verdana,sans-serif"><span style="font-size:13px; line-height:19.5px">9. 简述TCP连接过程。</span></span></p><p><span style="font-family:verdana,sans-serif"><span style="font-size:13px; line-height:19.5px"><span style="white-space:pre"></span>答: TCP连接也称为三次握手:</span></span></p><p><span style="font-family:verdana,sans-serif"><span style="font-size:13px; line-height:19.5px"><span style="white-space:pre"></span>第一次握手: 客户机发送SYN=j一个请求连接数据包,客户机进入SYN_SENT的状态;</span></span></p><p><span style="font-family:verdana,sans-serif"><span style="font-size:13px; line-height:19.5px"><span style="white-space:pre"></span>第二次握手:服务器返回一个ACK=j + 1同意并确认与客户机的连接, 并发送SYN=K请求与客户机的连接, 服务器进入SYN_REC状态;</span></span></p><p><span style="font-family:verdana,sans-serif"><span style="font-size:13px; line-height:19.5px"><span style="white-space:pre"></span>第三次握手: 客户机返回一个ACK=K + 1同意并确认与服务器的连接。 之后就开始发送数据。 客户机与服务器进入 ESTABLISHED状态;</span></span></p><p><span style="font-family:verdana,sans-serif"><span style="font-size:13px; line-height:19.5px">10. 数列 1,1,2,3,5,8,13,...第n位数是多少?用递归算法实现(不限语言)。</span></span></p><p><span style="font-family:verdana,sans-serif"><span style="font-size:13px; line-height:19.5px"></span></span></p><pre name="code" class="java">package com.wupanhua.Test;

import java.util.Scanner;

public class Fibonacci {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Please enter number:");
int n = input.nextInt();
int sum = fibonacci(n);
System.out.println(sum);
input.close();
}

public static int fibonacci(int n) {
if (n == 1) {
return 1;
} else if (n == 2){
return 1;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}

}


11. 请列出常见的排序算法,并实现其中一种排序。

答:冒泡排序,快速排序,插孔
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: