名企笔试真题精选(三)

10 篇文章 0 订阅
10 篇文章 0 订阅

 哎,自己没什么时间也没什么耐性更没什么毅力天天学习天天向上,于是很多搜罗来不及看的东东先分享给童鞋们吧

 

3.  软件业巨无霸——微软笔试面试题目(1)  

      

智力题

1.烧一根不均匀的绳子,从头烧到尾总共需要 1 个小时,问如何用烧绳子

的方法来确定半小时的时间呢?

2.10 个海盗抢到了 100 颗宝石,每一颗都一样大小且价值连城。他们决定

这么分:

(1)抽签决定自己的号码(1~10);

(2)首先,由 1 号提出分配方案,然后大家表决,当且仅当超过半数的人

同意时,按照他的方案进行分配,否则将被扔进大海喂鲨鱼;

(3)如果 1 号死后,再由 2 号提出分配方案,然后剩下的 4 个人进行表决,

当且仅当超过半数的人同意时,按照他的方案进行分配,否则将被扔入大海喂鲨

鱼;

(4)依此类推⋯⋯

条件:每个海盗都是很聪明的人,都能很理智地做出判断,从而做出选择。

问题:第一个海盗提出怎样的分配方案才能使自己的收益最大化?

3.为什么下水道的盖子是圆的?

4.中国有多少辆汽车?

5.你让工人为你工作 7 天,回报是一根金条,这根金条平分成相连的 7 段,

你必须在每天结束的时候给他们一段金条。如果只允许你两次把金条弄断,你如

何给你的工人付费?

6.有一辆火车以每小时 15 公里的速度离开北京直奔广州,同时另一辆火车

以每小时 20 公里的速度从广州开往北京。如果有一只鸟,以 30 公里每小时的速

度和两辆火车同时启动,从北京出发,碰到另一辆车后就向相反的方向返回去飞,

就这样依次在两辆火车之间来回地飞,直到两辆火车相遇。请问,这只鸟共飞行

了多长的距离?

7.你有两个罐子以及 50 个红色弹球和 50 个蓝色弹球,随机选出一个罐子,

随机选出一个弹球放入罐子,怎样给出红色弹球最大的选中机会?在你的计划

里,得到红球的几率是多少?

8.想像你站在镜子前,请问,为什么镜子中的影像可以左右颠倒,却不能

上下颠倒呢?

9.如果你有无穷多的水,一个 3 公升的提捅,一个 5 公升的提捅,两只提

捅形状上下都不均匀,问你如何才能准确称出 4 公升的水?

10.你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色

的两个。抓取多少次就可以确定你肯定有两个同一颜色的果冻?

11.连续整数之和为 1000 的共有几组?

12.从同一地点出发的相同型号的飞机,可是每架飞机装满油只能绕地球飞

半周,飞机之间可以加油,加完油的飞机必须回到起点。问至少要多少架次,才

能满足有一架绕地球一周。

参考答案:

1.两边一起烧。

2.96,0,1,0,1,0,1,0,1,0。

3.因为口是圆的。

4.很多。

5.分 1,2,4。

6.6/7 北京到广州的距离。

7.100%。

8.平面镜成像原理(或者是“眼睛是左右长的”)。

9.3 先装满,倒在 5 里,再把 3 装满,倒进 5 里。把 5 里的水倒掉,把 3 里

剩下的水倒进 5 里,再把 3 装满,倒进 5 里,ok!

10.一次。

11.首先 1000 为一个解。连续数的平均值设为 x,1000 必须是 x 的整数倍。

假如连续数的个数为偶数个,x 就不是整数了。x 的 2 倍只能是 5,25,125 才行。

因为平均值为 12.5,要连续 80 个达不到。125/2=62.5 是可以的。即 62,63,61,

64,等等。连续数的个数为奇数时,平均值为整数。1000 为平均值的奇数倍。

1000=2×2×2×5×5×5;x 可以为 2,4,8,40,200 排除后剩下 40 和 200 是

