b*******y 发帖数: 232 | 1 其实挺简单的,都是版上常见题目,不过还是没写出bug free的程序,抓到了两个小
bug...据说facebook比较看重bug free
本来拿到心仪的offer之后不打算面了,但因为我的时间问题,已经reschedule多次了
,不好意思再说不面,而且facebook挺好的,就面了
先让我讲了一堆research的课题,然后问我希望在facebook里做什么样子的工作
编程题1
level by level,每个level是一行,打印binary tree
(careercup上的题,可以用两个queue来交互存储level;也可以用一个queue存储pair<
node*,level>信息)
编程题2
一个数组,有正有负,如果数组中任何三个不同的数之和等于0,则返回true;不然就返
回false
(就是先sort,然后逐一选定一个元素,剩下的元素头尾两个指针移动判断之和是否大
于小于或者等于选定那个元素的负数) |
d*******d 发帖数: 2050 | 2 还好,题目挺容易的.
不过f确实要求不能有错,要求写出来直接能compile,run出结果. |
s******n 发帖数: 226 | 3 编程题1:
one vector is far enough.
pair<
【在 b*******y 的大作中提到】 : 其实挺简单的,都是版上常见题目,不过还是没写出bug free的程序,抓到了两个小 : bug...据说facebook比较看重bug free : 本来拿到心仪的offer之后不打算面了,但因为我的时间问题,已经reschedule多次了 : ,不好意思再说不面,而且facebook挺好的,就面了 : 先让我讲了一堆research的课题,然后问我希望在facebook里做什么样子的工作 : 编程题1 : level by level,每个level是一行,打印binary tree : (careercup上的题,可以用两个queue来交互存储level;也可以用一个queue存储pair< : node*,level>信息) : 编程题2
|
b*******y 发帖数: 232 | 4 恩,反正我也不care了...
【在 d*******d 的大作中提到】 : 还好,题目挺容易的. : 不过f确实要求不能有错,要求写出来直接能compile,run出结果.
|
B*******1 发帖数: 2454 | 5 facebook 的人都不需要用debugger的?
【在 d*******d 的大作中提到】 : 还好,题目挺容易的. : 不过f确实要求不能有错,要求写出来直接能compile,run出结果.
|
d*******d 发帖数: 2050 | 6 他们没有AE,而且产品周期特别短,开发速度要特别快.
【在 B*******1 的大作中提到】 : facebook 的人都不需要用debugger的?
|
x*******7 发帖数: 223 | 7 research会问很detail吗?会扩展问相关知识点吗?
做什么工作这个是答都可以吗?fb听说是进去后6个月rotation然后选组,如果现在说
想进什么组是不是显得太草率?
pair<
【在 b*******y 的大作中提到】 : 其实挺简单的,都是版上常见题目,不过还是没写出bug free的程序,抓到了两个小 : bug...据说facebook比较看重bug free : 本来拿到心仪的offer之后不打算面了,但因为我的时间问题,已经reschedule多次了 : ,不好意思再说不面,而且facebook挺好的,就面了 : 先让我讲了一堆research的课题,然后问我希望在facebook里做什么样子的工作 : 编程题1 : level by level,每个level是一行,打印binary tree : (careercup上的题,可以用两个queue来交互存储level;也可以用一个queue存储pair< : node*,level>信息) : 编程题2
|
A**u 发帖数: 2458 | 8 第2题 怎么做呢
多快呢
pair<
【在 b*******y 的大作中提到】 : 其实挺简单的,都是版上常见题目,不过还是没写出bug free的程序,抓到了两个小 : bug...据说facebook比较看重bug free : 本来拿到心仪的offer之后不打算面了,但因为我的时间问题,已经reschedule多次了 : ,不好意思再说不面,而且facebook挺好的,就面了 : 先让我讲了一堆research的课题,然后问我希望在facebook里做什么样子的工作 : 编程题1 : level by level,每个level是一行,打印binary tree : (careercup上的题,可以用两个queue来交互存储level;也可以用一个queue存储pair< : node*,level>信息) : 编程题2
|
b*******y 发帖数: 232 | 9 括号里面都写了阿,这样就不需要额外空间,复杂度是O(n^2)
【在 A**u 的大作中提到】 : 第2题 怎么做呢 : 多快呢 : : pair<
|
A**u 发帖数: 2458 | 10 明白了 thanks.
bless
【在 b*******y 的大作中提到】 : 括号里面都写了阿,这样就不需要额外空间,复杂度是O(n^2)
|
|
|
x*******7 发帖数: 223 | 11 sort可以直接用stl里面的sort 函数吗?
【在 b*******y 的大作中提到】 : 括号里面都写了阿,这样就不需要额外空间,复杂度是O(n^2)
|
b*******y 发帖数: 232 | 12 这些在面试中都不是问题,重要的是沟通
你可以问面试官
【在 x*******7 的大作中提到】 : sort可以直接用stl里面的sort 函数吗?
|
f*******t 发帖数: 7549 | 13 第一题的code:
void printByLevel(Node *root) {
if(root == NULL)
return;
list l;
l.push_back(root);
int length = 1;
int level = 0;
while(length) {
cout << "Level " << level << ": ";
list::iterator it = l.begin();
for(int i = 0; i < length; i++) {
// Print current node
cout << (*it)->val << " ";
if((*it)->left)
l.push_back((*it)->left);
if((*it)->right)
l.push_back((*it)->right);
it++;
}
while(length--)
l.pop_front();
length = l.size();
level++;
cout << endl;
}
} |
Y**B 发帖数: 144 | 14 这种题目在电话里一边说一边在电脑上写还真tmd难...
如果是onsite的还好. |
k***t 发帖数: 276 | 15 每层后面加dummy入队列是不是比数长度要好一些。
当然还要加flag判断是否还有下一层,也不够直接简单。
【在 f*******t 的大作中提到】 : 第一题的code: : void printByLevel(Node *root) { : if(root == NULL) : return; : : list l; : l.push_back(root); : int length = 1; : int level = 0; : while(length) {
|
f*******t 发帖数: 7549 | 16 数长度有什么缺点?list这种structure,size()的时间是O(1)
【在 k***t 的大作中提到】 : 每层后面加dummy入队列是不是比数长度要好一些。 : 当然还要加flag判断是否还有下一层,也不够直接简单。
|
k***t 发帖数: 276 | 17 至少在现在的代码中,两层都在list里,没有边处理边删除。
而且那两个基于length的循环都可以去掉。
以上两条可能也 not a big deal, 只是个人感觉不太舒服。
【在 f*******t 的大作中提到】 : 数长度有什么缺点?list这种structure,size()的时间是O(1)
|
k***t 发帖数: 276 | 18 本人一直只写C,看过一点STL。欢迎大家 Code Review。谢谢。
觉得has_next_level flag 部分不够简单明了,但没有它不好
在输出中换行和终止加dummy node.
#include
using namespace std;
typedef struct TreeNode_ {
int value;
struct TreeNode_ *left;
struct TreeNode_ *right;
} TreeNode;
int level (TreeNode *root) {
queue Q;
TreeNode *cur, dummy;
bool has_next_level;
if (!root) return -1;
Q.push(root); Q.push(&dummy);
has_next_level = false;
while(!Q.empty()) {
cur = Q.front();
if (cur == &dummy) {
printf("\n"); Q.pop();
if (!has_next_level) return 1;
Q.push(&dummy); has_next_level = false;
continue;
}
printf("%d ", cur->value);
if (cur->left) {
Q.push(cur->left); has_next_level = true;
}
if (cur->right) {
Q.push(cur->right); has_next_level = true;
}
Q.pop();
}
return 1;
}
【在 k***t 的大作中提到】 : 每层后面加dummy入队列是不是比数长度要好一些。 : 当然还要加flag判断是否还有下一层,也不够直接简单。
|