微软笔试面试题集锦
2011-10-13 15:57
218 查看
(一)编程实现两个正整数的除法
编程实现两个正整数的除法,当然不能用除法操作符
想法是这样的:被除数不断减去含除数的最大2^n倍数。例如,200/5,那么以此为200-5*2^5=40 result = 2^5 =32 ,40-5*2^3=0 result=32+2^3 = 40。所以结果为40.
问题扩展:
如果需要测试上面这个函数,需要哪些测试用例?
1)正负数的组合
2)除数与被除数大小组合
(二) 一块长方形的蛋糕,其中有一个小长方形的空洞(角度任意)。使用一把直刀,如何一刀将蛋糕切成相等的两份?
回答:通过长方形中心的的任意直线都能将长方形等分,所以连接两个长方形的中心点的直线可以等分这个蛋糕。
(三)写程序找出二叉树的深度
一个树的深度等于max(左子树深度,右子树深度)+1。可以使用递归实现。
编程实现两个正整数的除法,当然不能用除法操作符
想法是这样的:被除数不断减去含除数的最大2^n倍数。例如,200/5,那么以此为200-5*2^5=40 result = 2^5 =32 ,40-5*2^3=0 result=32+2^3 = 40。所以结果为40.
int div(const int x, const int y) { int left_num = x; int result = 0; while (left_num >= y) { int multi = 1; while (y * multi <= (left_num >> 1)) { multi = multi << 1; } result += multi; left_num -= y * multi; } return result; }
问题扩展:
如果需要测试上面这个函数,需要哪些测试用例?
1)正负数的组合
2)除数与被除数大小组合
(二) 一块长方形的蛋糕,其中有一个小长方形的空洞(角度任意)。使用一把直刀,如何一刀将蛋糕切成相等的两份?
回答:通过长方形中心的的任意直线都能将长方形等分,所以连接两个长方形的中心点的直线可以等分这个蛋糕。
(三)写程序找出二叉树的深度
一个树的深度等于max(左子树深度,右子树深度)+1。可以使用递归实现。
struct Node { Node* left; Node* right; }; int GetDepth(Node* root) { if (NULL == root) { return 0; } int left_depth = GetDepth(root->left); int right_depth = GetDepth(root->right); return left_depth > right_depth ? left_depth + 1 : right_depth + 1; }
相关文章推荐
- 微软笔试面试题集锦 --留着自己慢慢研究啊
- 微软笔试面试题集锦
- 微软笔试面试题集锦
- 微软笔试面试题集锦
- 微软笔试面试题集锦
- 微软笔试面试题集锦
- [分类整理III]微软等100题系列V0.1版之三:栈、堆、队列面试题集锦
- [分类整理IV]微软等100题系列V0.1版:字符串+数组面试题集锦
- 各大IT公司校园招聘程序猿笔试、面试题集锦
- C、C++笔试题、面试题集锦
- 各大IT公司校园招聘程序猿笔试、面试题集锦
- 一些看起来简单做起来难的程序员笔试面试题集锦
- 微软笔试和面试题(技术类)
- [面试] 各大IT公司校园招聘程序猿笔试、面试题集锦
- [分类整理I]微软等100题系列V0.1版:c/c++基础面试题集锦
- 微软笔试和面试题
- [面试] 各大IT公司校园招聘程序猿笔试、面试题集锦
- 面试题集锦和答案收集 - 微软,谷歌,华为,阿里巴巴等
- 微软笔试面试题
- [分类整理I]微软等100题系列V0.1版:c/c++基础面试题集锦