该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间: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啊? |
|
返回顶楼 | |
发表时间: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的应该很多 |
|
返回顶楼 | |
发表时间: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的应该很多 看着题目,像是后台服务,分析用户使用偏好什么的。 |
|
返回顶楼 | |
发表时间:2009-12-01
题还是不错的啊,有人知道一亿条记录那个怎么解决吗?
|
|
返回顶楼 | |
发表时间:2009-12-01
linyvlu 写道 StringBuilder sb = new StringBuilder("6sabcsssfsfs33"); sb.delete(2, 4); sb.delete(sb.length()-2, sb.length()); 不错,返璞归真! |
|
返回顶楼 | |
发表时间: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; } } } |
|
返回顶楼 | |
发表时间: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(); } } 高人啊,应该就是这个方法了
太强了 我看了好久才看懂 看来菜鸟和大牛区别就是不同…… |
|
返回顶楼 | |
发表时间: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(); } } 高人啊,应该就是这个方法了
太强了 我看了好久才看懂 看来菜鸟和大牛区别就是不同…… 哇,这个方法,确实好,效率还高,真是另类高人:) |
|
返回顶楼 | |
发表时间:2009-12-01
不解
boolean removeChars[256] = {true}; 创建数组可以加数字吗 for (char ch: str) // 里面是数组名吧 |
|
返回顶楼 | |
发表时间:2009-12-02
面试的什么职位啊?
工程师? |
|
返回顶楼 | |