可以的。所以答案为平均值为 62.5,40,200,1000 的 4 组整数。

12.答案是 5 架次。一般的解法可以分为如下两个部分:

(1)直线飞行

一架飞机载满油飞行距离为 1,n 架飞机最远能飞多远?在不是兜圈没有迎

头接应的情况,这问题就是 n 架飞机能飞多远?存在的极值问题是不要重复飞

行,比如两架飞机同时给一架飞机加油且同时飞回来即可认为是重复,或者换句

话说,离出发点越远,在飞的飞机就越少,这个极值条件是显然的,因为 n 架飞

机带的油是一定的,如重复,则浪费的油就越多。比如最后肯定是只有一架飞机

全程飞行,注意“全程”这两个字,也就是不要重复的极值条件。如果是两架飞

机的话,肯定是一架给另一架加满油,并使剩下的油刚好能回去,就说第二架飞

机带的油耗在 3 倍于从出发到加油的路程上,有三架飞机第三架带的油耗在 5

倍于从出发到其加油的路程上,所以 n 架飞机最远能飞行的距离为 s=1+1/3+⋯

+1/(2n+1)这个级数是发散的,所以理论上只要飞机足够多最终可以使一架飞

机飞到无穷远,当然实际上不可能一架飞机在飞行 1/(2n+1)时间内同时给 n−1

个飞机加油。

(2)可以迎头接应加油

一架飞机载满油飞行距离为 1/2,最少几架飞机能飞行距离 1?也是根据不

要重复飞行的极值条件,得出最远处肯定是只有一架飞机飞行,这样得出由 1/2

处对称两边 1/4 肯定是一架飞机飞行,用上面的公式即可知道一边至少需要两架

飞机支持,(1/3+1/5)/2>1/4(左边除以 2 是一架飞机飞行距离为 1/2),但

是有一点点剩余,所以想像为一个滑轮(中间一个飞机是个绳子,两边两架飞机

是个棒)的话,可以滑动一点距离,就说加油地点可以在一定距离内变动(很容

易算出来每架飞机的加油地点和加油数量,等等)

数学篇

1.1000!有几位数,为什么?

2.F(n)=1 n>8 n<12

F(n)=2 n<2

F(n)=3 n=6

F(n)=4 n=other

使用+ − * /和 sign(n)函数组合出 F(n)函数

sign(n)=0 n=0

sign(n)=−1 n<0

sign(n)=1 n>0

 

微软笔试面试题目(2)  

      

逻辑推理题

1.此题源于 1981 年柏林的德国逻辑思考学院,98%的测验者无法解答此题。

有五间房屋排成一列;所有房屋的外表颜色都不一样;所有的屋主来自不同

的国家;所有的屋主都养不同的宠物;喝不同的饮料;抽不同的香烟。

(1)英国人住在红色房屋里;(2)瑞典人养了一只狗;(3)丹麦人喝茶;

(4)绿色的房子在白色的房子的左边;(5)绿色房屋的屋主喝咖啡;(6)吸

Pall Mall 香烟的屋主养鸟;(7)黄色屋主吸 Dunhill 香烟;(8)位于最中间

的屋主喝牛奶;(9)挪威人住在第一间房屋里;(10)吸 Blend 香烟的人住在

养猫人家的隔壁;(11)养马的屋主在吸 Dunhill 香烟的人家的隔壁;(12)吸

Blue Master 香烟的屋主喝啤酒;(13)德国人吸 Prince 香烟;(14)挪威人

住在蓝色房子隔壁;(15)只喝开水的人住在吸 Blend 香烟的人的隔壁

问:谁养鱼?

Ò 提示:首先确定

房子颜色:红、黄、

绿、白、蓝

Color  1 2 3 4 5

国籍:英、瑞、丹、

挪、德=>

Nationality 1 2 3 4 5

饮料:茶、咖、奶、

酒、水=>

