发几个我最近面试遇到的题目1. 
两个链表相交,有节点,确定节点【位置】。2.
一棵二叉树,已知两个节点,确定它们的最近公共父节点。
3.
从鼠标点击开始,一直到窗口处理函数,中间比较详细的流程,要细致到涉及到了哪些API,和消息队列的从属关系,等。
知道多少说多少,我基本忘得差不多了。4.
有两个数组,长度均为N,且都排好顺序【顺序方向一致,就是都是从小到大,或者都是从大到小】
例如
[1 2 3 4 6]
[0 5 7 8 9]
要找两个里面第N小的数字,这里就是4呗~要求代码~5.
防止内存泄露的办法,防止栈内存溢出的办法,防止堆内存溢出的办法。6.
其他的也不是记不住了,只是很难一句两句描述清楚。 。
就当散分了。

解决方案 »

  1.   

    1.编程之美链表一章的扩展问题,
    遍历两个链表的过程中记下其长度,
    然后再处理并判断即可
    2.典型lca问题
    3.swing不懂,等待大牛
    4.从头开始挨个扫描两个数组即可
    o(n)
    类似于归并排序的思想
    发个测试代码,抛砖引玉之public static int find(int[]a,int[]b) {
    if(a[a.length-1]<=b[0]) return a[a.length-1];
    int result = 0;
    int i=0;int j=0;
    int count = 2;
    int tempA = a[0];int tempB = b[0];
    while(true) {
    if(i == a.length) return a[a.length-1];
    if(j == b.length) return b[a.length-1];
    if(count == a.length) {
    result =  Math.max(tempA, tempB);
    break;
    }
    if(a[i+1] < b[j+1]) {
    i++;
    tempA = a[i];
    count++;
    }else {
    j++;
    tempB = b[j];
    count++;
    }
    }
    return result;
    }
    5.思路不太清晰,
    典型的内存泄露情况:
    list中存放了一个对象的引用,
    现在把这个对象不用了,
    但是因为list中还有这个对象的引用,
    所以jvm不会回收之,导致内存泄漏
    栈和堆主要是要明白里面都放的什么东西 
    搬个小板凳看热闹
      

  2.   

    我很欣赏2楼的精神,虽然我在C++版和C#也发了同样的帖子,Java的回复是最少的,但是楼主的回复题目的数量确实最多的。
    不错,与君共勉~
      

  3.   

    JAVA应该不用考虑内存泄露的问题吧?
      

  4.   

    不敢当啊,在大牛这班门弄斧
    刚想起来
    if(a[a.length-1]<=b[0]) return a[a.length-1];
    这少个判断
    a b是对称的
    还要判断b
      

  5.   

    前四个都是简单的算法问题,这个在C++版喜欢的人特多,平均上来说,Java版的人算法上还是比C++版的弱不少。
    第五个一般在Java中大多数时候都是考虑资源泄漏问题,而内存泄漏,都是拿来主义,没多少人会刻意去处理,一般只要定义引用时注意一下作用域,尽可能晚的定义,减小作用域范围。如果是在C++版块,这个讨论起来的人就多了,毕竟得自己处理自己分配的内存。
      

  6.   

    1. 先得到2个链表的长度,假设分别为 M N,且 M > N
      用 2 个指针分别  从 M 那个链表的 M - N  + 1 位置 N 链表的 开头 开始一一比对
      当两个指针指向同一个地址即找到
    2.将数以 中序 编号
      如 :
                 6
            4         8
        2       5  7      9
    1       3
       连线没画
    这样就很容易知道2个节点的公共父节点
    如  (2, 7)  2 < 6 < 7 , 7 为所求
    再如 (3 , 5) 3 < 5 < 6 , 说明 (3,5)在 6 的左儿子部分,
    比较 3 < 4 < 5 , 4 为所求3.不懂
    4.双指针
    5.java不用管理内存,栈的话就注意少用递归就可以了  
      

  7.   


    如果这似乎java面试的话 我真的不打算跳了
    同意被严重打击 可能因为我本身是做erp oa的 
    关注业务大于技术本身
    j2ee对我来说就是实现客户需求的工具java之美在我的程序里 体现不出 惭愧
      

  8.   

    回楼上应该是微软的微软的大部分题目还是基础的,好好准备一年去的希望还是挺大的我研究了一下,把以下5本书研究透应该有9成把握去微软:
    1.Data structures Algrithms,and applications in C++ (数据结构)
    2.Introduction to Algorithms (算法)
    3.Computer system, a programer's perspective (系统)
    4.Advanced Compiler Design and Implementation (编译优化)
    5.什么编程之美XXXXX (应试)
      

  9.   

    第2题和第4题的方法不够好呀,呵呵!第2题如果子节点有指向父节点的引用,就同第一题是一样的了。如果没有就得O(n)了。第4题应该是Log(n)的,双指针是O(n)的。
      

  10.   

    同意8楼“java之美在我的程序里 体现不出 惭愧”