论坛首页 招聘求职论坛

迅雷亲历面经:笔试+上机+面试(完整JAVA面试题求解大讨论)

浏览 90213 次
该帖已经被评为精华帖
作者 正文
   发表时间:2009-11-30  
aniu2008 写道
迅雷面试回来,用了整整一下午(不知道怎么说了,其中等待时间都快2小时了),自己感觉笔试和上机还可以,但技术面谈这一关答得不太好,现在再次感觉互联网公司与一般软件公司的区别了,其中一点就是互联网应用在性能上要求很高,谈了一个小时大部分题目感觉都在谈论性能问题,自己在方面一直是弱项,汗啊:(

仔细回忆了一下整个面试过程的题目,记录下来,希望大家多多给点意见讨论下啊

一、笔试题:
A)JAVA基础多项选择题,比较简单,略

B)问答:
1)ajax原理、如何实现刷新数据及优点?
2)门面模式的解释、适用场合?
3)写6个linux常用命令?
4)SQL语句题,较简单

C)编程:
1)有三个线程ID分别是A、B、C,请有多线编程实现,在屏幕上循环打印10次ABCABC…
2)假如有字符串“6sabcsssfsfs33” ,用最有快速的方法去掉字符“ab3”,不能用java内置字符串方法(indeOf,substring,replaceAll等)?

二、上机题:
Java上机实现统计某一目录下每个文件中出现的字母个数、数字个数、空格个数及行数?

三、面试题:
1、说说JVM原理?内存泄露与溢出区别,何时产生内存泄露?
2、用java怎么实现有每天有1亿条记录的DB存储?mysql上亿记录数据量的数据库如何设计?
3、mysql支持事务吗?DB存储引擎有哪些?
4、mvc原理,mvc模式的优缺点,如果让你设计你会怎么改造MVC?
5、hibernate支持集群吗?如何实现集群?
6、tomcat 最多支持并发多少用户?
7、map原理,它是如何快速查找key的?map与set区别?
8、描术算法,如何有效合并两个文件:一个是1亿条的用户基本信息,另一个是用户每天看电影连续剧等的记录,5000万条。内存只有1G???
9、在1亿条用户记录里,如何快速查询统计出看了5个电影以上的用户?
10、Spring如何实现IOC与AOP的,说出实现原理?

期待大家的探讨,共同提高,多谢


问下楼主迅雷哪个部门需要用java啊?
0 请登录后投票
   发表时间:2009-12-01  
samwalt 写道
aniu2008 写道
迅雷面试回来,用了整整一下午(不知道怎么说了,其中等待时间都快2小时了),自己感觉笔试和上机还可以,但技术面谈这一关答得不太好,现在再次感觉互联网公司与一般软件公司的区别了,其中一点就是互联网应用在性能上要求很高,谈了一个小时大部分题目感觉都在谈论性能问题,自己在方面一直是弱项,汗啊:(

仔细回忆了一下整个面试过程的题目,记录下来,希望大家多多给点意见讨论下啊

一、笔试题:
A)JAVA基础多项选择题,比较简单,略

B)问答:
1)ajax原理、如何实现刷新数据及优点?
2)门面模式的解释、适用场合?
3)写6个linux常用命令?
4)SQL语句题,较简单

C)编程:
1)有三个线程ID分别是A、B、C,请有多线编程实现,在屏幕上循环打印10次ABCABC…
2)假如有字符串“6sabcsssfsfs33” ,用最有快速的方法去掉字符“ab3”,不能用java内置字符串方法(indeOf,substring,replaceAll等)?

二、上机题:
Java上机实现统计某一目录下每个文件中出现的字母个数、数字个数、空格个数及行数?

三、面试题:
1、说说JVM原理?内存泄露与溢出区别,何时产生内存泄露?
2、用java怎么实现有每天有1亿条记录的DB存储?mysql上亿记录数据量的数据库如何设计?
3、mysql支持事务吗?DB存储引擎有哪些?
4、mvc原理,mvc模式的优缺点,如果让你设计你会怎么改造MVC?
5、hibernate支持集群吗?如何实现集群?
6、tomcat 最多支持并发多少用户?
7、map原理,它是如何快速查找key的?map与set区别?
8、描术算法,如何有效合并两个文件:一个是1亿条的用户基本信息,另一个是用户每天看电影连续剧等的记录,5000万条。内存只有1G???
9、在1亿条用户记录里,如何快速查询统计出看了5个电影以上的用户?
10、Spring如何实现IOC与AOP的,说出实现原理?

