这段时间校招的高峰期,参加了各种笔试。。感觉做多了题目好多都一样。在这个贴里贴一下我最近做过的一些笔试题,可能不全,或者说得有误的地方,毕竟题目是全凭映像记下来的。当然不是今天一天的咯。
1,TreeMap,HashMap,hashtable key和value的区别(是key和value的区别,不是他们的区别)。2,解释内部类与匿名内部类!3,XML JSON区别4,NoSQL是什么?5,解释 Ant,Maven,AOP,DI,BI,REST。------------------------------------------------------------
2013年10月20日 今天新浪Java系统工程师考试的几个题
6,Linux线程通信的方法又哪些?原理是啥?
7,动态语言像java,js存在内存泄露么?原理是什么?(可能描述不准)
8,有四条记录,两条重复的,如何去除重复记录在数据库表中。
    (这个题特别求解)
    1   a
    2   a
    3   b
    4   b
如何删掉重复数据只留下1a,3b 或者2a,4b。9,用java 实现遍历树的广度优先。
10,用java实现重复字符串剔除,但顺序不变。
11,有一个数组,有一个数x,是否存在数组中两个数之和等于x。
-------------------------------------------------------------
12 JVM加载class文件的机制还有各种算法题。算法是我的硬伤,上次酷派考的题就是5道算法,卷子一发下来就像交卷了。。
这段时间在猛补算法,从最简单的二分法开始,对了上次考了一道 列出C盘test目录下的所有文件(这个知道要用递归,但是也忘记怎么做了) 算法不熟真是硬伤啊题目少,分数高。。各位还在学校的同学,好好补习一下算法和数据结构吧,笔试时真心有用Java笔试题

