|
微软的面试题及答案-超变态但是很经典(二)
写信给这位领导,将城砖取回。 3.营业员小姐由于工作失误,将2万元的笔记本电脑以1.2万元错卖给李先生,王小姐的经理怎么写信给李先生试图将钱要回来? 4.给你一款新研制的手机,如果你是测试组的组长,你会如何测试? 5.如何为函数int atoi(const char * pstr)编写测试向量? 第六组 1.链表和数组的区别在哪里? 2.编写实现链表排序的一种算法。说明为什么你会选择用这样的方法? 3.编写实现数组排序的一种算法。说明为什么你会选择用这样的方法? 4.请编写能直接实现char * strcpy(char * pstrDest,const char * pstrSource)函数功能的代码。 5.编写反转字符串的程序,要求优化速度、优化空间。 6.在链表里如何发现循环链接? 7.给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里。 8.写一个函数,检查字符是否是整数,如果是,返回其整数值。(或者:怎样只用4行代码 9.给出一个函数来输出一个字符串的所有排列。 10.请编写实现void * malloc(int)内存分配函数功能一样的代码。 11.给出一个函数来复制两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠。 12.怎样编写一个程序,把一个有序整数数组放到二叉树中? 13.怎样从顶部开始逐层打印二叉树结点数据?请编程。 14.怎样把一个链表掉个顺序(也就是反序,注意链表的边界条件并考虑空链表)? -- 15.请编写能直接实现int atoi(const char * pstr)函数功能的代码
第一组题答案: 1)三根绳,第一根点燃两端,第二根点燃一端,第三根不点 第一根绳烧完(30分钟)后,点燃第二根绳的另一端,第二根绳烧完(45分钟)后,点燃第三根绳子两端,第三根绳烧完(1小时15分)后,计时完成 2)根据抽屉原理,4个 3)3升装满;3升-〉5升(全注入);3升装满;3升-〉5升(剩1升);5升倒掉;3升-〉5升(注入1升);3升装满;3升-〉5升;完成(另:可用回溯法编程求解) 4)问其中一人:另外一个人会说哪一条路是通往诚实国的?回答者所指的那条路必然是通往说谎国的。 5)12个球: 第一次:4,4 如果平了: 那么剩下的球中取3放左边,取3个好球放右边,称: 如果左边重,那么取两个球称一下,哪个重哪个是次品,平的话第三个重,是次品,轻的话同理 如果平了,那么剩下一个次品,还可根据需要称出次品比正品轻或者重 如果不平: 那么不妨设左边重右边轻,为了便于说明,将左边4颗称为重球,右边4颗称为轻球,剩下4颗称为好球 取重球2颗,轻球2颗放在左侧,右侧放3颗好球和一颗轻球 如果左边重 称那两颗重球,重的一个次品,平的话右边轻球次品 如果右边重 称左边两颗轻球,轻的一个次品 如果平 称剩下两颗重球,重的一个次品,平的话剩下那颗轻球次品 13个球: 第一次:4,4,如果平了 剩5颗球用上面的方法仍旧能找出次品,只是不能知道次品是重是轻 如果不平,同上 6) o o o o o o o o o 7) 23次,因为分针要转24圈,时针才能转1圈,而分针和时针重合两次之间的间隔显然> 1小时,它们有23次重合机会,每次重合中秒针有一次重合机会,所以是23次 重合时间可以对照手表求出,也可列方程求出 8) 在地球表面种树,做一个地球内接的正四面体,内接点即为所求 第二组 无标准答案 第三组 1. 分成1,2,4三段,第一天给1,第二天给2取回1,第3天给1,第4天给4取回1、2,第5天给1,第6天给2取回1,第七天给1 2. 求出火车相遇时间,鸟速乘以时间就是鸟飞行的距离 3. 四个罐子中分别取1,2,3,4颗药丸,称出比正常重多少,即可判断出那个罐子的药被污染 4. 三个开关分别:关,开,开10分钟,然后进屋,暗且凉的为开关1控制的灯,亮的为开关2控制的灯,暗且热的为开关3控制的灯 5. 因为可以用1,2,5,10组合成任何需要的货币值,日常习惯为10进制 6. 题意不理解...*_* 7. 012345 0126(9)78 第四组 都是很难的题目 第一题:97 0 1 2 0 或者 97 0 1 0 2 (提示:可用逆推法求出) 第二题:3架飞机5架次,飞法: ABC 3架同时起飞,1/8处,C给AB加满油,C返航,1/4处,B给A加满油,B返航,A到达1/2处,C从机场往另一方向起飞,3/4处,C同已经空油箱的A平分剩余油量,同时B从机场起飞,AC到7/8处同B平分剩余油量,刚好3架飞机同时返航。所以是3架飞机5架次。第三题:需要建立数学模型 (提示,严格证明该模型最优比较麻烦,但确实可证,大胆猜想是解题关键) 题目可归结为求数列 an=500/(2n+1) n=0,1,2,3......的和Sn什么时候大于等于1000,解得n> 6 当n=6时,S6=977.57 所以第一个中转点离起始位置距离为1000-977.57=22.43公里 所以第一次中转之前共耗油 22.43*(2*7+1)=336.50升 此后每次中转耗油500升 所以总耗油量为7*500+336.50=3836.50升 第四题:需要建立数学模型 题目可归结为求自然数列的和S什么时候大于等于100,解得n> 13 第一个杯子可能的投掷楼层分别为:14,27,39,50,60,69,77,84,90,95,99,100 第五题:3和4(可严格证明) 设两个数为n1,n2,n1> =n2,甲听到的数为n=n1+n2,乙听到的数为m=n1*n2 证明n1=3,n2=4是唯一解 证明:要证以上命题为真,不妨先证n=7 1)必要性: i) n> 5 是显然的,因为n <4不可能,n=4或者n=5甲都不可能回答不知道 ii) n> 6 因为如果n=6的话,那么甲虽然不知道(不确定2+4还是3+3)但是无论是2,4还是3,3乙都不可能说不知道(m=8或者m=9的话乙说不知道是没有道理的) iii) n <8 因为如果n> =8的话,就可以将n分解成 n=4+x 和 n=6+(x-2),那么m可以是4x也可以是6(x-2)而4x=6(x-2)的必要条件是x=6即n=10,那样n又可以分解成8+2,所以总之当n> =8时,n至少可以分解成两种不同的合数之和,这样乙说不知道的时候,甲就没有理由马上说知道。 以上证明了必要性 2)充分性 当n=7时,n可以分解成2+5或3+4 显然2+5不符合题意,舍去,容易判断出3+
|
|||||||||||||||
|
|
| 最新文章 |
| 图片主题 | ||||
| |
||||
| 热门文章 |
| 推荐文章 | ||||
| |
||||
| 相关文章 |
| 便民服务 | ||||||||||||||||||||||||||||||||
| |
||||||||||||||||||||||||||||||||