某外企面试题目。

Pre-requisites and assumptions

  • Programming language Java shall be used (jdk1.5 or 1.6).
  • Write comments in the program for explaining their functions.
  • The exercise should be completed in one day.
  • No GUI (Graphical User Interface) components shall be used.

Task

  • Two (2) servers shall read one text file each. (Server1 reads textfil1_lasse_solen_i_ogonen.txt and Server2 reads textfil2_lasse_varning_for_ras.txt)
  • One (1) client shall read the data from the two servers in parallel. As a suggestion the communication between server and client uses a socket.
  • The result shall be one (1) print out of the 5 most occurred words from the two texts with the number of occurrences.
  1. 服务器端读文件 就很简单BufferedReader读
    本来服务器就是多线程的

  2. 然后分别给每个server建立一个和客户端联系的Socket
    ServerSocket server = new ServerSocket(这个里面可以写通信的端口);
    Socket socket = server.accept(); // 实例化socket

PrintWriter writer = new PrintWriter(server.getOutputStream(), true);

之后用out.println向客户端写内容 //这里写的就是服务器从文本读出来的

客户端 一样要先new Socket 要new 2个,每个对应一个server
之后用BufferedReader读 socket接收过来服务器端输入的stream就可以

  1. 第2题不是用 BufferedReader读内容了么,readline之后,用StringTokenizer(String str, String delim) 读出每个单词,后面这个delim有点麻烦,因为如果你的文章包括了标点,括号,什么的,需要把单词从这些符号中提取出来 只后只要送到hashmap里面遍历,相同的单词就把个数加1, 最后,要么你送到TreeMap里面重构,输出前5个,要么你就自己按照单词的index排序,输出前5个。。。

谁能翻译下先。。。

要求:
使用jdk1.5或1.6
写注释
1天内完成
不用GUI

需求:
两个server各自读取文件,server1读取textfil1_lasse_solen_i_ogonen.txt,同理server2.

一个client从这两个服务器并行读取数据,建议使用socket通信。

输出结果为两个文本中出现频率最高的5个单词。

最后说错了,因为按照从小到大排列
TreeMap要输出最后一个

for(int i=0, i < 5; i ++) ) {

System.out.println (treeMap.get(treeMap.lastKey()));

然后treeMap.remove(treeMap.lastKey()); 要去掉频率最大那个
}