读取txt文档中单词,并计算单词出现的次数(英文文档)

2013/6/6去杭州博克软件onsite interview。哥之前做足了准备,几乎把自身的毕生所学全部温习了,以为万事俱备了。

马的,下午14:00过去的时候,前台居然在发粽子,让我坐一下,等会儿HR会找人来面我。我在那里等了十来分钟。然后HR叫我过去,然后把我领到了一个小房间,给我端了杯水,叫我再坐一会,技术面试的人马上就来了。哥无聊在那里坐等看了会杂志,然后一个留了一小啜胡子的中年男子进来了(B,现在回想起来真的想问问他,你丫能力很强吗,哥也出个题目你丫,能在半个小时内做好吗,这个j家伙估计有33岁了)。哥心里做好了准备就等着有人来问我了。靠,他妈自我介绍了一下说,这次面试主要考编程技能。然后其他的啥都没问。介绍了一下大致情况之后,给我拿来一份题目。然后利用间隙的时间,跟哥用英文交流了一下。问了最近的项目情况,主要的日常工作内容,项目的开发环境。哥就用不是很流利的英文对答如流了。然后,说那就开始做那份材料。说看一下,然后把需要跟他讲一下。

其实这个考察内容并不是很难,就是读取一个txt文档到一个String字符串中,并打印出来,然后找出这个txt中出现了多少个word,重复的不算,并且计算出每个word出现的次数。可以上网。时间一个小时。

哥当时看到这个题目的时候,真的觉得是有点简单的。但是我居然没有计算出单词出现的次数。有点小紧张,但是还是很认真的在做了。。。

时间一分一秒过去,,,中间他妈的输入法还以一直双拼,哥想把它移除出输入法设置,JImmy大叔居然还不让,你丫还一直坐在我身边,你让我能全心投入到工作中吗。。。靠,他妈的哥做到3:15的时候,他居然说可以了。他看我用set来保存这些单词的时候,我不小心用了new Set,就说我java技术不行。我靠,你丫会不会看人哦。就因为这个就说java技术不扎实。靠,当时我一直还沉浸在为什么这么简单的问题都不能解答,而对自己的能力产生了严重的怀疑。丫的要是换成是现在,哥也出一道题目给你做下,首先你丫先把自己的拿到题目在20分钟内给我解决先,然后。。。还是等我想到出什么题目了,再去找他。哥不当面跟他对质真的心里很难受。。。Fuck 

/**
 * <br>
 * do what you want to do and never stop it.
 * <br>
 */
package org.luch.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

/**
 * @author Jack 2013-6-6 <br>
 */
public class pringWord {

	public static String filename = "src/test.txt";
	public static StringBuffer sb = null; 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		txt2String(filename);
		printSingleWord(sb.toString());
		try {
			wordCounter();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 计算单词的出现次数
	 * @throws FileNotFoundException
	 */
	public static void wordCounter() throws FileNotFoundException{
		BufferedReader br = null;
		try {
			br = new BufferedReader(new FileReader(new File(filename)));
			String inputLine = null;
			TreeMap<String, Integer> map = new TreeMap<String, Integer>();
			
			while((inputLine = br.readLine()) != null) {
				String[] words = inputLine.split("[ \n\t\r.,;:!?(){}]");
				for(int i = 0; i < words.length; i++) {
					String key = words[i].toLowerCase();
					if(key.length() > 0){
						if(map.get(key) == null){
							map.put(key, 1);
						} else{
							int times = map.get(key).intValue();
							times++;
							map.put(key, times);
						}
					}
				}
			}

			Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
			for(Map.Entry<String, Integer> entry: entrySet){
				System.out.println(entry.getKey() + "\t" + entry.getValue());
			}
	
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 打印出txt文档中出现的每一个单词(重复的只打印一遍)
	 * @param txt
	 */
	public static void printSingleWord(String txt) {
		String str;
		if(txt == null || txt.length()==0){
			return ;
		}
		str = txt.replaceAll(",", "");
		str = str.replace(".", "");
		String[] strs = str.split(" ");
		Set set = new HashSet();
		for(int i = 0; i < strs.length; i++) {
			set.add(strs[i]);
		}
		String temp = set.toString();
		temp = temp.substring(1, temp.length()-1);
		
		String[] tems = temp.split(",");
		for(int i = 0; i < tems.length; i++) {
			System.out.println(tems[i]);
		}
	}
	
	/**
	 * 把txt文档保存到String字符串中,并打印出来。
	 * @param filename
	 */
	public static void txt2String(String filename) {
		try {
			FileReader read = new FileReader(filename);
			BufferedReader br = new BufferedReader(read);
			String row;
			StringBuffer bf = new StringBuffer();
			while ((row = br.readLine()) != null) {
				bf.append(row);
			}
			sb = bf;
			System.out.println(bf.toString());
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

杭州博客软件面试流程:

查看简历-->HR通过查看简历来挑选面试的对象。

所以第一面是HR电话对你的面试,面试的内容往往都是英文的简单交流,简单阐述你的项目情况等等

第二面是:技术电面。往往是找个公司内部员工对你进行面试。这个就要看员工的具体背景,和他想了解你的一些背景,技术能力,知识面什么的。不过一般不外乎SSH,Ibatis,Java Core 。DataBase优化,设计模式等等。其实还是可以做一些准备的。

第三面:onsite interview。就是技术的一个现场面试。我没有想到会是项目开发。哈哈。。。。这块内容也还是可以准备的,因为不会要求做很难的东西,但是自己的平时还是要有积累的。



啦啦啦    。FUCK,
然后,自己继续努力啦。。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值