my reply

 bool TestArray1(int []a)
{
 bool bFlag=false;
 int iLen=a.Length;
 if (iLen>1)
 {
  int []Temp=new int[iLen];
  for(int i=0;i<iLen;i++)
  {
   Temp[a[i]]++;
   if (1!=Temp[a[i]])
   {
    bFlag=true;
    return bFlag;   
   } 
  }
 
 }
 return bFlag;   
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
bool  TestArray2(int []a)
{
 bool bFlag=false;
 int iLen=a.Length;
 if (iLen>1)
 {
  System.Array.Sort(a);
  for(int i=0;i<iLen-1;i++) 
  {
   if (a[i]==a[i+1])
   {
    bFlag=true;
    return bFlag;
   }
  }
 }
 return bFlag;   
}

//+++++++++++++++++++++++++++++++++++++++++++++++++++++
bool TestArray3(int []a)
{
 bool bFlag=false;
 int iLen=a.Length;
 if (iLen>1)
 {
  for(int i=0;i<iLen;i++)
  {
   for(int j=i+1;j<iLen;j++)
   {
    if (a[i]==a[j])
    {
     bFlag=true;
     return bFlag;
    }
   }
  }
 }
 return bFlag;
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++

 

 phone:

1.单链表中检查是否有循环(cycle)存在。
2.从源地址拷贝n个字符到目标地址。(一定要拷贝n个,注意地址越界)
3.偶的research问题。

on-site:
1.给定一个二叉树的一个node,编程返回中序遍历的下一个node。如果最后一个,返回
null。
2.rotated array,找到rotation的位置。
3.从1,2,...n,利用随机函数编程返回一个permutation.保证这个permutation确实是随机的且所有permutation几率均等。(pearl's)
4.用最少comparison 找出n个数中的最大和最小值(CLRS经典问题).
5.k个sorted array,total in size of n, 设计算法merge成一个sorted array,复杂度
6.数组arr有n个0,某个程序能够随机访问某一位置,若为0,则设置为1;若为1,不做
任何事情。问,这个程序把所有的0改成1的时间复杂度(期望值)。(访问+设置 可看
成元操作)
7.8.9.10:research基础问题。ML,IR,DM。。。。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

问题(用英文) you are given an array of integers containing only 0s and 1s. you have to place all the 0s in even position and 1s in odd position and if suppose no. of 0s exceed no. of 1s or vice versa then keep them untouched. Do that in ONE PASS and WITHOUT taking EXTRA MEMORY.

input array:
{0 1 1 0 1 0 1 0 1 1 1 0 0 1 0 1 1 }
output array:
{0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 }


int arrangebinary(int * a, int n)
{
int pos =-1;
for(int i=0;i<n;i++)
{
if(i%2 == a[i] && pos == i-1)
{
pos++;
}
else
{
if(i!=pos+1 && a[pos+1]!=a[i])
{
swap(a[pos+1], a[i]);
pos+=2;
}
}
}
return 1;
}

 

i=-2,j=-1
while(1)
{
do{i+=2;}while(A[i]==0);
do{j+=2;}while(A[j]==1);
if(i>n||j>n) break;
swap(A[i],A[j]);
}

 

++++++++++++++++++++++++++++++++++++++++++++++++++++

一个数组中存放N个整数,如何找到出现次数最多的一个数(即众数),要求用O(N)的复杂度,而且不能用Hashing(内存和时间都是O(N))。

1. Hashtable是什么,工作原理,如何实现,复杂度

2. 你的程序出现了Bug,但是当你打印输出进行进行调试却发现Bug消失,分析可能的情况

3. Multi Thread是什么,工作原理,如何实现,注意事项,死锁是什么,怎么消除死锁。

4. 多个process如何互相communicate,如果是网络环境,有什么方法

5. Design pattern中的Singleton和Factory用于什么情况,如何实现,注意什么。

6. 1G内存,需要存储url string,如何才能尽可能存的多。

++++++++++++++++++++++++++++++++++++++++++++++=

算法题一:Given 1 GB memory, input a file which contians 4 billion integers, output one integer that is not in the file. What if you have only 10 MB memory? 其实不太难,但我开始时被这些数字搞晕了,加上紧张,一直没想到正道上。就败在这个题目上了。

算法题二:There are 100 hundred sorted arrays, and each of them contains 100 numbers. Give an algorithm to merge them into a single sorted array, using only one temporary array in the middle steps.

编程题:Input an integer array of size n and an integer k (k<=n), output all subsets of size k. 算法不难,但需要写一个递归函数再加一个wrap函数,代码量不太小。他本来期望我在电话里读代码给他,但是第一题我花了太多时间,来不及了,于是改成email给他。

1. Use bitvector. If only 10 MB ram, use multiple passes.
Old classics.

2. Merge sort: Maintain 100 pointers to each array and insert only min each time to target array. In worst case it takes about 10^6 comparisons.
Any better ideas?

3. I just hate programming over phone. Livemeeting is much better.
Agree with you that it is difficult to finish them in 45 min.
Just bad luck.

 

+++++++++++++++++++++++++++++++++++++++

1.链表和数组的区别在哪里?

2.编写实现链表排序的一种算法。说明为什么你会选择用这样的方法?

3.编写实现数组排序的一种算法。说明为什么你会选择用这样的方法?

4.编写能直接实现strstr()函数功能的代码。

5.编写反转字符串的程序,要求优化速度、优化空间。

6.在链表里如何发现循环链接?

7.给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里。

8.写一个函数,检查字符是否是整数,如果是,返回其整数值。
(或者:怎样只用4行代码编写出一个从字符串到长整形的函数?)

9.给出一个函数来输出一个字符串的所有排列。

10.请编写实现malloc()内存分配函数功能一样的代码。

11.给出一个函数来复制两个字符串A和B。字符串A的后几个字节和字符串
B的前几个字节重叠。

12.怎样编写一个程序,把一个有序整数数组放到二叉树中?

13.怎样从顶部开始逐层打印二叉树结点数据?请编程。

14.怎样把一个链表掉个顺序(也就是反序,注意链表的边界条件并考虑空链表)?

七.几个微软技术支持中心电话面试的题目

1.如果只想让程序有一个实例运行,不能运行两个。象winnamp一样, 只能开一个窗口,怎么作?

2.如何截取键盘的响应,让所有的'a'变成'b'?

3.apartment在com中有什么用?为什么要引入这个?

4.存储过程是什么,有什么用,什么优点?

5.template有什么特点,什么时候用?

6.好像最好要了解win32sdk底层的知识。比如消息响应的过程等等。

7.对.net的理解,对web service的理解,对三层结构的理解

8.两层的负载平衡与三层结构的负载平衡有什么差别,优点

9.windows DNA结构的特点,优点。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值