`

迅雷亲历面经:笔试+上机+面试(完整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的,说出实现原理?

期待大家的探讨,共同提高,多谢
分享到:
评论
117 楼 tianzizhi 2010-11-21  
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的,说出实现原理?

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


线程的一个写法:
public class ThreadTest implements Runnable{

	private String id;

	public ThreadTest(String id) {
		this.id = id;
	}

	public static void main(String[] arg){
		
		ExecutorService es = Executors.newSingleThreadExecutor();
		
		for(int i=0;i<10;i++){
			es.submit(new ThreadTest("A"));
			es.submit(new ThreadTest("B"));
			es.submit(new ThreadTest("C"));
		}
		es.shutdown();
	}

	public void run() {
		// TODO Auto-generated method stub
		System.out.print(this.id);
	}
}
116 楼 luobin23628 2010-11-20  
Pattern.compile("[ab3]").matcher(s).replaceAll("");
115 楼 zlandjj 2010-10-12  
用比较垃圾的办法写出来了
public class TetMain {
public static void main(String[] args) {
String str = "6sabcsssfsfs33";
char[] strCharArray = str.toCharArray();
char[] filtedCharArray = new char[strCharArray.length];
int retIndex = 0;
for (int i = 0; i < strCharArray.length; i++) {
if ((strCharArray[i] != 'a') && (strCharArray[i] != 'b')
&& (strCharArray[i] != 'c')) {
filtedCharArray[retIndex] = strCharArray[i];
retIndex++;
}

}
char[] resultCharArry = new char[retIndex];
for (int i = 0; i < resultCharArry.length; i++) {
resultCharArry[i] = filtedCharArray[i];
}
String resultStr = new String(resultCharArry);
System.out.println(resultStr);
}

}
114 楼 thinkingame 2010-09-26  
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的,说出实现原理?

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

呵呵,挺好的题目,正合我的胃口。
第6,9题不太明确,应该属于数据库查询优化的题。又或者通过程序或者SQL过程来做。直接进行数据查询的话内存估计不够。
113 楼 ww362034710 2010-09-25  
tomcat 记得是150个吧

112 楼 sun_cyj 2010-09-25  
public static void main(String[] args) {
Worker a = new Worker("A");
Worker b = new Worker("B");
Worker c = new Worker("C");
a.setCanRun(true);
a.setNext(b);
b.setNext(c);
c.setNext(a);
a.start();
b.start();
c.start();
}
111 楼 sun_cyj 2010-09-25  

class Worker extends Thread{  
	       
	 
		 Worker(String name)
		 {
			 setName(name);
		 }
	     int count = 10;
	     
	     int runTime = 0;
	     
	     private boolean canRun = false;
	     
	     private Worker next;

		public Worker getNext() {
			return next;
		}

		public void setNext(Worker next) {
			this.next = next;
		}

		public Worker(Worker next) {
			super();
			this.next = next;
		}

		public void run() {
			
			while(runTime <= count)
			{
				if(isCanRun())
				{
					System.out.println(getName());
					this.canRun = false;
					if(next != null)
						next.setCanRun(true);
					runTime ++;
				}
			}
			
		}

		public   boolean isCanRun() {
			return canRun;
		}

		public synchronized void setCanRun(boolean canRun) {
			this.canRun = canRun;
		}  
	     
	 }  
110 楼 ddrdongdong 2010-09-24  
支持一下,好东西不会过时。
109 楼 xcg9593 2010-07-01  
高手过招。有些题目还是非常头疼的。
108 楼 wxb_love 2010-06-13  
egmacross 写道
2)假如有字符串“6sabcsssfsfs33” ,用最有快速的方法去掉字符“ab3”,不能用java内置字符串方法(indeOf,substring,replaceAll等)?

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

这么写可以吧。
public static void ab3(){
    String str = "6sab3csssfsab3fs33";
    String str1 = "ab3";
    String str2  = "";
   
    String[] st = str.split("ab3");
    for(int i = 0 ; i < st.length ; i ++){
    str2 = str2 + st[i];
    }
    System.out.print(str2);
    }
107 楼 jsczxy2 2010-06-06  
不知道工资有多少 个人觉得如果都很回答上来的话 起码工资能到10K+的水平
106 楼 adriny 2010-06-05  
egmacross 写道
2)假如有字符串“6sabcsssfsfs33” ,用最有快速的方法去掉字符“ab3”,不能用java内置字符串方法(indeOf,substring,replaceAll等)?

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


我觉得这个题考查的是对JDK的熟悉程度  Jdk提供了一些方法的
105 楼 ayiui4566 2010-06-05  
2)假如有字符串“6sabcsssfsfs33” ,用最有快速的方法去掉字符“ab3”,不能用java内置字符串方法(indeOf,substring,replaceAll等)?
	private static void m(){
		 String str = "6sab3ab3sssfab3sfs33ab3d";
		 char[] strr=str.toCharArray();
		 StringBuffer sb = new StringBuffer(); 
		 for (int i=0;i<str.length();i++) { 
			 if(strr[i]=='a'){
				 if(strr[i+1]=='b'){
					 if(strr[i+2]=='3'){
						 i=i+2;
					 }else{
						 sb.append(strr[i]);
					 } 
				 }else{
					 sb.append(strr[i]);
				 }
			 }else{
				 sb.append(strr[i]);
			 }
			 System.out.println(i);
		 } 
		 System.out.println(sb.toString());
	}
104 楼 ayiui4566 2010-06-05  
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();
 }
}


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


写成这样如何:
String str="6sabcssaafsbbfs33";
		StringBuffer sb=new StringBuffer();
		for(char ch:str.toCharArray()){
			if(ch!='a'&&ch!='b'&&ch!='3'){
				sb.append(ch);
			}
		}
		System.out.println(sb.toString());
103 楼 w156445045 2010-06-04  
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的,说出实现原理?

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


工资有多少啊?
貌似这些笔试题目都很注重基础啊.
有点难度.
102 楼 melin 2010-06-04  
有三个线程ID分别是A、B、C,请有多线编程实现,在屏幕上循环打印10次ABCABC…
package com.starit.portal.hessian;

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Semaphore;

public class TestOderThread {  
 
    private static Semaphore semaphore1 = new Semaphore(0);  
    private static Semaphore semaphore2 = new Semaphore(0);  
    public Thread t1;  
    public Thread t2;  
    public Thread t3;
    private static CountDownLatch latch;
 
    public TestOderThread() {  
        t1 = new Thread() {  
            public void run() {  
                try {  
                    System.out.print("A");
                    semaphore1.release();
                    latch.countDown();
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
            }  
        };  
        t2 = new Thread() {  
            public void run() { 
            try {
semaphore1.acquire();
System.out.print("B"); 
semaphore2.release();
latch.countDown();
} catch (InterruptedException e) {
e.printStackTrace();
}
            }  
        };  
        t3 = new Thread() {  
            public void run() {  
                try {  
                semaphore2.acquire();
                    System.out.print("C");  
                    latch.countDown();
                } catch (InterruptedException e) {  
                    e.printStackTrace();  
                }  
            }  
        };  
 
    }  
 
    public void run() {
        t1.start();  
        t2.start();  
        t3.start();  
    }  
 
    public static void main(String args[]) throws Exception {  
        TestOderThread t = new TestOderThread();  
        for (int i = 0; i < 10; i++) {  
            t = new TestOderThread();  
            latch = new CountDownLatch(3);
            t.run();  
            latch.await();
        }  
    }  
}  
101 楼 lz12366 2010-06-03  
这些题真的很有水平啊!!一些题还真做不了
100 楼 lovesl 2010-06-03  
 
<pre name="code" class="java">package runnable.com.cn;

import thread.com.cn.Intent;

public class FirstRunner implements Runnable {

private Intent i;

public FirstRunner(Intent i) {
this.i = i;
}

@Override
public void run() {
Intent temp = this.getI();
synchronized (temp) {
while (!temp.isA()) {
try {
temp.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.print("A");
temp.setA(false);
temp.setB(true);
temp.setC(false);
temp.notifyAll();
}
}

public synchronized Intent getI() {
return i;
}

public void setI(Intent i) {
this.i = i;
}

}
</pre>
<p> </p>
<p> </p>
<pre name="code" class="java">package runnable.com.cn;

import thread.com.cn.Intent;

public class SecondRunner implements Runnable {

private Intent i;

public SecondRunner(Intent i) {
this.i = i;
}

@Override
public void run() {
Intent temp = this.getI();
synchronized (temp) {
while (!temp.isB()) {
try {
temp.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.print("B");
temp.setA(false);
temp.setB(false);
temp.setC(true);
temp.notifyAll();
}
}

public synchronized Intent getI() {
return i;
}

public void setI(Intent i) {
this.i = i;
}

}
</pre>
 
<pre name="code" class="java">package runnable.com.cn;

import thread.com.cn.Intent;

public class ThirdRunner implements Runnable {
private Intent i;

public ThirdRunner(Intent i) {
this.i = i;
}

@Override
public void run() {
Intent temp = this.getI();
synchronized (temp) {
while (!temp.isC()) {
try {
temp.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.print("C");
temp.setA(true);
temp.setB(false);
temp.setC(false);
temp.notifyAll();
}
}

public synchronized Intent getI() {
return i;
}

public void setI(Intent i) {
this.i = i;
}

}
</pre>
 
<pre name="code" class="java">package thread.com.cn;

public class Intent {

private volatile  boolean a;

private volatile boolean b;

private volatile boolean c;


public boolean isA() {
return a;
}

public void setA(boolean a) {
this.a = a;
}

public boolean isB() {
return b;
}

public void setB(boolean b) {
this.b = b;
}

public boolean isC() {
return c;
}

public void setC(boolean c) {
this.c = c;
}
}
</pre>
 
<pre name="code" class="java">package thread.com.cn;

import runnable.com.cn.*;

public class MainThread {

public static void main(String[] args) {

Intent intent = new Intent();
intent.setA(true);
intent.setB(false);
intent.setC(false);

for (int i = 0; i &lt; 10; i++) {
Thread firstthread = new Thread(new FirstRunner(intent));
Thread secondtthread = new Thread(new SecondRunner(intent));
Thread thirdthread = new Thread(new ThirdRunner(intent));

thirdthread.start();
firstthread.start();
secondtthread.start();
}
}
}
</pre>
 
99 楼 ziyu_1 2010-03-30  
linyvlu 写道
lantb1986 写道
linyvlu 写道
		StringBuilder sb = new StringBuilder("6sabcsssfsfs33");
		sb.delete(2, 4);
		sb.delete(sb.length()-2, sb.length());




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

人家的问题你都想太少了

这是个比较拼人品的答案,如果拼对了可能让人对你有深刻的印象,如果拼错了。。。。换一家吧。
这也是个非常直接的答案,如果只限制在这一题内,这个答案肯定没错,而且算是很高效的。很多时候没必要让算法多通用,通用的算法未必都高效。很多时候能让我们快速直接解决实际问题的方法才是最省成本的


这个是亮点
98 楼 ziyu_1 2010-03-30  
5、hibernate支持集群吗?如何实现集群?

hibernate 怎么还有集群的概念

相关推荐

Global site tag (gtag.js) - Google Analytics