Drink  1 2 3 4 5

烟:PM、DH、BM、

PR、混=>

Tobacco  1 2 3 4 5

宠物:狗、鸟、马、

猫、鱼=>

Pet  1 2 3 4 5

然后有:

(9)=>N1=挪威

(14)=>C2=蓝

(4)=>如 C3=绿,C4=白,则(8)和(5)矛盾,所以 C4=绿,C5=白

剩下红黄只能为 C1,C3

(1)=>C3=红,N3=英国,C1=黄

(8)=>D3=牛奶

(5)=>D4=咖啡

(7)=>T1=DH

(11)=>P2=马

那么:

挪威  ?  英国  ?  ?

黄  蓝  红  绿  白

?  ?  牛奶  咖啡  ?

DH  ?  ?  ?  ?

?  马  ?  ?  ?

(12)=>啤酒只能为 D2 或 D5,BM 只能为 T2 或 T5=>D1=矿泉水

(3)=>茶只能为 D2 或 D5,丹麦只能为 N2 或 N5

(15)=>T2=混合烟=>BM=T5,

所以剩下啤酒=D5,茶=T2=>丹麦=D2

然后:

挪威  丹麦  英国  ?  ?

黄  蓝  红  绿  白

矿泉水  茶  牛奶  咖啡  啤酒

DH  混合烟  ?  ?  BM

?  马  ?  ?  ?

(13)=>德国=N4,PR=T4

所以,瑞典=N5,PM=T3

(2)=>狗=P5

(6)=>鸟=P3

(10)=>猫=P1

得到:

挪威  丹麦  英国  德国  瑞典

黄  蓝  红  绿  白

矿泉水  茶  牛奶  咖啡  啤酒

DH  混合烟  PM  PR  BM

猫  马  鸟  ?  狗

所以,最后剩下的鱼只能由德国人养了。

2.

y  y  y

y  y  y

y  y  y

请仅用一笔画四根直线,将上图 9 个点全部连接。

3.对一批编号为 1~100 全部开关朝上(开)的灯进行以下操作:

凡是 1 的倍数反方向拨一次开关;2 的倍数反方向又拨一次开关;3 的倍数

反方向又拨一次开关⋯⋯

问:最后为关熄状态的灯的编号。

第 1 章 名企笔试真题精选

 

3.  软件业巨无霸——微软笔试面试题目(3)

 

微软招聘总经理助理的三道面试题

1.某手机厂家由于设计失误,有可能造成电池寿命比原来设计的寿命短一

半(不是冲放电时间),解决方案就是更换电池或给 50 元购买该厂家新手机的

折换券。请给所有已购买的用户写信告诉解决方案。

2.一高层领导在参观某博物馆时,向博物馆馆员小王要了一块明代的城砖

作为纪念,按国家规定,任何人不得将博物馆收藏品变为私有。博物馆馆长需要

如何写信给这位领导,将城砖取回?

3.王小姐由于工作失误,将 2 万元的笔记本电脑以 1.2 万元错卖给李先生,

王小姐的经理应该怎么写信给李先生将钱要回?

微软面试英文题目

1. 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?

2. 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.

3. 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 would 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.进程和线程的差别。

2.Heap 与 stack 的差别。

3.Windows 下的内存是如何管理的?

4.介绍.Net 和.Net 的安全性。

5.客户端如何访问.Net 组件实现 Web Service?

6.C/C++编译器中虚表是如何完成的?

7.谈谈 COM 的线程模型。然后讨论进程内/外组件的差别。

8.谈谈 IA32 下的分页机制。

9.给两个变量,如何找出一个带环单链表中是什么地方出现环的?

10.在 IA32 中一共有多少种办法从用户态跳到内核态?

11.如果只想让程序有一个实例运行,不能运行两个。像 winamp 一样,只

能开一个窗口,怎样实现?

12.如何截取键盘的响应,让所有的‘a’变成‘b’?

