`
aniu2008
  • 浏览: 42708 次
  • 性别: 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的,说出实现原理?

期待大家的探讨,共同提高,多谢
分享到:
评论
37 楼 xl10230 2009-11-30  
reilost 写道
dajian 写道
xl10230 写道
reilost 写道
直接用正则[^a|b|3]....然后就得到不含ab3,这3个字符的字符串了..额..这是不是也不合格-.-因为使用了内置的正则api

能不能写出来给大家看看啊···



前面有例子了吧,但好像使用了内置的了

是啊-.-所以不合格,哈
    String regx="[^a|b|3]";
    String temp="6sabcsssfsfs33";
    Pattern p=Pattern.compile(regx);
    Matcher m=p.matcher(temp);
    if(m.find())
         System.out.print(m.group());




  if 应该换成while
36 楼 linyvlu 2009-11-30  
引用
7、map原理,它是如何快速查找key的?map与set区别?

map只是一个包含key,value对的表,在java库定义里就是一个接口,现在最常用的是HashMap以及TreeMap两种实现,两者实现原理以及如何快速查找key的方式完全不一样。而且并不排除还有其他的实现。
不知道这考题是想让笔试的人尽量列出所有可能还是想让笔试的人看出问题本身的错误,亦或者。。。。。
35 楼 reilost 2009-11-30  
dajian 写道
xl10230 写道
reilost 写道
直接用正则[^a|b|3]....然后就得到不含ab3,这3个字符的字符串了..额..这是不是也不合格-.-因为使用了内置的正则api

能不能写出来给大家看看啊···



前面有例子了吧,但好像使用了内置的了

是啊-.-所以不合格,哈
    String regx="[^a|b|3]";
    String temp="6sabcsssfsfs33";
    Pattern p=Pattern.compile(regx);
    Matcher m=p.matcher(temp);
    if(m.find())
         System.out.print(m.group());

34 楼 dajian 2009-11-30  
xl10230 写道
reilost 写道
直接用正则[^a|b|3]....然后就得到不含ab3,这3个字符的字符串了..额..这是不是也不合格-.-因为使用了内置的正则api

能不能写出来给大家看看啊···



前面有例子了吧,但好像使用了内置的了
33 楼 pangyq 2009-11-30  
直接拒绝笔试确实比较牛。。。。
32 楼 xl10230 2009-11-30  
reilost 写道
直接用正则[^a|b|3]....然后就得到不含ab3,这3个字符的字符串了..额..这是不是也不合格-.-因为使用了内置的正则api

能不能写出来给大家看看啊···
31 楼 putonyuer 2009-11-30  
Laynepeng 写道
毕业生吗?现在我基本上在电话联络时候就说明,我不参加笔试,笔试已经完全不行了。。。



太牛叉了
30 楼 reilost 2009-11-30  
直接用正则[^a|b|3]....然后就得到不含ab3,这3个字符的字符串了..额..这是不是也不合格-.-因为使用了内置的正则api
29 楼 szcjlssx 2009-11-30  
aniu2008 写道
lonelybug 写道
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



我很奇怪,用Java但是不能用内置的方法实现,那干什么还用Java语言呢!?

我觉得现在国内面世的时候,不是为了挑选更好的人才,而是想尽办法如何为难大家!


一语中的,其实JAVA的强大就体现在API上,但这道题的思路相反:(

另外,告诉你一个迅雷2010招聘海报上的题目:
2009的2009次方,所得数各位数字求和,结果继续求和,直到剩下一位数字,需要几次求和运算??

这道题还要求用JS做,JS的幂运算Math.pow计算这么大的数会返回Infinity,所以要解决必须自己将数字当成字符串,然后自己去一步步实现,虽然代码也不是很复杂,但不知道迅雷这道题有几个面试通过的,即使通过的又能怎样?
看看迅雷的首页的HTML,CSS,JS,我没感到写这代码的人多牛,而且JS看上去很低级,CSS还出了大堆错,能用JS算出2009的2009次方的人呢?迅雷又不会在首页上放个科学计算器!即使要计算这么大的数,客户端也会卡死了,相对而言,我会将表达式传回服务器端,用服务器端语言(如PHP,有高精度数学函数,实在不行还可以用C再写个扩展)去计算再返回结果,而JS的强大正体现在这种用途上
截取迅雷首页一个JS文件中一段:
//在prototype上加了一个方法还可以,可用不着再用另一个函数啊
String.prototype.LTrim = function(){return LTrim(this);} 
function LTrim(str) 
{ 
var i; 
for(i=0;i<str.length;i++) 
{ 
if(str.charAt(i)!=" "&&str.charAt(i)!=" ")break; 
} 
str=str.substring(i,str.length); 
return str; 
}



//这个完全可以用散列表来替代,可它连switch语句都不想用,难道if else语句效率比用散列表高吗?
  if (g_restype == 'game') {
		url = url + "&restype=1" ;
  }
  else if (g_restype == 'soft') {
		url = url + "&restype=2" ;
  }
  else if (g_restype == 'book') {
		url = url + "&restype=3" ;
  }
  else if (g_restype == 'shouji') {
		url = url + "&restype=6" ;
  }
  else if (g_restype == 'web')
  {
	  //url = url + "&id=1" ;
  }

28 楼 aniu2008 2009-11-30  
lonelybug 写道
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



我很奇怪,用Java但是不能用内置的方法实现,那干什么还用Java语言呢!?

我觉得现在国内面世的时候,不是为了挑选更好的人才,而是想尽办法如何为难大家!


一语中的,其实JAVA的强大就体现在API上,但这道题的思路相反:(

另外,告诉你一个迅雷2010招聘海报上的题目:
2009的2009次方,所得数各位数字求和,结果继续求和,直到剩下一位数字,需要几次求和运算??
27 楼 aniu2008 2009-11-30  
wfwkiss 写道
public class GoodCode{
	//假如有字符串“6sabcsssfsfs33” ,
	//用最有快速的方法去掉字符“ab3”,不能用java内置字符串方法(indeOf,substring,replaceAll等)? 
	
	public void isGood(){
		String str = "6sabcsssfsfs33";
		char c1 ='a';
		char c2 ='b';
		char c3 ='3';
		
		char[] c = str.toCharArray();
		StringBuilder sl = new StringBuilder();
		for(char temp:c){
			if(temp != c1 && temp !=c2 && temp !=c3)
				sl.append(temp);
		}
		
		System.out.println(sl.toString());
		
	}
	
	public static void main(String[] args){
		GoodCode g = new GoodCode();
		g.isGood();
	}
}



这是种好方法,呵呵 
26 楼 lonelybug 2009-11-30  
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



我很奇怪,用Java但是不能用内置的方法实现,那干什么还用Java语言呢!?

我觉得现在国内面世的时候,不是为了挑选更好的人才,而是想尽办法如何为难大家!
25 楼 wfwkiss 2009-11-30  
public class GoodCode{
	//假如有字符串“6sabcsssfsfs33” ,
	//用最有快速的方法去掉字符“ab3”,不能用java内置字符串方法(indeOf,substring,replaceAll等)? 
	
	public void isGood(){
		String str = "6sabcsssfsfs33";
		char c1 ='a';
		char c2 ='b';
		char c3 ='3';
		
		char[] c = str.toCharArray();
		StringBuilder sl = new StringBuilder();
		for(char temp:c){
			if(temp != c1 && temp !=c2 && temp !=c3)
				sl.append(temp);
		}
		
		System.out.println(sl.toString());
		
	}
	
	public static void main(String[] args){
		GoodCode g = new GoodCode();
		g.isGood();
	}
}

24 楼 aniu2008 2009-11-30  
给大家推荐一篇实现AOP原理的文章:
Spring从菜鸟到高手(一)实现AOP的基本原理
http://tonyaction.blog.51cto.com/227462/42039
23 楼 liji0307 2009-11-30  
aniu2008 写道
linkobe 写道
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();
 }
}



错了吧,楼主的意思是干掉 'ab3'这种连续的字符,不是一个个干掉吧,不然太简单了。

如果要干掉'ab3'连续字符,用kmp模式匹配就可以了吧~~



是非连续字符的

简单了解了一下KMP算法,但这个有点太复杂了吧,http://lemonmilk.blog.51cto.com/499577/198209

利用正则表达式进行分组,然后在重新组装,会快些吧。
22 楼 aniu2008 2009-11-30  
Laynepeng 写道
aniu2008 写道
Laynepeng 写道
毕业生吗?现在我基本上在电话联络时候就说明,我不参加笔试,笔试已经完全不行了。。。

汗,工作几年了,只不过没互联网公司经验!你是毕业生吧??


我也不是毕业生了,老了。。。

就像上面那个KMP,很多年前考高程的时候是能简单写出来的;现在再写,那就肯定要Google出来拿来改改了。。

呵呵,笔试是他们公司的规则,都要过这关了,你真强,直接拒笔试,:)
21 楼 Laynepeng 2009-11-30  
aniu2008 写道
Laynepeng 写道
毕业生吗?现在我基本上在电话联络时候就说明,我不参加笔试,笔试已经完全不行了。。。

汗,工作几年了,只不过没互联网公司经验!你是毕业生吧??


我也不是毕业生了,老了。。。

就像上面那个KMP,很多年前考高程的时候是能简单写出来的;现在再写,那就肯定要Google出来拿来改改了。。
20 楼 case0079 2009-11-29  
如果包含汉字的话,造这么大一个布尔集合未免太浪费空间了。
19 楼 aniu2008 2009-11-29  
case0079 写道
确实是HASH速度快。
只是我一般不自觉的就认为字符串就是包含汉字在内的。

呵呵,那有区别吗?
18 楼 case0079 2009-11-29  
确实是HASH速度快。
只是我一般不自觉的就认为字符串就是包含汉字在内的。

相关推荐

Global site tag (gtag.js) - Google Analytics