`
aniu2008
  • 浏览: 42711 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
迅雷面试回来,用了整整一下午(不知道怎么说了,其中等待时间都快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的,说出实现原理?

期待大家的探讨,共同提高,多谢
分享到:
评论
77 楼 xl10230 2009-12-07  
顶起啊··
76 楼 diaodou 2009-12-07  
jupiterpan 写道
piao16702155 写道
不解


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

for (char ch: str) // 里面是数组名吧


楼主估计在逗他们玩呢, String在JAVA里不能直接用作char数组~ 不能这么遍历~



唉,那个代码是随手写的,重要的是思想,我把调试好的代码贴一下吧:
public class Test {
	public static void main(String args[]) { 
		String str="6sabcsssfsfs33";
		boolean[] removeChars = new boolean[256];
		Arrays.fill(removeChars, false);
		removeChars['a'] = true;
		removeChars['b'] = true;
		removeChars['3'] = true;
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < str.length(); i++) {
			char ch = str.charAt(i);
		    if (!removeChars[ch]) sb.append(ch);
		}
		String result = sb.toString();
		System.out.println(result);
	} 
}
75 楼 jupiterpan 2009-12-07  
piao16702155 写道
不解


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

for (char ch: str) // 里面是数组名吧


楼主估计在逗他们玩呢, String在JAVA里不能直接用作char数组~ 不能这么遍历~
74 楼 595755330 2009-12-04  
hite 写道
linyvlu 写道
		StringBuilder sb = new StringBuilder("6sabcsssfsfs33");
		sb.delete(2, 4);
		sb.delete(sb.length()-2, sb.length());


不错,返璞归真!

这效率最快。
73 楼 595755330 2009-12-04  
能运行成功吗?
72 楼 dizdev 2009-12-03  
1:Ajax的优点! 
大家都知道就不多说!
2:门面模式
由于service是一层很薄弱的概念,当需求复杂到需要多个service协作并且牵扯到事物等策略时使用门面模式可以最大程度简化业务对象的复杂性!门面相当于是针对专门业务的客服小姐。
3:linux命令
随便写6个吧
4:SQL
PASS

1)有三个线程ID分别是A、B、C,请有多线编程实现,在屏幕上循环打印10次ABCABC…
1:线程中有锁 2:引入队列 3:wait(),notify()都可以实现
2)假如有字符串“6sabcsssfsfs33” ,用最有快速的方法去掉字符“ab3”,不能用java内置字符串方法(indeOf,substring,replaceAll等)?
看这个字符串的格式 我觉得希尔排序速度最快
3)、说说JVM原理?内存泄露与溢出区别,何时产生内存泄露?
不清楚。
4、用java怎么实现有每天有1亿条记录的DB存储?mysql上亿记录数据量的数据库如何设计?
把数据库分布,然后数据存放在分布表中。
5. mysql支持事务吗?DB存储引擎有哪些?
支持! 第二个没怎么使用过
6. mvc原理,mvc模式的优缺点,如果让你设计你会怎么改造MVC?
原理大家都知道,我觉得缺点是m的职责太弱了,c的职责太强了。需要重新划分。我觉得改造的话应该把M的职责合成到C中,然后重新定义C,M包含了所有页面的数据和逻辑处理,c则是专门的业务层面,里面有数据,业务和门面。
7.hibernate支持集群吗?如何实现集群?
配置。
8.tomcat 最多支持并发多少用户?
30~100
9、map原理,它是如何快速查找key的?map与set区别?
哈希算法! 重复对象和线程安全。
10.描术算法,如何有效合并两个文件:一个是1亿条的用户基本信息,另一个是用户每天看电影连续剧等的记录,5000万条。内存只有1G???
典型的数据压缩算法! 两个矩阵 用户矩阵 和 记录矩阵 去掉重复字段,去掉重复电影,然后矩阵相乘。
11.在1亿条用户记录里,如何快速查询统计出看了5个电影以上的用户?
短时间想不通!
12.Spring如何实现IOC与AOP的,说出实现原理?
Danamic Proxy!
71 楼 dizdev 2009-12-03  
aniu2008 写道
egmacross 写道
2)假如有字符串“6sabcsssfsfs33” ,用最有快速的方法去掉字符“ab3”,不能用java内置字符串方法(indeOf,substring,replaceAll等)?

这个不用内置的能有啥好方法吗?

楼上,这个问题我答得也不是很好,但我知道用正则表达式可以快速匹配,代码不知道怎么正则替换?另就是循环遍历,但效率低,呵呵

给你个正则查询的例子

import java.util.regex.*;

class Regex1{
 public static void main(String args[]) {
  String str="6sabcsssfsfs33;
  String regEx="ab3*";
  boolean result=Pattern.compile(regEx).matcher(str).find();
  System.out.println(result);
 }
}//ture


我觉得这个不算效率吧 使用希尔排序貌似是最快速的!
70 楼 晨星★~雨泪 2009-12-02  
<div class="quote_title">cranehovers 写道</div>
<div class="quote_div">
<div class="quote_title">aniu2008 写道</div>
<div class="quote_div">
<div class="quote_title">diaodou 写道</div>
<div class="quote_div">C 2) 可以用这个简单方法。<br>上机题是一样的方法,开个256的数组,count[256],表示每个字母,数字等的出现次数。<br>class Remove{ <br> public static void main(String args[]) { <br>  String str="6sabcsssfsfs33; <br>    boolean removeChars[256] = {true};<br>    removeChars['a'] = false;<br>    removeChars['b'] = false;<br>    removeChars['3'] = false;<br>  StringBuffer sb = new StringBuffer();<br>    for (char ch: str) {<br>        if (!removeChars[ch]) sb.append(ch);<br>    }<br>    String result = sb.toString();<br> } <br>}</div>
<br><br>高人啊,应该就是这个方法了<img src="/images/smiles/icon_idea.gif" alt="">
</div>
<p> </p>
<p>太强了 我看了好久才看懂  看来菜鸟和大牛区别就是不同……</p>
</div>
<p> </p>
<p>这个能运行吗?怎么我的运行不了?</p>
69 楼 zjhlht 2009-12-02  
面试的什么职位啊?

工程师?
68 楼 piao16702155 2009-12-01  
不解


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

for (char ch: str) // 里面是数组名吧
67 楼 aniu2008 2009-12-01  
<div class="quote_title">cranehovers 写道</div><div class="quote_div"><div class="quote_title">aniu2008 写道</div>
<div class="quote_div">
<div class="quote_title">diaodou 写道</div>
<div class="quote_div">C 2) 可以用这个简单方法。<br>上机题是一样的方法,开个256的数组,count[256],表示每个字母,数字等的出现次数。<br>class Remove{ <br> public static void main(String args[]) { <br>  String str="6sabcsssfsfs33; <br>    boolean removeChars[256] = {true};<br>    removeChars['a'] = false;<br>    removeChars['b'] = false;<br>    removeChars['3'] = false;<br>  StringBuffer sb = new StringBuffer();<br>    for (char ch: str) {<br>        if (!removeChars[ch]) sb.append(ch);<br>    }<br>    String result = sb.toString();<br> } <br>}</div>
<br><br>高人啊,应该就是这个方法了<img src="/images/smiles/icon_idea.gif" alt="">
</div>
<p> </p>
<p>太强了 我看了好久才看懂  看来菜鸟和大牛区别就是不同……</p></div><br/>哇,这个方法,确实好,效率还高,真是另类高人:)
66 楼 cranehovers 2009-12-01  
<div class="quote_title">aniu2008 写道</div>
<div class="quote_div">
<div class="quote_title">diaodou 写道</div>
<div class="quote_div">C 2) 可以用这个简单方法。<br>上机题是一样的方法,开个256的数组,count[256],表示每个字母,数字等的出现次数。<br>class Remove{ <br> public static void main(String args[]) { <br>  String str="6sabcsssfsfs33; <br>    boolean removeChars[256] = {true};<br>    removeChars['a'] = false;<br>    removeChars['b'] = false;<br>    removeChars['3'] = false;<br>  StringBuffer sb = new StringBuffer();<br>    for (char ch: str) {<br>        if (!removeChars[ch]) sb.append(ch);<br>    }<br>    String result = sb.toString();<br> } <br>}</div>
<br><br>高人啊,应该就是这个方法了<img src="/images/smiles/icon_idea.gif" alt="">
</div>
<p> </p>
<p>太强了 我看了好久才看懂  看来菜鸟和大牛区别就是不同……</p>
65 楼 melin 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;
		}
	}
}
64 楼 hite 2009-12-01  
linyvlu 写道
		StringBuilder sb = new StringBuilder("6sabcsssfsfs33");
		sb.delete(2, 4);
		sb.delete(sb.length()-2, sb.length());


不错,返璞归真!
63 楼 咖啡豆子 2009-12-01  
题还是不错的啊,有人知道一亿条记录那个怎么解决吗?
62 楼 jnduan 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的应该很多


看着题目,像是后台服务,分析用户使用偏好什么的。
61 楼 aniu2008 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的应该很多
60 楼 samwalt 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啊?
59 楼 xingqiliudehuanghun 2009-11-30  
还是第一次听说这个叫做KMP的算法,孤陋寡闻了。查了半天资料看的云里雾里的
,写资料的都喜欢整术语,生怕别人看懂。干脆不看了,自己去写。那位给拍拍砖
package com.saturday;

public class KMP {
	public static String myReplaceAll(
			String input,
			String replaced){
		
		//短路掉不可能匹配的情况
		if(replaced.equals("")
		 ||input.length()<replaced.length()){
			return input;
		}
		
		StringBuffer buf=new StringBuffer();
		char[] s=input.toCharArray();
		char[] r=replaced.toCharArray();		     
		
		int rLen=r.length;
		int matchCount;	
		
		for(int i=0,sLen=s.length;i<sLen;){			
			if(i<sLen-rLen){
				//检查匹配
				matchCount=0;				
				for(int j=0;j<rLen;j++){
					if(s[i+j]==r[j]){
						matchCount++;						
					}else{
						break;
					}
				}		
				//完全匹配
				if(matchCount==rLen){
					i+=rLen;
					continue;
				}				
				//部分匹配
				if(matchCount>0){
					for(int j=0;j<matchCount;j++){
						buf.append(s[i++]);
					}
					continue;
				}
			}			
			
			buf.append(s[i++]);
		}		
		
		return buf.toString();
	}
	
	
	public static void main(String[] args){
		String input="123 mfc mf fc mfdC mfmfc cmfc dd abc";
		String replaced="1234";
		
		System.out.println(
			myReplaceAll(input,replaced).equals(input.replaceAll(replaced,""))
		);
	}
}

58 楼 aniu2008 2009-11-30  
ruvuoai 写道
aniu2008 写道
pan_java 写道
8、描术算法,如何有效合并两个文件:一个是1亿条的用户基本信息,另一个是用户每天看电影连续剧等的记录,5000万条。内存只有1G???
9、在1亿条用户记录里,如何快速查询统计出看了5个电影以上的用户?

怎么处理????


是啊,俺也想知道,高手们讨论下这些性能问题吧:)

期待大牛解答!!

同样期待,为这些性能题郁闷很久了~!~

相关推荐

Global site tag (gtag.js) - Google Analytics