microsoft微软——经典面试题 (1)

时间:2024-03-11 17:06:02

        microsoft微软——经典面试题       

  

http://user.qzone.qq.com/283140651/blog/1224208615

Algorithms
* What\'s the difference between a linked list and an array?
* Implement an algorithm to sort a linked list. Why did you pick the method
you did?
* Implement an algorithm to sort an array. Why did you pick the method you
did?
* Implement strstr() (or some other string library function).
* Reverse a string. Optimize for speed. Optimize for space.
* Count the number of set bits in a number. Now optimize for speed. Now
optimize for size.
* How would you find a cycle in a linked list?
* Give me an algorithm to shuffle a deck of cards, given that the cards are
stored in an array of ints.
* Write a function that takes in a string parameter and checks to see
whether or not it is an integer, and if it is then return the integer
value.
* Write a function to print all of the permutations of a string.
* Implement malloc.
* Write a function to print the Fibonacci numbers.
* Write a function to copy two strings, A and B. The last few bytes of
string A overlap the first few bytes of string B.
* How would you print out the data in a binary tree, level by level,
starting at the top?

Applications
* How can computer technology be integrated in an elevator system for a
hundred story office building?
How do you optimize for availability? How would variation of traffic over
a typical work week or floor or time of day affect this?
* How would you redesign an ATM?
* Suppose we wanted to run a microwave oven from the computer. What kind of
software would you write to do this?
* How would you design a coffee-machine for an automobile.

Thinkers
* How are M&Ms made?
* If you had to learn a new computer language, how would you go about doing
it?
* If MS told you we were willing to invest $5 million in a start up of your
choice, what business would you start? Why?
* If you could gather all of the computer manufacturers in the world
together into one room and then tell them one thing that they wouled be
compelled to do,what would it be?
* Explain a scenario for testing a salt shaker.
* If you are going to receive an award in 5 years, what is it for and who
is the audience?
* How would you explain how to use Microsoft Excel to your grandma?
* Why is it that when you turn on the hot water in any hotel, for example,
the hot water comes pouring out almost instantaneously?

微软笔试面试题集锦
一.最基本题型(说明:此类题型比较简单)
1.
1到100有多少个9

2.
连续整数之和为1000的共有几组
   1000 = 1*2*2*2*5*5*5
        = 1*1000   *
        = 5*200   *
        = 25*40    *
        = 125*8
        = 16*62.5 *
        = 80*12.5
        = 400*2.5

   算上1000,如果不考虑负整数有4个,考虑负整数有11个(带*号有两个)
个数m需满足 m*(2n+m-1)=2000=16*5*5*5
m与2n+m-1奇偶相反,且m<2n+m-1,(呵呵,这点虽然简单明显,但对得答案很有用)。
于是,16不能拆开,个数m小于80(即小于等于25,)

这样m是由16与5的幂的乘积组合且小于等25,这就很容易枚举了,
1 1000
5  198....204
16 55....70
25 28....52
5.
老师d的物理测验答案在教室里丢失了,今天那个教室上了5堂课,老师d上了3
堂,有可能是a、b、c三个同学盗窃
已知: 1、a上了两堂课
        2、b上了三堂课
        3、c上了四堂课
        4、a、b、c每个人都上了老师d的两堂课
        5、五堂课中,三个人到堂的组合各不相同
        6、老师d的课中有一堂,三个人中到了两个,事后证明不是那两个人偷得
问?是谁偷得
第2题我觉得是b偷的吧,分析如下:
根据五堂课中三个人的组合各不相同,则分布如下:
1 2 3 4 5
c c c c
   a     a
      b b b
然后由于a、b、c都上了老师的两节课,所以2、4、5是老师d上的课

只有2中到了两人,而b没到,所以是b偷的。
6.
    a b c d e
          * f
__________________
=g g g g g g
问,a b c d e f g各是什么数字(不重复)
95238 × 7 = 666666
7.
a进行一次C和D之间往返旅行,希望在整个旅行中能够达到60km/h的平均速度,
但是当他从C到达D的时候发现平均速度只有30km/h,问a应当怎么做才能够使
这次往返旅行的平局速度到达60km/h
不可能

14.在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有
几次?都分别是什么时间?你怎样算出来的?

二.没有答案型(说明:这些题显然不是考你智力。而考的是你的反应能力。
这种题大多数没有答案,但是要看你的反应喽!)

1.为什么下水道的盖子是圆的?
2.中国有多少辆汽车?
3.将汽车钥匙插入车门,向哪个方向旋转就可以打开车锁?
4.如果你要去掉中国的34个省(含自治区、直辖市和港澳特区及*省)中的
任何一个,你会去掉哪一个,为什么?
5.多少个加油站才能满足中国的所有汽车?
6.想象你站在镜子前,请问,为什么镜子中的影象可以颠倒左右,却不能颠倒上下?
7.为什么在任何旅馆里,你打开热水,热水都会瞬间倾泻而出?
8.你怎样将Excel的用法解释给你的奶奶听?
9.你怎样重新改进和设计一个ATM银行自动取款机?
10.如果你不得不重新学习一种新的计算机语言,你打算怎样着手来开始?
11.如果你的生涯规划中打算在5年内受到奖励,那获取该项奖励的动机是什么?
观众是谁?
12.如果微软告诉你,我们打算投资五百万美元来启动你的投资计划,你将开始什
么样商业计划?为什么?
13.如果你能够将全世界的电脑厂商集合在一个办公室里,然后告诉他们将被强迫
做一件事,那件事将是什么?

三.难题(说明:这类题有一定难度,如果得不到答案,也不能说明什么。
如果你想到了解题思路,那么答案马上就能出来。如果想不到思路,
那么……就别想解出来了。)