解决方案 »

  1.   

    做多了就感觉各个公司的笔试题都那么大同小异。。
    第四题我还真不会,
    第五题 Ant,DI,BI,REST。不懂。
    第七题很有意思,我不确定,感觉不会存在,因为内容已经被java封装好了。我们并不是直接的去使用内存地址。。
      

  2.   

    第七题貌似在某为的面试题当中出现过……我记得好像是可以出现这种情况,好像是循环引用吧?要不然就是使用完了这个对象的引用就再也不用这个对象了,具体记不得了。。
    http://www.cnblogs.com/qq78292959/archive/2011/07/25/2116123.html这篇文章讲的内存泄漏还挺好的。
      

  3.   

    对了上次考了一道 列出C盘test目录下的所有文件
    这个不造轮子,用dos命令
    dir /s/b c: >> c:\cross\files.txt
      

  4.   

    LZ,第八题可以用Java实现吗?
    先取出,然后存入HashTable(把字母的那列作为K,数字作为V)……
    第五题 DI就是MVC当中的IoC吧?
    另外,同意LZ说法,算法和数据结构实在硬伤……
      

  5.   

    NoSQL回来查了一下,是非关系型数据库。。
    第五题的BI,REST没有听过,其他的有两个是Spring的东西,Ant ,Maven听说过,没用过,也不知道是啥。
    第七题我是回答不存在,但是可能是由Java引起的泄露,如io流不关闭。实际是Java调用C语言的API,而C不能自己释放内存,所以可能引起泄露。。
    其它题太多和数据结构有关了。
    当然还有各种选择题就没有列出来了。。
      

  6.   

    这个题要求是程序设计。用Java写。我记得是用递归实现,但具体操作忘记了。。
      

  7.   

    第八题是要求写SQL语句,不是用java。。
    第10题我想不出算法,就写了个把字符串一个个取出然后存到一个LinkedHashSet中,这样就自动帮我有序并且取出重复了多么蛋疼的回答啊。其实它应该是要考知不知道LinkedHashSet的实现原理吧。。
    DI和AOP这两个我还是了解的
      

  8.   

    随意拿出10枚,其中包含正面的各位数N
    剩余的包含正面的个数为10-N
    把那10枚反过来,那么包含正面的个数为10-N。
    相等了。
      

  9.   

    随意拿出10枚,其中包含正面的各位数N
    剩余的包含正面的个数为10-N
    把那10枚反过来,那么包含正面的个数为10-N。
    相等了。
    好吧 原来是这样的。题目也确实没说要5个正面向上。。
    我以为一定要每堆都是5个正面向上,纠结了好久。。
      

  10.   

    这个题要求是程序设计。用Java写。我记得是用递归实现,但具体操作忘记了。。其实就是操作树,节点是directory,child为文件,list出来即可。
      

  11.   

    8,有四条记录,两条重复的,如何去除重复记录在数据库表中。
        (这个题特别求解)
        1   a
        2   a
        3   b
        4   b
    如何删掉重复数据只留下1a,3b 或者2a,4b。select min/*max亦可*/(不重复字段) from table group by 所有重复字段这个就是把每个重复的数据保留了一份delete from table where 不重复字段 not in
    ( select min/*max亦可*/(不重复字段) from table group by 所有重复字段)
      

  12.   

    NoSQL回来查了一下,是非关系型数据库。。
    第五题的BI,REST没有听过,其他的有两个是Spring的东西,Ant ,Maven听说过,没用过,也不知道是啥。
    第七题我是回答不存在,但是可能是由Java引起的泄露,如io流不关闭。实际是Java调用C语言的API,而C不能自己释放内存,所以可能引起泄露。。
    其它题太多和数据结构有关了。
    当然还有各种选择题就没有列出来了。。bi 是商业智能,类似大数据挖掘。REST是RESTful系统级别的API设计模式
    Ant是打包工具,Maven是依赖包管理工具
    Java有可能引起泄露的,比如你一直持有大对象,不释放,久而久之就会造成可用内存越来越少,当然java里不像c++里内存泄露那么简单,C++里一个野指针就会泄露,java还是有可能的,纯粹看写程序的人
      

  13.   

    NoSQL回来查了一下,是非关系型数据库。。
    第五题的BI,REST没有听过,其他的有两个是Spring的东西,Ant ,Maven听说过,没用过,也不知道是啥。
    第七题我是回答不存在,但是可能是由Java引起的泄露,如io流不关闭。实际是Java调用C语言的API,而C不能自己释放内存,所以可能引起泄露。。
    其它题太多和数据结构有关了。
    当然还有各种选择题就没有列出来了。。Java调用C的API 造成的泄漏根本就不能算是java的泄漏。正确的答案是 使用静态容器,然后只add 没有remove
      

  14.   

    第七题  是存在内存泄露的!   《Effective java》这本书里也明确说了!
    假如一个数组里面存放的是对象的引用,你可以向数组里删除和添加元素!  
    当你删除元素的时候只是做了 Arrays[size--]  而没有执行Arrays[size] = null的话
    java垃圾回收机制是不会回收你“删除”的对象  因为它的引用并没有置空..
    这种情况下你想想  是不是内存就泄露了?
      

  15.   

    NoSQL回来查了一下,是非关系型数据库。。
    第五题的BI,REST没有听过,其他的有两个是Spring的东西,Ant ,Maven听说过,没用过,也不知道是啥。
    第七题我是回答不存在,但是可能是由Java引起的泄露,如io流不关闭。实际是Java调用C语言的API,而C不能自己释放内存,所以可能引起泄露。。
    其它题太多和数据结构有关了。
    当然还有各种选择题就没有列出来了。。bi 是商业智能,类似大数据挖掘。REST是RESTful系统级别的API设计模式
    Ant是打包工具,Maven是依赖包管理工具
    Java有可能引起泄露的,比如你一直持有大对象,不释放,久而久之就会造成可用内存越来越少,当然java里不像c++里内存泄露那么简单,C++里一个野指针就会泄露,java还是有可能的,纯粹看写程序的人
    学习了
    您懂得好多哈~有些概念还真没听说过。。
      

  16.   

    NoSQL回来查了一下,是非关系型数据库。。
    第五题的BI,REST没有听过,其他的有两个是Spring的东西,Ant ,Maven听说过,没用过,也不知道是啥。
    第七题我是回答不存在,但是可能是由Java引起的泄露,如io流不关闭。实际是Java调用C语言的API,而C不能自己释放内存,所以可能引起泄露。。
    其它题太多和数据结构有关了。
    当然还有各种选择题就没有列出来了。。Java调用C的API 造成的泄漏根本就不能算是java的泄漏。正确的答案是 使用静态容器,然后只add 没有remove
    原来是这样。 我的说法也只是网上看来的,感觉也说的有道理,但是并不知道到底是如何实现的。。非常感谢了~
      

  17.   

    昨天没有回复成功,CSDN说不能连续回复三次,蛋疼了。。
    您说的我有了解,也在李刚的疯狂Java一书中看到过,不过考试的时候忘记回答了。。非常感谢您的点醒。。
      

  18.   

    tableName:T
    id  name
    1    a
    2    b
    3    a
    4    b
    delete T where name in (select name from T group by id having count(name)>1)第四题
      

  19.   

    11,有一个数组,有一个数x,是否存在数组中两个数之和等于x。
    static boolean isExistedSum(int num, int[] arr) {
    HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
    for (int i : arr) {
    if (!map.containsKey(i)) {
    map.put(i, 1);
    } else {
    map.put(i, map.get(i) + 1);
    }
    }
    for (int i : arr) {
    int value = num - i;
    if (map.containsKey(value)) {
    if (num != 2 * value)
    return true;
    return map.get(value) == 2;
    }
    }
    return false;
    }
      

  20.   


    最后一个判断条件写错了,应该是>=2
    static boolean isExistedSum(int num, int[] arr) {
    HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
    for (int i : arr) {
    if (!map.containsKey(i)) {
    map.put(i, 1);
    } else {
    map.put(i, map.get(i) + 1);
    }
    }
    for (int i : arr) {
    int value = num - i;
    if (map.containsKey(value)) {
    if (num != 2 * value)
    return true;
    return map.get(value) >= 2;
    }
    }
    return false;
    }
      

  21.   

    java当然有内存泄露了,给你们个内存溢出的代码看看。如果没有抛出OutOfMemoryError,则调小你的jvm内存。String s = "ssssssssss";
    for (int i = 0; i < 10; i++) {
    s += s;
    }String[] sb = new String[10000]; 
    for (int i = 0; i < 10000; i++) {
    s = s + i;        //这里是(1),下面没注释的是(2),注释(1)运行(2)与注释(2)运行(1)
            //正常理解最终sb数组里应该是一样的,但。。自己运行看吧。
    //String b= String.valueOf(i);        //(2)
    String b = null;
    if(i<10)
    b = s.substring(s.length()-1);
    else if(i<100)
    b = s.substring(s.length()-2);
    else if(i<1000)
    b = s.substring(s.length()-3);
    else if(i<10000)
    b = s.substring(s.length()-4);
    else
    throw new RuntimeException();
    sb[i]=b;
    }你们说为什么?