发几个我最近面试遇到的题目1.
两个链表相交,有节点,确定节点【位置】。2.
一棵二叉树,已知两个节点,确定它们的最近公共父节点。
3.
从鼠标点击开始,一直到窗口处理函数,中间比较详细的流程,要细致到涉及到了哪些API,和消息队列的从属关系,等。
知道多少说多少,我基本忘得差不多了。4.
有两个数组,长度均为N,且都排好顺序【顺序方向一致,就是都是从小到大,或者都是从大到小】
例如
[1 2 3 4 6]
[0 5 7 8 9]
要找两个里面第N小的数字,这里就是4呗~要求代码~5.
防止内存泄露的办法,防止栈内存溢出的办法,防止堆内存溢出的办法。6.
其他的也不是记不住了,只是很难一句两句描述清楚。 。
就当散分了。
两个链表相交,有节点,确定节点【位置】。2.
一棵二叉树,已知两个节点,确定它们的最近公共父节点。
3.
从鼠标点击开始,一直到窗口处理函数,中间比较详细的流程,要细致到涉及到了哪些API,和消息队列的从属关系,等。
知道多少说多少,我基本忘得差不多了。4.
有两个数组,长度均为N,且都排好顺序【顺序方向一致,就是都是从小到大,或者都是从大到小】
例如
[1 2 3 4 6]
[0 5 7 8 9]
要找两个里面第N小的数字,这里就是4呗~要求代码~5.
防止内存泄露的办法,防止栈内存溢出的办法,防止堆内存溢出的办法。6.
其他的也不是记不住了,只是很难一句两句描述清楚。 。
就当散分了。
遍历两个链表的过程中记下其长度,
然后再处理并判断即可
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不会回收之,导致内存泄漏
栈和堆主要是要明白里面都放的什么东西
搬个小板凳看热闹
不错,与君共勉~
刚想起来
if(a[a.length-1]<=b[0]) return a[a.length-1];
这少个判断
a b是对称的
还要判断b
第五个一般在Java中大多数时候都是考虑资源泄漏问题,而内存泄漏,都是拿来主义,没多少人会刻意去处理,一般只要定义引用时注意一下作用域,尽可能晚的定义,减小作用域范围。如果是在C++版块,这个讨论起来的人就多了,毕竟得自己处理自己分配的内存。
用 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不用管理内存,栈的话就注意少用递归就可以了
如果这似乎java面试的话 我真的不打算跳了
同意被严重打击 可能因为我本身是做erp oa的
关注业务大于技术本身
j2ee对我来说就是实现客户需求的工具java之美在我的程序里 体现不出 惭愧
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 (应试)