java面试题讲解[2]

1、  编程题:写一个Singleton出来-------------核心就是构造方法的私有化

  

package com.test.demo;
public class Singleton {
	private static final Singleton sin=new Singleton();
	private Singleton(){  //将构造方法私有化
	}
	public static Singleton getInstance(){
		return sin;
	}
}

 

Java中有Runtime类、Class类都属于单例设计。

2、  编写一段代码,实现在控制台输出一组数字后,排序后在控制台输出。

假设数字中间使用“”进行分割,既然是排序,则可以使用集合保持,使用TreeSet保存。

 

package com.test.demo;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class Demo {
	public static void main(String[] args) throws Exception{
		BufferedReader buf=new BufferedReader(
			new InputStreamReader(System.in));
		System.out.print("请输入一组数据,中间使用空格分隔:");
		String str=buf.readLine();
		Set<Integer> set=new TreeSet<Integer>();
		String s[]=str.split(" ");//进行拆分
		for(String x : s) {
			set.add(Integer.parseInt(x)); //加入数据
		}
		System.out.print("排列之后的结果是:");
		Iterator<Integer> iter=set.iterator();
		while(iter.hasNext()){
			System.out.print(iter.next()+"、");
		}
	}
}

 

以上的操作中,因为所有的数据都已经假设是正确的数字,但是时间中有可能是字符串。

§   第一种方法:允许有字符串,但是将所有的字符串忽略

§   第二种方法:不允许有字符串,如果出现了字符串,则程序不再向下继续进行。

为程序改善功能:

package com.test.demo;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class Demo {
	public static void main(String[] args) throws Exception{
		BufferedReader buf=new BufferedReader(
			new InputStreamReader(System.in));
		System.out.print("请输入一组数据,中间使用空格分隔:");
		String str=buf.readLine();
		Set<Integer> set=new TreeSet<Integer>();
		String s[]=str.split(" ");//进行拆分
		for(String x : s) {
			if(x.matches("\\d+")){
				set.add(Integer.parseInt(x));
			}
			//
		}
		System.out.print("排列之后的结果是:");
		Iterator<Integer> iter=set.iterator();
		while(iter.hasNext()){
			System.out.print(iter.next()+"、");
		}
	}
}

 

3、  列出某文件夹下的所有文件。

典型的递归调用。

package com.test.demo;
import java.io.File;
public class ListFiles {
	public static void main(String[] args) {
		File file=new File("D:"+File.separator+"doc");
		fun(file);
	}
	public static void fun(File file){
		if(file.isDirectory()){
			File f[]=file.listFiles();
			if(f!=null){
				for(int x=0; x<f.length; x++){
					fun(f[x]);
				}
			}
		}else{
			System.out.print(file);
		}
	}
}

 

4、  Char型变量中能不能存储一个中文汉字?为什么?

可以存放,因为使用的是unicode编码

5、  多线程有几种实现方法,都是什么?同步有多种实现方法,都是什么?

两种实现方法,继承Thread类,实现Runnable接口

l  Thread类是Runnable接口的子类

l  使用Runnable接口可以实现资源共享的目的

l  所有线程操作都必须通过Thread类的start()方法启动

两种实现同步的方法

l  同步代码块:Synchronized(this){}

l  同步方法

6、  Floatfloat f=3.4是否正确?

不正确,因为默认情况下3.4double类型的数据

7、  StringStringbuffer的区别?

String不可修改,Stringbuffer允许修改

8、  Class.forName的作用?为什么要用?

Class.forName属于向容器之中加载程序,例如:之前讲解的JDBC的使用曾经使用此语句

9、  Intinteger有什么区别?

Int是基本数据类型,integer是包装类

JDK1.5之后,可以实现自动装箱及拆箱的操作

10、  用最有效率的方法算出28等于几?

就是使用移位操作:2<<3

11、  请说出类集框架的完整结构。

   类集框架最大的接口:CollectionMapIteratorEnumeration

   Collection:存放单值

List:允许有重复内容                                                                                     

      Arraylist:异步处理,新的操作类,非线程安全

      Vector:同步处理,旧的操作类,线程安全,支持Enumeration输出

Set:不允许有重复内容,靠HashCode()equals ()进行重复的验证

     HashCode:无序存放

     ThreeSet:有序存放,按Comparable排序

Map:存放一对值

     HashMap:新的类,异步处理,非线程安全,允许有空值。

     Hashtable:旧的类,同步处理,非线程安全,不允许有空值。

Iterator:迭代输出,依靠Collection接口中的iterator方法输出,是新的输出标准

Enumeration:旧的输出操作。

12、  是否可以继承String

不允许,因为使用了final声明。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值