期待大家的探讨,共同提高,多谢


问下楼主迅雷哪个部门需要用java啊?

也不知道啊,我一直没搞明白迅雷用java做什么,我感觉迅雷应该用java很少的,用c的应该很多
0 请登录后投票
   发表时间:2009-12-01  
aniu2008 写道
samwalt 写道
aniu2008 写道
迅雷面试回来,用了整整一下午(不知道怎么说了,其中等待时间都快2小时了),自己感觉笔试和上机还可以,但技术面谈这一关答得不太好,现在再次感觉互联网公司与一般软件公司的区别了,其中一点就是互联网应用在性能上要求很高,谈了一个小时大部分题目感觉都在谈论性能问题,自己在方面一直是弱项,汗啊:(

仔细回忆了一下整个面试过程的题目,记录下来,希望大家多多给点意见讨论下啊

一、笔试题:
A)JAVA基础多项选择题,比较简单,略

B)问答:
1)ajax原理、如何实现刷新数据及优点?
2)门面模式的解释、适用场合?
3)写6个linux常用命令?
4)SQL语句题,较简单

C)编程:
1)有三个线程ID分别是A、B、C,请有多线编程实现,在屏幕上循环打印10次ABCABC…
2)假如有字符串“6sabcsssfsfs33” ,用最有快速的方法去掉字符“ab3”,不能用java内置字符串方法(indeOf,substring,replaceAll等)?

二、上机题:
Java上机实现统计某一目录下每个文件中出现的字母个数、数字个数、空格个数及行数?

三、面试题:
1、说说JVM原理?内存泄露与溢出区别,何时产生内存泄露?
2、用java怎么实现有每天有1亿条记录的DB存储?mysql上亿记录数据量的数据库如何设计?
3、mysql支持事务吗?DB存储引擎有哪些?
4、mvc原理,mvc模式的优缺点,如果让你设计你会怎么改造MVC?
5、hibernate支持集群吗?如何实现集群?
6、tomcat 最多支持并发多少用户?
7、map原理,它是如何快速查找key的?map与set区别?
8、描术算法,如何有效合并两个文件:一个是1亿条的用户基本信息,另一个是用户每天看电影连续剧等的记录,5000万条。内存只有1G???
9、在1亿条用户记录里,如何快速查询统计出看了5个电影以上的用户?
10、Spring如何实现IOC与AOP的,说出实现原理?

期待大家的探讨,共同提高,多谢


问下楼主迅雷哪个部门需要用java啊?

也不知道啊,我一直没搞明白迅雷用java做什么,我感觉迅雷应该用java很少的,用c的应该很多


看着题目,像是后台服务,分析用户使用偏好什么的。
0 请登录后投票
   发表时间:2009-12-01  
题还是不错的啊,有人知道一亿条记录那个怎么解决吗?
0 请登录后投票
   发表时间:2009-12-01  
linyvlu 写道
		StringBuilder sb = new StringBuilder("6sabcsssfsfs33");
		sb.delete(2, 4);
		sb.delete(sb.length()-2, sb.length());


不错,返璞归真!
0 请登录后投票
   发表时间:2009-12-01   最后修改:2009-12-01
我提供一种方式,就是耗cpu多点。
public class DFAMap {
	private List<String> arr = new ArrayList<String>();
	private Node rootNode = new Node('R');
	
	private String content = "";
	
	private List<String> words = new ArrayList<String>();   
	private List<String> word = new ArrayList<String>();
	private int a = 0;
	
	public DFAMap() throws Exception {
		FileInputStream in = new FileInputStream(new File("c:\\name.txt"));
		BufferedReader br = new BufferedReader(new InputStreamReader(in));
		String inputLine;
		while ((inputLine = br.readLine()) != null) {
			arr.add(inputLine);
		}
		in.close();
		br.close();
		
		in = new FileInputStream(new File("c:\\story.txt"));
		br = new BufferedReader(new InputStreamReader(in));
		StringBuilder sb = new StringBuilder();
		while ((inputLine = br.readLine()) != null) {
			sb.append(inputLine.trim());
		}
		content = sb.toString();
		in.close();
		br.close();
	}
	
