微软、Google、百度、腾讯等名企C++笔试题汇总

微软十五道笔试题

  1、有一个整数数组,请求出两两之差绝对值最小的值,记住,只要得出最小值即可,不需要求出是哪两个数。

  2、写一个函数,检查字符是否是整数,如果是,返回其整数值。

  (或者:怎样只用4行代码编写出一个从字符串到长整形的函数?)

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

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

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

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

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

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

  8、请编写能直接实现int atoi(const char * pstr)函数功能的代码。

  9、编程实现两个正整数的除法

  编程实现两个正整数的除法,当然不能用除法操作符。

  // return x/y.

  int div(const int x, const int y)

  {

  ....

  }

  10、在排序数组中,找出给定数字的出现次数

  比如 [1, 2, 2, 2, 3] 中2的出现次数是3次。

  11、平面上N个点,每两个点都确定一条直线,

  求出斜率最大的那条直线所通过的两个点(斜率不存在的情况不考虑)。时间效率越高越好。

  12、一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现。0是例外,可以反复出现。

  请设计一个算法,当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻。

  注意:

  - 5个数值允许是乱序的。比如: 8 7 5 0 6

  - 0可以通配任意数值。比如:8 7 5 0 6 中的0可以通配成9或者4

  - 0可以多次出现。

  - 复杂度如果是O(n2)则不得分。

  13、设计一个算法,找出二叉树上任意两个结点的最近共同父结点。

  复杂度如果是O(n2)则不得分。

  14、一棵排序二叉树,令 f=(最大值+最小值)/2,

  设计一个算法,找出距离f值最近、大于f值的结点。

  复杂度如果是O(n2)则不得分。

  15、一个整数数列,元素取值可能是1~N(N是一个较大的正整数)中的任意一个数,相同数值不会重复出现。

  设计一个算法,找出数列中符合条件的数对的个数,满足数对中两数的和等于N+1。

  复杂度最好是O(n),如果是O(n2)则不得分。

  谷歌八道笔试题

  16、正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,需要计算出Q中的前几项,例如,当a=3,b=5,N=6时,序列为3,5,6,9,10,12

  (1)、设计一个函数void generate(int a,int b,int N ,int * Q)计算Q的前几项

  (2)、设计测试数据来验证函数程序在各种输入下的正确性。

  17、有一个由大小写组成的字符串,现在需要对他进行修改,将其中的所有小写字母排在答谢字母的前面(大写或小写字母之间不要求保持原来次序),如有可能尽量选择时间和空间效率高的算法 c语言函数原型void proc(char *str)也可以采用你自己熟悉的语言

  18、如何随机选取1000个关键字

  给定一个数据流,其中包含无穷尽的搜索关键字(比如,人们在谷歌搜索时不断输入的关键字)。如何才能从这个无穷尽的流中随机的选取1000个关键字?

  19、判断一个自然数是否是某个数的平方

  说明:当然不能使用开方运算。

  20、给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。

  21、1024! 末尾有多少个0?

  22、有5个海盗,按照等级从5到1排列,最大的海盗有权提议他们如何分享100枚金币。

  但其他人要对此表决,如果多数反对,那他就会被杀死。

  他应该提出怎样的方案,既让自己拿到尽可能多的金币又不会被杀死?

  (提示:有一个海盗能拿到98%的金币)

  23、Google2009华南地区笔试题

  给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含),

  指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。

  比如,A=[1,0] K=21 那么输出结构应该为100。

  百度三道笔试题

  24、用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回。

  25、用C语言实现函数void * memmove(void *dest, const void *src, size_t n)。memmove

  函数的功能是拷贝src所指的内存内容前n个字节到dest所指的地址上。

  分析:由于可以把任何类型的指针赋给void类型的指针,这个函数主要是实现各种数据类型的拷贝。

  26、有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。

  木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。

  当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。

  编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。

  腾讯七道笔试题

  27、请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句

  28、两个数相乘,小数点后位数没有限制,请写一个高精度算法

  29、有A、B、C、D四个人,要在夜里过一座桥。他们通过这座桥分别需要耗时1、2、5、10分钟,只有一支手电,并且同时最多只能两个人一起过桥。请问,如何安排,能够在17分钟内这四个人都过桥?

  30、有12个小球,外形相同,其中一个小球的质量与其他11个不同,

  给一个天平,问如何用3次把这个小球找出来,并且求出这个小球是比其他的轻还是重

  31、在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可。

  32、一个文件中有40亿个整数,每个整数为四个字节,内存为1GB,写出一个算法:求出这个文件里的整数里不包含的一个整数

  33、腾讯服务器每秒有2w个QQ号同时上线,找出5min内重新登入的qq号并打印出来。

  雅虎三道笔试题

  34、编程实现:把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列

  35、编程实现:找出两个字符串中最大公共子字符串,如"abccade","dgcadde"的最大子串为"cad"

  36、有双向循环链表结点定义为:

  struct node

  {

  int data;

  struct node *front,*next;

  };

  有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除。

  联想五道笔试题

  37、1)、设计函数 int atoi(char *s)。

  2)、int i=(j=4,k=8,l=16,m=32); printf(“%d”, i); 输出是多少?

  3)、解释局部变量、全局变量和静态变量的含义。

  4)、解释堆和栈的区别。

  5)、论述含参数的宏与函数的优缺点。

  38、顺时针打印矩阵

  题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

  例如:如果输入如下矩阵:

  1 2 3 4

  5 6 7 8

  9 10 11 12

  13 14 15 16

  则依次打印出数字1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10。

  分析:包括Autodesk、EMC在内的多家公司在面试或者笔试里采用过这道题。

  39、对称子字符串的最大长度

  题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。

  比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。

  分析:可能很多人都写过判断一个字符串是不是对称的函数,这个题目可以看成是该函数的加

  强版。

  40、用1、2、2、3、4、5这六个数字,写一个main函数,打印出所有不同的排列,

  如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连.

  41、微软笔试题

  一个有序数列,序列中的每一个值都能够被2或者3或者5所整除,1是这个序列的第一个元素。求第1500个值是多少?

  网易五道游戏笔试题

  42、两个圆相交,交点是A1,A2。现在过A1点做一直线与两个圆分别相交另外一点B1,B2。

  B1B2可以绕着A1点旋转。问在什么情况下,B1B2最长

  43、Smith夫妇召开宴会,并邀请其他4对夫妇参加宴会。在宴会上,他们彼此握手,

  并且满足没有一个人同自己握手,没有两个人握手一次以上,并且夫妻之间不握手。

  然后Mr. Smith问其它客人握手的次数,每个人的答案是不一样的。

  求Mrs Smith握手的次数

  44、有6种不同颜色的球,分别记为1,2,3,4,5,6,每种球有无数个。现在取5个球,求在一下的条件下:

  1、5种不同颜色,

  2、4种不同颜色的球,

  3、3种不同颜色的球,

  4、2种不同颜色的球,

  它们的概率。

  45、有一次数学比赛,共有A,B和C三道题目。所有人都至少解答出一道题目,总共有25人。

  在没有答出A的人中,答出B的人数是答出C的人数的两倍;单单答出A的人,比其他答出A的人总数多1;在所有只有答出一道题目的人当中,答出B和C的人数刚好是一半。

  求只答出B的人数。

  46、从尾到头输出链表

  题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:

  struct ListNode

  {

  int m_nKey;

  ListNode* m_pNext;

  };

  分析:这是一道很有意思的面试题。该题以及它的变体经常出现在各大公司的面试、笔试题中。

  47、金币概率问题(威盛笔试题)

  题目:10个房间里放着随机数量的金币。每个房间只能进入一次,并只能在一个房间中拿金币。

  一个人采取如下策略:前四个房间只看不拿。随后的房间只要看到比前四个房间都多的金币数,就拿。否则就拿最后一个房间的金币?

  编程计算这种策略拿到最多金币的概率。

  48、找出数组中唯一的重复元素

  1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次.

  每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助存储空间,能否设计一个算法实现?

  49、08百度校园招聘的一道笔试题

  题目大意如下:

  一排N(最大1M)个正整数+1递增,乱序排列,第一个不是最小的,把它换成-1,

  最小数为a且未知求第一个被-1替换掉的数原来的值,并分析算法复杂度。

  50、一道SPSS笔试题求解   

        题目:输入四个点的坐标,求证四个点是不是一个矩形

  关键点:

  1.相邻两边斜率之积等于-1,

  2.矩形边与坐标系平行的情况下,斜率无穷大不能用积判断。

  3.输入四点可能不按顺序,需要对四点排序。

  51、矩阵式螺旋输出答案参见http://blog.csdn.net/alexingcool/article/details/6779330

       

  52、求两个或N个数的最大公约数和最小公倍数。

  53、最长递增子序列

  题目描述:设L=是n个不同的实数的序列,L的递增子序列是这样一个子序列

  Lin=,其中k1

  求最大的m值。

  54、字符串原地压缩

  题目描述:“eeeeeaaaff" 压缩为 "e5a3f2",请编程实现。

  55、字符串匹配实现

  请以俩种方法,回溯与不回溯算法实现。

  56、一个含n个元素的整数数组至少存在一个重复数,

  请编程实现,在O(n)时间内找出其中任意一个重复数。

  57、求最大重叠区间大小

  题目描述:请编写程序,找出下面“输入数据及格式”中所描述的输入数据文件中最大重叠区间的大小。

  对一个正整数 n ,如果n在数据文件中某行的两个正整数(假设为A和B)之间,即A<=n<=B或A>=n>=B ,则 n 属于该行;

  如果 n 同时属于行i和j ,则i和j有重叠区间;重叠区间的大小是同时属于行i和j的整数个数。

  例如,行(10 20)和(12 25)的重叠区间为 [12 20] ,其大小为9,行(20 10)和( 20 30 )的重叠区间大小为 1 。

  58、整数的素数和分解问题

  歌德巴赫猜想说任何一个不小于6的偶数都可以分解为两个奇素数之和。

  对此问题扩展,如果一个整数能够表示成两个或多个素数之和,则得到一个素数和分解式。

  对于一个给定的整数,输出所有这种素数和分解式。

  注意,对于同构的分解只输出一次(比如5只有一个分解2 + 3,而3 + 2是2 + 3的同构分解式)。

  例如,对于整数8,可以作为如下三种分解:

  (1) 8 = 2 + 2 + 2 + 2

  (2) 8 = 2 + 3 + 3

  (3) 8 = 3 + 5

  59、google的一道面试题

  题目:

  输入a1,a2,...,an,b1,b2,...,bn,

  在O(n)的时间,O(1)的空间将这个序列顺序改为a1,b1,a2,b2,a3,b3,...,an,bn,

  且不需要移动,通过交换完成,只需一个交换空间。

  例如,N=9时,第2步执行后,实际上中间位置的两边对称的4个元素基本配对,

  只需交换中间的两个元素即可,如下表所示。颜色表示每次要交换的元素,左边向右交换,右边向左交换。

  交换过程如下表所示

     

  交换x1,x3;交换x2,x4;再交换中间的x1,x4;交换y1,y2。

  60、百度笔试题

  给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。

  要求:空间复杂度O(1),时间复杂度为O(n)。

 

