.net老版主的面试,分享共勉
上周去一个公司面试,时候询问hr才知道面试我的人是原.net版版主sunmast,微软某年的Mvp,问的问题不变态,很普通,但是自己答的也不怎么样,拿出来和大家分享吧。
1.现在用.net哪个版本(这个问题就随便聊了下)
2.一个小应用程序,占的内存太大,你会怎么检查。
3.值内型和引用内型分别存哪?值内型要存进堆怎么整?
4.一个已经排好序的数组去掉重复数字,尽量快。
5. *
***
*****
***
*
一个循环打印出上面那种图(奇数行)
[解决办法]
呵呵!简单却有用的问题。
[解决办法]
问的还行。补补基础去
[解决办法]
基础题呵呵
[解决办法]
(3)答案呢?
[解决办法]
都是基础哦,应该好好看看的
[解决办法]
学习
[解决办法]
Sunmast(速马/MVP)!强人呢
[解决办法]
问题蛮简单的,很基础
[解决办法]
基础知识,得好好的补补
[解决办法]
能见到这些大侠即使面试失败了也值得!
[解决办法]
mark
[解决办法]
博彦 加班很厉害
[解决办法]
楼主面试成功了没,
随便问下,第2题答案?
[解决办法]
做个记号~~~回来再来
[解决办法]
[解决办法]
嗯,
问的不错,
答得也不错,
呵
[解决办法]
[解决办法]
3题的答案是什么啊?
[解决办法]
3.值内型和引用内型分别存哪?值内型要存进堆怎么整?
第三题就告诉了前半题的答案,值内型要存进堆怎么整?说明值类型存在栈中,总不能自己整自己吧
我也想知道第二题
[解决办法]
学习
[解决办法]
关心面试结果
[解决办法]
给出答案吧,也好学习学习。
[解决办法]
第二题不会。
谁知道答案。
[解决办法]
装箱
[解决办法]
1.现在用.net哪个版本(这个问题就随便聊了下) -- 我用2003/2005
2.一个小应用程序,占的内存太大,你会怎么检查。 -- 先查缓存是否被滥用
3.值内型和引用内型分别存哪?值内型要存进堆怎么整? -- 自己都回答了,值分配堆,引用分配栈
4.一个已经排好序的数组去掉重复数字,尽量快。 -- 冒泡?
[解决办法]
[解决办法]
等高手的答案,31楼的答案无视。
[解决办法]
[解决办法]
值存储在堆栈上。引用储存在堆上,储存在堆栈上的是一个指向其在堆里对方位置的"引用"。
[解决办法]
学习......
[解决办法]
原.net版版主sunmast该出来顶上........
[解决办法]
31楼也太业余了?问你用.net那个版本,你回答VS版本干什么?
[解决办法]
mark
[解决办法]
等待高手中
[解决办法]
mark。。。。
[解决办法]
修改下 31, 33 楼答案哈
《值内型和引用内型分别存哪?值内型要存进堆怎么整? -- ,值类型存储到栈,引用类型存储到堆; 要把值类型存储到堆可将值类型装箱成引用类型》
[解决办法]
4.一个已经排好序的数组去掉重复数字,尽量快。
-----------
直接用Items[i]去和Items[i+1]比较 相等就remove掉 如何?
[解决办法]
to:Error_Code
你的回答可能是对方最不想见到的回答.
你这样造成几乎是n*n的复杂度
实际这个问题是可以在O(n)内解决的.
不过问问题的人问的是一个"已经排好序"的数组去掉重复数字
我感觉他是想到了二分查找/二叉树之类的算法,会产生O(Log n)复杂度
实际上不管是否排好序都可以达到更快的O(n)
只要数组范围在比较小的范围,都可以牺牲空间,换取时间,用类似桶排序的办法.
如果超过这个范围,用哈希表也是基本可以达到O(n)
所以我推测速马算法有研究的盲区,那就是哈希!~~~
[解决办法]
期待,答案!
[解决办法]
路过...学习.
[解决办法]
c,cpp下一般这么做。c#下应该返出个list什么的可能看着更顺点眼。修改一下就可以了。
总之结果会存在sortedArray的前半段长度为len的地方。
public static void RemvoeRedundant(int[] sortedArray, ref int len)
{
int cnt = 0;
for (int i = 1; i < len; i++) {
if (sortedArray[i] != sortedArray[i - 1]) {
sortedArray[++cnt] = sortedArray[i];
}
}
len = cnt + 1;
}
不敢保证这时最快的!只敢说这不是最慢的。
[解决办法]
另,小程序可以占大内存这没什么好奇怪的。比如你load一个大的xml文件。比较难缠的是当你用类似sos监察内存占用时,有许多间隙的小的free内存。这倒是需要优化的。
另外就是内存泄漏。.net也会泄漏内存的,而且还不好解决。
[解决办法]
[解决办法]
关注。。。。。
[解决办法]
4.一个已经排好序的数组去掉重复数字,尽量快。
- C# code
public int [] c4(int[] data){ List<int> r = new List<int>(); for (int i = 1; i < len; i++) { if (data[i-1] != data[i]) { r.Add(data[i]); } } return r.ToArray();}
------解决方案--------------------
关注。
[解决办法]
Mark!
[解决办法]
- C# code
public int [] c4(int[] data){ List<int> r = new List<int>(); for (int i = 1; i < len; i++) { if (data[i-1] != data[i]) { r.Add(data[i]); } } return r.ToArray();}
[解决办法]
@_@
[解决办法]
学习啦
[解决办法]
mark
[解决办法]
[解决办法]
学习
[解决办法]
[解决办法]
[解决办法]
int data[];
if(data.Length < 2)
return data;
int pos = 0;
for(int i = 1; i < data.Length; ++i)
{
int temp = data[i];
if(temp != data[pos])
{
data[pos++] = temp;
}
}
int[] ret = new int[pos + 1];
for(int i = 0; i < ret.Length; ++i)
{
ret[i] = data[i];
}
data = ret;
[解决办法]
[解决办法]
特别想知道2题的答案,高手出来啊
[解决办法]
希望楼主面试成功
[解决办法]
晓习
[解决办法]
还没见到第2题的答案!高手啊!
[解决办法]
mark
[解决办法]
UP
[解决办法]
祝楼主面视成功!
[解决办法]
我铁定是不及格了,需要去必须基础知识了。。
[解决办法]
个人觉得第二题是个聊天题
主要是要考虑到DEBUG思路,大的循环中就很容易出现这个问题
------解决方案--------------------
个人觉得第二题是个聊天题
主要是要考虑到DEBUG思路,大的循环中就很容易出现这个问题
[解决办法]
路过...学习.
[解决办法]
mark
[解决办法]
1.现在用.net哪个版本(这个问题就随便聊了下) ,1.1,2.0,3.5
3.值内型和引用内型分别存哪?值内型要存进堆怎么整? 装箱.
4.一个已经排好序的数组去掉重复数字,尽量快。 第N个与第N+1个比较,如果一样,去掉N+1,再与"N+2"个比较,就是与下一个N+1个比较.
[解决办法]
看看
[解决办法]
...学习.
[解决办法]
[解决办法]
第四题用指针做...扫描一次就可以了!
[解决办法]
MARK
[解决办法]
期待答案 顶!!!!!!
[解决办法]
顶一下!
[解决办法]
mark
[解决办法]
2.一个小应用程序,占的内存太大,你会怎么检查。
这是一个很广的命题, 小应用程序是指什么,JS,EXE,CLR EXE,....
根据题意;我们假设是一个小的.NET程序。
再看有没有提供源码,有 DUBUG跟踪,找出托管资源有没有及时释放,有没有关系IO资源,...
否 看看能不能反汇编成源码, 代码可能混淆了,继续以上
如果都不能,使用进程跟踪工具,看看它是否再进行IO,SOCKET等资源操作。
如果都没有,假设程序内部做了一些死循环,多余的操作,错误的操作
..........
这个没有完整答案 考官可能就是想看看你的想法新颖的(也许想吸收你的想法呢)
[解决办法]
mark
[解决办法]
学习