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

期待大家的探讨,共同提高,多谢
分享到:
评论
57 楼 ruvuoai 2009-11-30  
aniu2008 写道
pan_java 写道
8、描术算法,如何有效合并两个文件:一个是1亿条的用户基本信息,另一个是用户每天看电影连续剧等的记录,5000万条。内存只有1G???
9、在1亿条用户记录里,如何快速查询统计出看了5个电影以上的用户?

怎么处理????


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

期待大牛解答!!
56 楼 runshine 2009-11-30  
congdepeng 写道
2)假如有字符串“6sabcsssfsfs33” ,用最(有)快速的方法去掉字符“a”,“b”,“3”(字符串“ab3”),不能用java内置字符串方法(indeOf,substring,replaceAll等)?
---------------------------------
关于这类题目,有些浮躁的程序员很是不屑,觉得既然java提供了(indeOf,substring,replaceAll等),为什么不能用呢,这不是刻意为难人嘛。其实这类人完全想错了,像这类的需求(笔试需求),就不应该用基于String对象的方法,就应该将“字符串”转化为“字符数组”来运算,因为算法还是基于基本类型+数组才是最快的。大家如果感兴趣可以看一下Collections.sort(XX),不管你传什么类型的集合的XX给它,它都会转化为数组来运算。既然是考算法,那么请你抓住关键点,转化为基本类型+数组来运算吧。

所以,有人已经给出了答案的关键
char[] originalCharArray= "6sabcsssfsfs33".toCharArray();

如果我的理解不当,欢迎斧正。


根本就是这种题无聊...
不用java内置字符串方法,toCharArray()难道不是java内置字符串方法?
那只能自己按照JDK源码toCharArray()方法的形式写一个转换方法,用System.arraycopy了

这个还好,更有不让使用java提供的方法的...我真怀疑是那些出题的对着抄,结果把题目抄错了的
苍天啊,不用java提供的方法,怎么把字符串转换成字符数组,以后还怎么进行啊
难不成再像System.arraycopy那样写个native方法不成?
55 楼 aniu2008 2009-11-30  
pan_java 写道
8、描术算法,如何有效合并两个文件:一个是1亿条的用户基本信息,另一个是用户每天看电影连续剧等的记录,5000万条。内存只有1G???
9、在1亿条用户记录里,如何快速查询统计出看了5个电影以上的用户?

怎么处理????


是啊,俺也想知道,高手们讨论下这些性能问题吧:)
54 楼 rplees 2009-11-30  
linyvlu 写道
		StringBuilder sb = new StringBuilder("6sabcsssfsfs33");
		sb.delete(2, 4);
		sb.delete(sb.length()-2, sb.length());

此人为牛人也,佩服。
53 楼 congdepeng 2009-11-30  
2)假如有字符串“6sabcsssfsfs33” ,用最(有)快速的方法去掉字符“a”,“b”,“3”(字符串“ab3”),不能用java内置字符串方法(indeOf,substring,replaceAll等)?
---------------------------------
关于这类题目,有些浮躁的程序员很是不屑,觉得既然java提供了(indeOf,substring,replaceAll等),为什么不能用呢,这不是刻意为难人嘛。其实这类人完全想错了,像这类的需求(笔试需求),就不应该用基于String对象的方法,就应该将“字符串”转化为“字符数组”来运算,因为算法还是基于基本类型+数组才是最快的。大家如果感兴趣可以看一下Collections.sort(XX),不管你传什么类型的集合的XX给它,它都会转化为数组来运算。既然是考算法,那么请你抓住关键点,转化为基本类型+数组来运算吧。

所以,有人已经给出了答案的关键
char[] originalCharArray= "6sabcsssfsfs33".toCharArray();

如果我的理解不当,欢迎斧正。
52 楼 fhjxp 2009-11-30  
egmacross 写道
2)假如有字符串“6sabcsssfsfs33” ,用最有快速的方法去掉字符“ab3”,不能用java内置字符串方法(indeOf,substring,replaceAll等)?

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

public static main(String[] args){
  System.out.print("6scsssfsfs");
}

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

怎么处理????
50 楼 niveko 2009-11-30  
2)假如有字符串“6sabcsssfsfs33” ,用最有快速的方法去掉字符“ab3”,不能用java内置字符串方法(indeOf,substring,replaceAll等)?

public class ReplaceChar {