转自http://yjbys.com/bishi/timu/522082.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++笔试题 Sony笔试题 几道题目及自做答案 北电 普天C++笔试题 我所收集的intel比试题 面试题 2005年腾讯招聘 微软 微软亚洲技术支持中心面试题目 微创笔试题目(微创,微软在中国的合资公司) Intel笔试面试题目 IBM 社会招聘笔试题 宝洁公司(P&G)面试题目 飞利浦笔试试题 阿尔卡特(中国)的面试题目 Google 戴尔 意法半导体软件试题 Sony笔试题 华为笔试题 华为 华为全套完整试题 慧通 华为面试题 大唐电信 大唐面试试题 网通笔试题 东信笔试题目 中软融鑫笔试题 Delphi笔试题目 EE笔试试题 软件笔试题 Hongkong Bank笔试题 A.T. Keaney笔试题 Shell company笔试题 KPMG笔试题 香港电信笔试题 LORAL的笔试题 维尔VERITAS软件笔试题 百威啤酒(武汉公司) 星巴克 凹凸电子软件笔试题 友立资讯笔试题目 Avant! 微电子EE笔试题 德勤笔试题 扬智(科技)笔试题目 高通笔试题 威盛笔试试题 2003 EE笔试题目 2003 Graphic笔试题目 汉王笔试题 北京信威通信技术股份有限公司面试题 中国国际金融有限公司CICC笔试题 国泰君安笔试题 广东北电面试题目 广州本田笔试题 明基面试问题 网易 广州日报 下面有些题也不错,可以参考 联想笔试题 普天C++笔试题 Sony笔试题 微软亚洲技术中心的面试题 MSRA Interview Written Exam(December 2003,Time:2.5 Hours) 百度笔试题 汉略曾考的测试题目 16道C语言面试题例子 死循环(Infinite loops) 数据声明(Data declarations) 位操作(Bit manipulation) 访问固定的内存位置(Accessing fixed memory locations) 中断(Interrupts) 代码例子(Code examples) 13. 评价下面的代码片断 动态内存分配(Dynamic memory allocation) 群硕笔试 基础题 笔试博朗 - [笔试 职业] C语言面试题大汇总 思科 慧通 雅虎笔试题(字符串操作) C语言最长平台算法 华为3COM C语言题库 将两个无序数组合并为有序链表 上海聚力传媒技术有限公司官方VC笔试题解答

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值