![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试训练题
文章平均质量分 68
cxh342968816
这个作者很懒,什么都没留下…
展开
-
程序员必看 c++笔试题汇总
本文通过对程序员笔试过程的总结,对程序员c++笔试题进行了汇总。希望能与大家共同分享。下面是一些常见题型:1.求下面函数的返回值(微软){ int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } 假定x = 9999. 答案:8思路:将x转化为2进制,看含有的1的个数。2. 什么转载 2011-06-14 20:33:00 · 852 阅读 · 0 评论 -
36.比赛获胜顺序
谷歌笔试:n 支队伍比赛,分别编号为0,1,2。。。。n-1,已知它们之间的实力对比关系,存储在一个二维数组w[n][n]中,w[i][j] 的值代表编号为i,j 的队伍中更强的一支。所以w[i][j]=i 或者j,现在给出它们的出场顺序,并存储在数组order[n]中,比如or原创 2011-07-26 22:02:57 · 884 阅读 · 0 评论 -
25.找出字符串中的最长数字串
写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr 所指内存。例如:"abcd12345ed125原创 2011-07-19 15:14:27 · 1192 阅读 · 2 评论 -
26.左旋转字符串
题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef 左旋转2 位得到字符串cdefab。请实现字符串左旋转的函数。要求时间对长度为n 的字符串操作的复杂度为O(n),辅助内存为O(1)。分析:如果不考虑时间和空间复杂度的限制,最简单的原创 2011-07-20 21:19:52 · 606 阅读 · 0 评论 -
27.跳台阶问题
题目:一个台阶总共有n 级,如果一次可以跳1 级,也可以跳2 级。求总共有多少总跳法,并分析算法的时间复杂度。首先我们考虑最简单的情况。如果只有1 级台阶,那显然只有一种跳法。如果有2 级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1 级;另外一种就是一次跳2 级。现在我们原创 2011-07-20 21:35:35 · 1253 阅读 · 0 评论 -
29.栈的push、pop 序列
题目:输入两个整数序列。其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序。如果我们希望pop 的数字正好是栈顶数字,直接pop 出栈即可;如果希望pop 的数字目前不在栈顶,我们就到push 序列中还没有被push 到栈里的数字中去搜索这个数字,并原创 2011-07-22 10:42:33 · 745 阅读 · 0 评论 -
最大子序列、最长公共子串、最长公共子序列
最大子序列最大子序列是要找出由数组成的一维数组中和最大的连续子序列。比如{5,-3,4,2}的最大子序列就是 {5,-3,4,2},它的和是8,达到最大;而 {5,-6,4,2}的最大子序列是{4,2},它的和是6。你已经看出来了,找最大子序列的方法很简单,只要前i项的和还没转载 2011-07-31 11:03:03 · 963 阅读 · 0 评论 -
抛鸡蛋(玻璃球或围棋)
题目:一个100层的大厦,你手中有两个相同的鸡蛋(玻璃球或围棋)。从这个大厦的某一层扔下鸡蛋((玻璃球或围棋))就会碎,用你手中的这两个鸡蛋(玻璃球或围棋),找出一个最优的策略,来得知那个临界层面。分析:这道题比较直观的想法是通过二分来寻找,但是二分的解法应该不是最优的。这里原创 2011-07-31 22:22:07 · 1455 阅读 · 0 评论 -
39.二叉树中任意两个节点间的最大距离
求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义是这两个节点间边的个数,比如某个孩子节点和父节点间的距离是1,和相邻兄弟节点间的距离是2,优化时间空间复杂度。 思路:1.对二叉树中的任一个节点,求得它到左子树中最深的结点的距离ldis,再求得它到右原创 2011-08-03 12:25:41 · 6957 阅读 · 0 评论 -
40.给字符串s1、s2,在s1中找包含s2里所有字符的最小子串
题目:一串首尾相边的珠子(m个),有N种颜色,设计 一种算法,取出其中一段,要求包含所有N种颜色,并使长度最短。 给一个字符串s1,和一个小串s2,求算法能在s1中找到包含s2里所有字符的最小子串。比如:s1 = “ADOBECODEBANC”原创 2011-08-04 12:40:26 · 3732 阅读 · 0 评论 -
递归非递归实现树的遍历
1.先序遍历从递归说起void preOrder(TNode* root){ if (root != NULL) { Visit(root); preOrder(root->left); preOrder(ro转载 2011-08-05 12:26:04 · 856 阅读 · 0 评论 -
45.递减左旋数列中查找一个数
题目:一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}克移两位形成的,在这种数组中查找某一个数。 思路:在此序列不断二分的过程中,由于原序列是一个递减序列经过旋转得到的,将它从任何位置分开,都会得到两个序列,其中一个是原创 2011-08-09 14:55:16 · 1907 阅读 · 0 评论 -
59.用C++ 设计一个不能被继承的类
题目:用C++ 设计一个不能被继承的类。分析:这是Adobe 公司2007 年校园招聘的最新笔试题。这道题除了考察应聘者的C++ 基本功底外,还能考察反应能力,是一道很好的题目。在Java 中定义了关键字final ,被final 修饰的类不能被继承。但在C++ 中没有f转载 2011-08-12 16:10:33 · 537 阅读 · 0 评论 -
有1,2,3一直到n的无序数组,排序
题目:有1,2,3,..n 的无序整数数组,求排序算法。 时间复杂度 O(n) 空间复杂度O(1) 分析: 对于一般数组的排序显然 O(n) 是无法完成的。 既然题目这样要求,肯定原先的数组有一定的规律,让人们去寻找一种机会。原创 2011-09-15 16:18:34 · 3010 阅读 · 0 评论 -
37.最长字符串链接
有n个长为m+1的字符串,如果某个字符串的最后m个字符与某个字符串的前m个字符匹配,则两个字符串可以联接,问这n个字符串最多可以连成一个多长的字符串,如果出现循环,则返回错误。 思路 :分析一下,将各个字符串作为一个节点,首尾链接就好比是一条边,将两个节点连接起来,于是问题就变成原创 2011-07-27 10:39:43 · 3005 阅读 · 2 评论 -
32.交换使两个序列差最小
题目: 有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。例如: var a=[100,99,98,1,2, 3];var b=[1, 2, 3, 4,5,40];被PASS的思路一:原创 2011-07-25 11:20:06 · 2379 阅读 · 3 评论 -
28.整数的二进制表示中1 的个数
这一题好像很经典啊,5月分腾讯面试的时候还问过这个题目,而且这个题在笔试里也出过,只不过是形式变了! 题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。分析:这是一道很基本的考查位运算的面试题。包括微软在内的…原创 2011-07-20 21:42:12 · 649 阅读 · 0 评论 -
9.判断整数序列是不是二元查找树的后序遍历结果
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / \ 6 10 / \原创 2011-07-14 10:23:32 · 509 阅读 · 0 评论 -
5.查找最小的k个元素
题目:输入n个整数,输出其中最小的k个。例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。分析:这道题最简单的思路莫过于把输入的n个整数排序,这样排在最前面的k个数就是最小的k个数。只是这种思路的时间复杂度为O(nlogn)。我们试着寻找更快的解原创 2011-07-13 13:09:57 · 554 阅读 · 0 评论 -
1.二元查找树转变成排序的双向链表
微软、谷歌、百度等公司经典面试100题作者:July、Sorehead。时间:二零一一年三月二十五日。出处:http://blog.csdn.net/v_JULY_v原创 2011-04-21 22:07:00 · 530 阅读 · 0 评论 -
3.求子数组的最大和
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10原创 2011-07-12 10:08:07 · 369 阅读 · 0 评论 -
10.翻转句子中单词的顺序
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。分析:由于编写字符串相关代码能够反映程序员的编程能力和编程习原创 2011-07-14 11:29:38 · 723 阅读 · 0 评论 -
2.设计包含min函数的栈
题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1) 借助辅助栈,保存最小值,且随时更新辅助栈中的元素。如先后,push 2 6 4 1 5stack A stack B(辅助栈)4原创 2011-07-03 19:00:14 · 370 阅读 · 0 评论 -
4.在二元树中找出和为某一值的所有路径
题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数22和如下二元树 10原创 2011-07-12 12:18:10 · 419 阅读 · 0 评论 -
18.圆圈中最后剩下的数字
题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。分析:既然题目有一个数字圆圈,很自然原创 2011-07-17 16:19:30 · 748 阅读 · 0 评论 -
13.查找链表中倒数第k个结点
题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。链表结点定义如下: struct ListNode{ int m_nKey; ListNode* m_pNext;};分析:为了得到倒数第k个结点,很自然的想法原创 2011-07-16 13:00:27 · 869 阅读 · 0 评论 -
14.在排序数组中查找和为给定值的两个数字
题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。分析:如果我原创 2011-07-17 09:59:12 · 773 阅读 · 0 评论 -
16.从上往下遍历二元树
题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。 例如输入 8 / \ 6 10 /\ /\5 7 9 11输出8 6 10 5 7 9 11。分析:这曾是微软的一道面试题。原创 2011-07-17 11:24:47 · 493 阅读 · 0 评论 -
1000!末尾 有几个0
题目:1000!末尾有几个0 1到1000中2的个数远多于5的个数,2*5可得到一个0。所以求得1到1000中有多少个5就可以求得1000!的末尾有几个0. 分析5的1次幂5的倍数增加1个0 (5,10,15,20,25,30,.....)5的2次幂原创 2011-09-19 10:15:24 · 6861 阅读 · 0 评论