	public static void main(String[] args) {
		String target = "ab3";
		String content = "rfwab3teab3ab3ab3ab3ab3tesabte";
		char[] replace = target.toCharArray();
		char[] data = content.toCharArray();
		char[] result = new char[data.length];
		int size = 0;
		for (int i = 0; i < data.length; i++) {
			if (data[i] == replace[0]) {
				boolean isMatch = true;
				for (int j = 1; j < replace.length; j++) {
					if (data[i + j] != replace[j]) {
						isMatch = false;
						break;
					}
				}
				if (isMatch) {
					i += replace.length - 1;
				} else {
					result[size++] = data[i];
				}
			} else {
				result[size++] = data[i];
			}
		}
		String str = new String(result, 0, size);
		System.out.println(str);
	}
}
49 楼 xl10230 2009-11-30  
lucky16 写道
egmacross 写道
2)假如有字符串“6sabcsssfsfs33” ,用最有快速的方法去掉字符“ab3”,不能用java内置字符串方法(indeOf,substring,replaceAll等)?

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

同问~~~~
有人回答一下吗?


  楼上有回答,你自己看啊··
48 楼 lucky16 2009-11-30  
egmacross 写道
2)假如有字符串“6sabcsssfsfs33” ,用最有快速的方法去掉字符“ab3”,不能用java内置字符串方法(indeOf,substring,replaceAll等)?

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

同问~~~~
有人回答一下吗?
47 楼 linyvlu 2009-11-30  
mooninday 写道
不知道循环打印ABCABC那题怎解呀?
请LZ谈谈吧

class Worker implements Runnable{
	
	static int count = 0;
	static Object lock = new Object();
	
	int index;
	int pCount;
	
	public Worker(int index){
		this.index = index;
	}
	
	public void run() {
		synchronized (lock) {
			for (;;) {
				if(count%3==index){
					System.out.println(Thread.currentThread().getName());
					count++;
					pCount++;
					lock.notifyAll();
					if(pCount==10)
						break;
				}else{
					try {
						lock.wait();
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		}
	}
}

		new Thread(new Worker(0),"A").start();
		new Thread(new Worker(1),"B").start();
		new Thread(new Worker(2),"C").start();

应该有更简单的解法,暂时没想到。
不过我觉得在实际中貌似很难有这种需求。按道理来说,只会让一个工作分成3个部分,让3个线程去做,然后再把结果汇总。这样只需要使用CyclicBarrier(3, Runnable barrierAction),然后在barrierAction中按一定的顺序将所有结果按顺序输出就行了。
46 楼 dieslrae 2009-11-30  
egmacross 写道
2)假如有字符串“6sabcsssfsfs33” ,用最有快速的方法去掉字符“ab3”,不能用java内置字符串方法(indeOf,substring,replaceAll等)?

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


转换成byte[]再for咯
45 楼 linyvlu 2009-11-30  
lantb1986 写道
linyvlu 写道
		StringBuilder sb = new StringBuilder("6sabcsssfsfs33");
		sb.delete(2, 4);
		sb.delete(sb.length()-2, sb.length());




绝对的高手,,,,这也太简单了吧   

人家的问题你都想太少了

这是个比较拼人品的答案,如果拼对了可能让人对你有深刻的印象,如果拼错了。。。。换一家吧。
这也是个非常直接的答案,如果只限制在这一题内,这个答案肯定没错,而且算是很高效的。很多时候没必要让算法多通用,通用的算法未必都高效。很多时候能让我们快速直接解决实际问题的方法才是最省成本的
44 楼 mooninday 2009-11-30  
不知道循环打印ABCABC那题怎解呀?
请LZ谈谈吧
43 楼 lantb1986 2009-11-30  
linyvlu 写道
		StringBuilder sb = new StringBuilder("6sabcsssfsfs33");
		sb.delete(2, 4);
		sb.delete(sb.length()-2, sb.length());




绝对的高手,,,,这也太简单了吧   

人家的问题你都想太少了
42 楼 linyvlu 2009-11-30  
		StringBuilder sb = new StringBuilder("6sabcsssfsfs33");
		sb.delete(2, 4);
		sb.delete(sb.length()-2, sb.length());
41 楼 giginet 2009-11-30  
一般拒绝笔试的很多都是技术比较牛但理论基础比较差的,很多工作久的人都会有这种感觉。毕竟实际动手能力最重要,虽然理论也是必不可少的。

另外,想想一把年纪还要参加笔试,不能不说是技术人员的悲哀~~~想想都很窝火的,但又很无可奈何。
40 楼 bachelor007 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

使用正则表达式的代码可以这样:
public static void main(String[] args) {
	String str="6sabcsssfsfs33"; 
	Pattern pattern = Pattern.compile("a?b?3?");
	Matcher matcher = pattern.matcher(str); 
	System.out.println(matcher.replaceAll("")); 
}
39 楼 chenlinping 2009-11-30  
好多需要用正则解决的问题,看来正则还真是挺重要的。
38 楼 reilost 2009-11-30  
xl10230 写道

  if 应该换成while

对哈~直接随手写的,嘿嘿

相关推荐

Global site tag (gtag.js) - Google Analytics