面试题

1、编写一个程序,读取给定的文件,实现一棵二叉树,对于给定某个数值,找出这些数值对应的节点并且打印出二叉树查找的路径。
文件格式:<节点>,<数值>

2、实现一个Servlet要求读取客户端提交的二进制流数据,并将该数据写入到某个指定目录的文件中;
实现对该文件以流的方式读取下载操作;(即返回给客户端二进制文件流);
假设客户端为.net实现;

[b]问题补充:[/b]
第一题给个例子就好了,怎么根据文件实现二叉树啊?,查找路径是什么?

自己写了个简单的二分查找方法,你参考一下再改改:

private static int binarySearch(int x,int a[]){
int left=0,right=a.length-1,mid;
while(left<=right){
mid=(left+right)/2;
System.out.println("中间值索引:+mid);
if(a[mid]==x)
return mid;
if(a[mid]<x){
System.out.println("左值索引:+left);
left=mid+1;

    }else{
    System.out.println("右值索引:+right);
     right=mid-1;

    }
}

return -1;
}

private static int[] intRead(){
//利用BufferedReader方法,从文件中把数据读进来
}

public static void main(String[] args){
//读进来的数组进行排序
Arrays.sort(array);

int r = binarySort(x,array);

}

对于第一个问题,java库应该提供了快速查找的方法,你可以借用.
对于第二个问题,其实也很简单,你利用DataInputStream/DataoutputStream等二进制流操作的方法来操作,很简单的,在网上也可以找到很多类似的例子.
即使客户端是.net实现方式,你只是简单地将二进制数据返送回去,所以跟普通的java客户端没啥大的区别.

你只要把二分树的思想理解了,原来其实都是一样的,就是看你怎么实现了.下面的这个例子更详细:
http://blog.csdn.net/mybelove/archive/2007/04/14/1564722.aspx