13.Apartment 在 COM 中有什么用?为什么要引入?

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

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 写页面。

 

3.  软件业巨无霸——微软笔试面试题目(4)

        

微软研究院笔试题目

1.#include <stdio.h>

#include <String.h>

class CBuffer

{

       char * m_pBuffer;

              int m_size;

publc:

              CBuffer()

              {

                       m_pBuffer=NULL;

              }

              ~CBuffer()

              {

                       Free();

              }

              void Allocte(int size)

              {

                       m_size=size;

                       m_pBuffer= new char[size];

              }

private:

              void Free()

              {    

                       if(m_pBuffer!=NULL)

                       {

                                delete m_pBuffer;

                                m_pBuffer=NULL;

                       }

              }

public:

              void SaveString(const char* pText) const

              {

                       strcpy(m_pBuffer, pText);

                       char*  GetBuffer() const

                       {

                       return m_pBuffer;

                       }

              };

              void main (int argc, char* argv[])

              {

                       cBuffer buffer1;

                       buffer1.SaveString(“Microsoft”);

                       printf(buffer1.GetBuffer());

              }

}

找出 Allocate, SaveString, main 的错误。

2.打印“Welcome MSR Asia”

#include <stdio.h>

#include <string.h>

char * GetName (void)

{

              //To return “MSR Asia” String

              char name[]=“MSR Asia”;

              return name;

}

void main(int argc, char* argv[])

{

              char name[32];

              //Fill in zeros into name

              for(int i=0;i<=32;i++)

              {

                       name[1]='\0';

              }

              //copy “Welcome” to name

              name=“Welcome”;

              //Append a blank char

              name[8]=”;

              //Append string to name

              strcat(name,GetName());

              //print out

              printf(name);

}

找出程序中的错误。

3.#include <stdio.h>

class A

{

public:

              void FuncA()

              {

                       printf(“FuncA called\n”);

              }

              virtual void FuncB()

              {

                       printf(“FuncB called\n”);

              }

};

class B: public A

{

public:

              void FuncA()

              {

                       A::FuncA();

                       printf(“FuncAB called\n”);

              }

              virtual void FuncB()

              {

                       printf(“FuncBB called\n”);

              }

};

void main(void)

{

              B b;

              A *pa;

              pa=&b;

              A *pa2=new A;

              b.FuncA();

              b.FuncB();

              pa->FuncA();

              pa->FuncB();

              pa2->FuncA();

              pa2->FuncB();

              delete pa2;

}

What is the output of the above program?

4.#include <stdio.h>

#include <string.h>

int FindSubString(char* pch)

{

             int count=0;

             char* p1=pch;

             while(*p1!=‘\0’)

             {

                      if(*p1==p1[1]-1)

                      {

                               p1++;

                               count++;

                      }

                      else

                      {

                               break;

                      }

             }

             int count2=count;

             while(*p1!=‘\0’)

             {

                      if(*p1!==p1[1]+1)

                      {

                               p1++;

                               count2--;

                      }

                      else

                      {

                               break;

                      }

             if(count2==0)

                      return count;

        return 0;

}

void ModifyString(char* pText)

{

             char* p1=pText;

             char* p2=p1;

             while(*p1!=‘\0’)

             {

                      int count=FindSubString(p1);

                      if(count>0)

                      {

                               *p2++=*p1;

                               sprintf(p2, “%I”, count);

                               while(*p2!= ‘\0’)

                               {

                                         p2++;

                               }

                               p1+=count+count+1;

                      }

                      else

                      {

                      *p2++=*p1++;

                      }

             }

}

void main(void)

{

             char text[32]=“XYBCDCBABABA”;

             ModifyString(text);

             printf(text);

}

In the main() function, after ModifyString(text) is called, what’s

the value of ‘text’?

 

 

3.编一个程序求质数的和,例如 F(7)=1+3+5+7+11+13 +17=57。

 

好多题啊啊~我的眼睛都花完了~~~  ^&^  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值