	private void searchWord() {
		char[] chars = content.toCharArray();
		Node node = rootNode;
		while(a<chars.length) {
			node = findNode(node,chars[a]);
			if(node == null) {
				node = rootNode;
				a = a - word.size();
				word.clear();
			} else if(node.flag == 1) {
				word.add(String.valueOf(chars[a]));
				StringBuffer sb = new StringBuffer();
				for(String str : word) {
					sb.append(str);
				}
				words.add(sb.toString());
				a = a - word.size() + 1;
				word.clear();
				node = rootNode;
			} else {
				word.add(String.valueOf(chars[a]));
			}
			a++;
		}
	}
	
	private void createTree() {
		for(String str : arr) {
			char[] chars = str.toCharArray();
			if(chars.length > 0)
				insertNode(rootNode, chars, 0);
		}
	}
	
	private void insertNode(Node node, char[] cs, int index) {
		Node n = findNode(node, cs[index]);
		if(n == null) {
			n = new Node(cs[index]);
			node.nodes.put(String.valueOf(n.c), n);
		}
		
		if(index == (cs.length-1))
			n.flag = 1;
			
		index++;
		if(index<cs.length)
			insertNode(n, cs, index);
	}
	
	private Node findNode(Node node, char c) {
		return node.nodes.get(String.valueOf(c));
	}
	
	public static void main(String[] args) throws Exception {
		DFAMap dfa = new DFAMap();
		dfa.createTree();
		long time = System.nanoTime();
		dfa.searchWord();
		System.out.println(System.nanoTime()-time);
		
		int count = 0;
		for(String word : dfa.words) {
			if("鏈卞厓鐠�".equals(word)) {
				++count;
			}
		}
		System.out.println("鏈卞厓鐠嬶細"+count);
	}
	
	
	private static class Node {
		public char c;
		public int flag; //1锛氳〃绀虹粓缁擄紝0锛氬欢缁�
		public Map<String,Node> nodes = new HashMap<String,Node>();
		
		public Node(char c) {
			this.c = c;
			this.flag = 0;
		}
		
		public Node(char c, int flag) {
			this.c = c;
			this.flag = flag;
		}
	}
}
0 请登录后投票
   发表时间:2009-12-01  
aniu2008 写道
diaodou 写道
C 2) 可以用这个简单方法。
上机题是一样的方法,开个256的数组,count[256],表示每个字母,数字等的出现次数。
class Remove{
 public static void main(String args[]) {
  String str="6sabcsssfsfs33;
    boolean removeChars[256] = {true};
    removeChars['a'] = false;
    removeChars['b'] = false;
    removeChars['3'] = false;
  StringBuffer sb = new StringBuffer();
    for (char ch: str) {
        if (!removeChars[ch]) sb.append(ch);
    }
    String result = sb.toString();
 }
}


高人啊,应该就是这个方法了

 

太强了 我看了好久才看懂  看来菜鸟和大牛区别就是不同……

0 请登录后投票
   发表时间:2009-12-01  
cranehovers 写道
aniu2008 写道
diaodou 写道
C 2) 可以用这个简单方法。
上机题是一样的方法,开个256的数组,count[256],表示每个字母,数字等的出现次数。
class Remove{
 public static void main(String args[]) {
  String str="6sabcsssfsfs33;
    boolean removeChars[256] = {true};
    removeChars['a'] = false;
    removeChars['b'] = false;
    removeChars['3'] = false;
  StringBuffer sb = new StringBuffer();
    for (char ch: str) {
        if (!removeChars[ch]) sb.append(ch);
    }
    String result = sb.toString();
 }
}


高人啊,应该就是这个方法了

 

太强了 我看了好久才看懂  看来菜鸟和大牛区别就是不同……


哇,这个方法,确实好,效率还高,真是另类高人:)
0 请登录后投票
   发表时间:2009-12-01  
不解


boolean removeChars[256] = {true}; 创建数组可以加数字吗

for (char ch: str) // 里面是数组名吧
0 请登录后投票
   发表时间:2009-12-02  
面试的什么职位啊?

工程师?
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics