由买买提看人间百态

topics

全部话题 - 话题: bstradd
(共0页)
f****4
发帖数: 1359
1
来自主题: JobHunting版 - 面经-facebook, amazon,telenav, quantcast
第一题,如果你把a,b数组当作参数传进去的话,不传数组长度进去,bstradd怎么能
知道数组多长?
bstradd(a, b)里面的 sizeof(a)/sizeof(char) == 1
p**********s
发帖数: 115
2
来自主题: JobHunting版 - 面经-facebook, amazon,telenav, quantcast
都是第一轮就挂了,sign。。。
facebook网上投的简历,半年以后hr联系,两道程序题:
1 二进制加法
/**
* i.e.
*
* char a[] = "11";
* char b[] = "1";
* char *c = bstradd(a, b); // c is a pointer to "100"
**/
2 分层遍历二叉树
amazon网上投简历,两个月后hr联系。第一个interview,很容易的题,可惜没准备好
。找bst里最大的第n个node
telenav网上投的简历。最基本的c++题,全答对了,后面也没音信了。唯一一道算法粘
边的题,判断某个数是否是2的power(if(n&(n-1) == 0))。
quantcast也是网上投的简历。背景很match,面试的时候我在家里,信号有问题。两边
声音都听不听出,超级遗憾。
1 写程序的流程(设计,coding,test)
2 如何test
3 如何实现reference counting
i**********e
发帖数: 1145
3
来自主题: JobHunting版 - 面经-facebook, amazon,telenav, quantcast
你的代码好像有 bug,没有 '\0' 终止 string output.
我尝试写一下,思路跟两个数相加,不可利用 + operator 怎么做。
唯一一个问题就是 out = "0110",前面的 0 是无可避免,除非数组往前挪一位。
char *bstradd(char a[], char b[]) {
int n1 = strlen(a);
int n2 = strlen(b);
int len = max(n1, n2) + 1;
char *out = new char[len + 1];
out[len] = '\0';
int carry = 0;
for (int i = 0; i < len; i++) {
int dig1 = (i < n1) ? a[n1 - i - 1] - '0' : 0;
int dig2 = (i < n2) ? b[n2 - i - 1] - '0' : 0;
int sum = dig1 ^ dig2 ^ carry;
carry = (dig1 & dig2) | (di... 阅读全帖
K******g
发帖数: 1870
4
来自主题: JobHunting版 - 这道题好像有点难
二进制加法
/**
* i.e.
*
* char a[] = "11";
* char b[] = "1";
* char *c = bstradd(a, b); // c is a pointer to "100"
**/
你这道题看上去简单,但是写起来好像很麻烦。是一道FB的面试题。
d**e
发帖数: 6098
5
来自主题: JobHunting版 - 这道题好像有点难
careercup 150 上面好像有道类似的,但就是十进制加法。
我下面的解法结果的最高位有可能为0,比如101 + 1结果会出现0110
#include
#include
using namespace std;
char badd(int x, int y, int & carry)
{
int z;
int v = x + y + carry;
if(v == 0)
{
z = 0;
carry = 0;
}
else if(v == 1)
{
z = 1;
carry = 0;
}
else if(v == 2)
{
z = 0;
carry = 1;
}
else
{
z = 1;
carry = 1;
}
return '0' + z;
}
char * bstradd(char * a, char * b)
{
char * c = 0;
(共0页)