四.超难题(说明:如果你是第一次看到这种题,并且以前从来没有见过类
似的题型,并且能够在半个小时之内做出答案。只能说明你的智力超常……)


第二题 . 一道关于飞机加油的问题,已知:
每个飞机只有一个油箱,
飞机之间可以相互加油(注意是相互,没有加油机)
一箱油可供一架飞机绕地球飞半圈,
问题:
为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?
(所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间
没有飞机场)
假设一共n架,则一共可以飞n/2圈

假设1#飞机是主机,则它飞1圈,它自己的油本来可以飞1/2圈,所以它需要的是1/2圈的
加油量,也就是一整桶油。

而剩下的飞机它们自己也要飞,飞的路程最多1/2圈,考虑返回,也就是最多1/4,而飞满
1/4,它就没法贡献了,所以必须有些飞机不能飞到1/4处

我们考虑最小值,假设加油机中飞满1/4的飞机,“送”的只有一架,“迎接”的也只有一架
【不可能只“送”不“接”或只“接”不“送”(这很好理解吧?否则怎么给1#加油?)】
那么这桶油只能考剩下的n-3架加油机来完成,而它们自己肯定要飞,所以不可能由一架
来完成,所以最少n-3必须大于等于2
取最小值2,每架飞机负担1/2桶,剩下1/2自己用,可以来回飞1/8,发现可行
五.主观题(说明:在以后的工作过程中,我们可定会犯这样那样的错误。
既然错误已经酿成,损失在所难免,我们只能想办法把损失减少到最小。
如果能巧妙地回答出这些问题,再发生错误的情况下。能让客户有最少的抱
怨,公司有最少的损失。)

1.某手机厂家由于设计失误,有可能造成电池寿命比原来设计的寿命短一半
(不是冲放电时间),解决方案就是免费更换电池或给50元购买该厂家新手机
的折换券。请给所有已购买的用户写信告诉解决方案。
2.一高层领导在参观某博物馆时,向博物馆馆员小王要了一块明代的城砖作
为纪念,按国家规定,任何人不得将博物馆收藏品变为私有。博物馆馆长需要
如何写信给这位领导,将城砖取回。
3.营业员小姐由于工作失误,将2万元的笔记本电脑以1.2万元错卖给李先生,
王小姐的经理怎么写信给李先生试图将钱要回来?

六.算法题(说明:这些题就不是什么花样了,考的是你的基础知识怎么样。
再聪明而没有实学的人都将会被这些题所淘汰。)

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结构的特点,优点

发信人: pretender (流星的眼眸), 信区: job
标 题: 微软的一些题
发信站: 兵马俑BBS (Wed Oct 13 21:53:06 2004), 转信(bbs.xjtu.edu.cn)

微软亚洲技术支持中心面试题目
1.进程和线程的差别。
线程是指进程内的一个执行单元,也是进程内的可调度实体.
与进程的区别:
(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位
(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行
(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.
(4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。
2.测试方法
人工测试:个人复查、抽查和会审
机器测试:黑盒测试和白盒测试

2.Heap与stack的差别。
Heap是堆,stack是栈。
Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放。
Stack空间有限,Heap是很大的*存储区
C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符。
程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行
3.Windows下的内存是如何管理的?
4.介绍.Net和.Net的安全性。
5.客户端如何访问.Net组件实现Web Service?
6.C/C++编译器中虚表是如何完成的?
7.谈谈COM的线程模型。然后讨论进程内/外组件的差别。
8.谈谈IA32下的分页机制
小页(4K)两级分页模式,大页(4M)一级
9.给两个变量,如何找出一个带环单链表中是什么地方出现环的?

10.在IA32中一共有多少种办法从用户态跳到内核态?
通过调用门,从ring3到ring0,中断从ring3到ring0,进入vm86等等
11.如果只想让程序有一个实例运行,不能运行两个。像winamp一样,只能开一个窗口,怎样实现?
用内存映射或全局原子(互斥变量)、查找窗口句柄..
FindWindow,互斥,写标志到文件或注册表,共享内存。. 
12.如何截取键盘的响应,让所有的‘a’变成‘b’?
键盘钩子SetWindowsHookEx
 13.Apartment在COM中有什么用?为什么要引入?
 14.存储过程是什么?有什么用?有什么优点?
我的理解就是一堆sql的集合组成一个过程,可以建立非常复杂的查询,编译运行,所以运行一次后,以后再运行速度比单独执行SQL快很多
存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化
后存储在数据库服务器中,使用时只要调用即可。在ORACLE中,若干个
有联系的过程可以组合在一起构成程序包。
 15.Template有什么特点?什么时候用?
16.谈谈Windows DNA结构的特点和优点。
微创笔试题目
1.上海的苏州河由于遭受多年的工业污染,一直是条臭水沟。上海市*下了很大决心
清理苏州河,你觉得需要几年能让河水变清?你的依据是什么?
2.找出字符串A中包含的字符可以进行的所有不同组合。例如:abccd中,ab,ac,bc,
cc,abd等都是可能的组合。(请用C/C++编程,不允许上机操作)
3.请估算月球的体积。
4.经常去的技术网站,请举例。
5.对软件开发过程的理解。
6.上海有多少外籍和港澳台人士?你的依据是什么?(不得引用*和调研机构数据)

7.字符串A是由n个小写英文字母(a ~ z)构成的,定义为char A[n]。你能用更少的空
间表示这个字符串吗?请写出从char A[n]到你的新的储存格式的转换函数。(请用C/C
++编程,不允许上机操作)
8.哈希表和数组的定义,区别,优缺点。
9.用递归实现菲波列数列。
10.用dhtml写页面。