Redian新闻
>
google面试全过程(简装版)
avatar
google面试全过程(简装版)# JobHunting - 待字闺中
z*8
1
一面贴过了, 从二面开始, 只贴技术问题
1:删除一个单链中的节点, 不知该链表的head
2: 50个白石头 50个黑石头, 放到两个盒子里。 任选一个盒子中的任意一个石头,
怎么摆放石头使得拿到白石头的概率最大?
3: 两个骰子, 一个是1-6的正常骰子, 问怎么设置另一个骰子六个面上的数值, 使
得掷出两个骰子之后的和在1-12之内均匀分布。
然后onsite
第一轮
1: 给一个array和一个target value, 如果写一个函数, 如果该array里存在两个数之
和为target, return true; else return false
2: 8瓶酒一瓶有毒, 用人测试。 每次测试结果8小时后才会得出, 而你只有8个小时
的时间。 问最少需要几人并如何测试?
第二轮
给一个文本, 然后给出几个关键词及他们所出现的位置,比如
this: 1, 16, 55....
is: 5, 33, 77...
要求找出最短的一段文章使其具备给出的关键词。
第三轮
给出一颗tree, 该tree没有任何特征, 即可以有多个子节点, 父节点和左右子节点也
没有大小关系。但 每个节点
avatar
j*y
2
8瓶酒一瓶有毒, 用人测试。 每次测试结果8小时后才会得出, 而你只有8个小时
的时间。 问最少需要几人并如何测试?
这道题怎么做? 我想到的是需要7个人阿,7个人每人测试一瓶,如果都没事的话,另
外一瓶就有毒

1:删除一个单链中的节点, 不知该链表的head
2: 50个白石头 50个黑石头, 放到两个盒子里。 任选一个盒子中的任意一个石头,
怎么摆放石头使得拿到白石头的概率最大?
3: 两个骰子, 一个是1-6的正常骰子, 问怎么设置另一个骰子六个面上的数值, 使
得掷出两个骰子之后的和在1-12之内均匀分布。
然后onsite
第一轮
1: 给一个array和一个target value, 如果写一个函数, 如果该array里存在两个数之
和为target, return true; else return false
2: 8瓶酒一瓶有毒, 用人测试。 每次测试结果8小时后才会得出, 而你只有8个小时
的时间。 问最少需要几人并如何测试?
第二轮
给一个文本, 然后给出几个关键词及他们所出现的位置,比如
this: 1, 16, 55....
is: 5, 33, 77...
要求找出最短的一段文章使其具备给出的关键词。
第三轮
给出一颗tree, 该tree没有任何特征, 即可以有多个子节点, 父节点和左右子节点也
没有大小关系。但 每个节点的值不相等。
现给出几个值, 如(12, 24) 请找出从根节点到值为12 和24的节点的subtree.
然后一个很无聊的IQ题, 我忘了。。。
第四轮
java里面array 和vector的区别
数据库里如何实现(解决?)一对多的关系?
给一个array, 再给一个sh值, 设计函数将数组内的所有元素向右偏移sh个位置(将数
组看成一个圈)。

【在 z*********8 的大作中提到】
: 一面贴过了, 从二面开始, 只贴技术问题
: 1:删除一个单链中的节点, 不知该链表的head
: 2: 50个白石头 50个黑石头, 放到两个盒子里。 任选一个盒子中的任意一个石头,
: 怎么摆放石头使得拿到白石头的概率最大?
: 3: 两个骰子, 一个是1-6的正常骰子, 问怎么设置另一个骰子六个面上的数值, 使
: 得掷出两个骰子之后的和在1-12之内均匀分布。
: 然后onsite
: 第一轮
: 1: 给一个array和一个target value, 如果写一个函数, 如果该array里存在两个数之
: 和为target, return true; else return false

avatar
d*x
3
binary encoding

【在 j*****y 的大作中提到】
: 8瓶酒一瓶有毒, 用人测试。 每次测试结果8小时后才会得出, 而你只有8个小时
: 的时间。 问最少需要几人并如何测试?
: 这道题怎么做? 我想到的是需要7个人阿,7个人每人测试一瓶,如果都没事的话,另
: 外一瓶就有毒
:
: 1:删除一个单链中的节点, 不知该链表的head
: 2: 50个白石头 50个黑石头, 放到两个盒子里。 任选一个盒子中的任意一个石头,
: 怎么摆放石头使得拿到白石头的概率最大?
: 3: 两个骰子, 一个是1-6的正常骰子, 问怎么设置另一个骰子六个面上的数值, 使
: 得掷出两个骰子之后的和在1-12之内均匀分布。

avatar
w*o
4
是3个人,如果你学过数的2进制编码,就容易说了:
8瓶酒的编码如下:
0: 000
1: 001
2: 010
3: 011
4: 100
5: 101
6: 110
7: 111
3个人分别喝3个位上为1的编码,所以:
第一个:1,3,5,7
第二个:2,3,6,7
第三个:4,5,6,7
把中毒的人的位填1的二进制数,就是毒酒的编号。
ref: http://www.i170.com/user/liangar/Article_72368
avatar
j*y
5
好厉害:)
每个人负责测试一个 bit

【在 w**********o 的大作中提到】
: 是3个人,如果你学过数的2进制编码,就容易说了:
: 8瓶酒的编码如下:
: 0: 000
: 1: 001
: 2: 010
: 3: 011
: 4: 100
: 5: 101
: 6: 110
: 7: 111

avatar
l*b
6
毒酒题. 小白鼠换成人了, 好狠呀, 哈哈

【在 z*********8 的大作中提到】
: 一面贴过了, 从二面开始, 只贴技术问题
: 1:删除一个单链中的节点, 不知该链表的head
: 2: 50个白石头 50个黑石头, 放到两个盒子里。 任选一个盒子中的任意一个石头,
: 怎么摆放石头使得拿到白石头的概率最大?
: 3: 两个骰子, 一个是1-6的正常骰子, 问怎么设置另一个骰子六个面上的数值, 使
: 得掷出两个骰子之后的和在1-12之内均匀分布。
: 然后onsite
: 第一轮
: 1: 给一个array和一个target value, 如果写一个函数, 如果该array里存在两个数之
: 和为target, return true; else return false

avatar
w*a
7
楼主你面的是什么职位啊,是SDE么?为什么这么多概率和IQ题
avatar
e*s
8
1:删除一个单链中的节点, 不知该链表的head
这个怎么搞?只知道要删除那个节点的指针吗?
avatar
e*s
9
这些题我最弱了,请大牛指正
2: 50个白石头 50个黑石头, 放到两个盒子里。 任选一个盒子中的任意一个石头,
怎么摆放石头使得拿到白石头的概率最大?
一个盒子放一个白石头,其他49个白石头和50个黑石头放到一个盒子
3: 两个骰子, 一个是1-6的正常骰子, 问怎么设置另一个骰子六个面上的数值, 使
得掷出两个骰子之后的和在1-12之内均匀分布。
另外一个骰子是,0,0,0,6,6,6
avatar
w*a
10
应该是吧,
void deleteNode(Node*& node){
if(!node) return;
if(!node->next){
delete node;
node = NULL;
}else{
node->val = node->next->val;
node->next = node->next->next;
delete node->next;
}
}

【在 e***s 的大作中提到】
: 1:删除一个单链中的节点, 不知该链表的head
: 这个怎么搞?只知道要删除那个节点的指针吗?

avatar
e*s
11
谢谢,学习了

【在 w****a 的大作中提到】
: 应该是吧,
: void deleteNode(Node*& node){
: if(!node) return;
: if(!node->next){
: delete node;
: node = NULL;
: }else{
: node->val = node->next->val;
: node->next = node->next->next;
: delete node->next;

avatar
j*y
12
这个如果要删除的node是最后一个节点的话,有点问题阿?

【在 w****a 的大作中提到】
: 应该是吧,
: void deleteNode(Node*& node){
: if(!node) return;
: if(!node->next){
: delete node;
: node = NULL;
: }else{
: node->val = node->next->val;
: node->next = node->next->next;
: delete node->next;

avatar
w*a
13
哪里问题?我传参传的引用阿

【在 j*****y 的大作中提到】
: 这个如果要删除的node是最后一个节点的话,有点问题阿?
avatar
j*y
14
引用也不行吧?
比如
struct Node
{
int val;
Node * next;
Node(int value):val(value), next(0){}
}
Node *head = new Node(1);
head->next = new Node(2);
我现在给你 Node *p = head->next;
把这个 p传给你的函数可以正确的删掉list最后的那个node吗?

【在 w****a 的大作中提到】
: 哪里问题?我传参传的引用阿
avatar
w*a
15
可以的,没问题。
avatar
j*y
16
head->next 变成了 NULL吗? 如果用你的函数

【在 w****a 的大作中提到】
: 可以的,没问题。
avatar
w*a
17
可以的。指针传的引用进来。

【在 j*****y 的大作中提到】
: head->next 变成了 NULL吗? 如果用你的函数
avatar
j*y
18
你跑这个程序试试?
#include
using namespace std;
struct Node
{
int val;
Node * next;
Node(int value):val(value), next(0){}
};
void deleteNode(Node*& node){
if(!node) return;
if(!node->next){
delete node;
node = NULL;
}else{
node->val = node->next->val;
node->next = node->next->next;
delete node->next;
}
}
int main()
{
Node *head = new Node(1);
head->next = new Node(2);
Node *p = head->next;
deleteNode(p);
cout << (long long)head->next <}

【在 w****a 的大作中提到】
: 可以的。指针传的引用进来。
avatar
w*a
19
原来你是这么调用的啊。那肯定不可以。
deleteNode(head->next);直接这么写才可以。
不然只是让p变成NULL了。
不过话说确实没有办法处理最后一个节点的情况了。因为程序里指针大多调用的都是副
本。

【在 j*****y 的大作中提到】
: 你跑这个程序试试?
: #include
: using namespace std;
: struct Node
: {
: int val;
: Node * next;
: Node(int value):val(value), next(0){}
: };
: void deleteNode(Node*& node){

avatar
w*a
20
所以还是改一下函数吧,如果输入node的next是空直接报错。不允许删除最后一个结点
。只能这样了。
avatar
j*y
21
所以最后一个节点还是没办法处理的

【在 w****a 的大作中提到】
: 原来你是这么调用的啊。那肯定不可以。
: deleteNode(head->next);直接这么写才可以。
: 不然只是让p变成NULL了。
: 不过话说确实没有办法处理最后一个节点的情况了。因为程序里指针大多调用的都是副
: 本。

avatar
w*a
22
恩,对。

【在 j*****y 的大作中提到】
: 所以最后一个节点还是没办法处理的
avatar
t*h
23
筛子这个什么原理

【在 e***s 的大作中提到】
: 这些题我最弱了,请大牛指正
: 2: 50个白石头 50个黑石头, 放到两个盒子里。 任选一个盒子中的任意一个石头,
: 怎么摆放石头使得拿到白石头的概率最大?
: 一个盒子放一个白石头,其他49个白石头和50个黑石头放到一个盒子
: 3: 两个骰子, 一个是1-6的正常骰子, 问怎么设置另一个骰子六个面上的数值, 使
: 得掷出两个骰子之后的和在1-12之内均匀分布。
: 另外一个骰子是,0,0,0,6,6,6

avatar
t*h
24
figured. thanx

【在 t*********h 的大作中提到】
: 筛子这个什么原理
avatar
a*m
25
iq题目是被禁止的。你可以告诉hr让it重新安排面试。

【在 z*********8 的大作中提到】
: 一面贴过了, 从二面开始, 只贴技术问题
: 1:删除一个单链中的节点, 不知该链表的head
: 2: 50个白石头 50个黑石头, 放到两个盒子里。 任选一个盒子中的任意一个石头,
: 怎么摆放石头使得拿到白石头的概率最大?
: 3: 两个骰子, 一个是1-6的正常骰子, 问怎么设置另一个骰子六个面上的数值, 使
: 得掷出两个骰子之后的和在1-12之内均匀分布。
: 然后onsite
: 第一轮
: 1: 给一个array和一个target value, 如果写一个函数, 如果该array里存在两个数之
: 和为target, return true; else return false

avatar
w*a
26
我也觉得很奇怪 为什么他很出了那么多。

【在 a********m 的大作中提到】
: iq题目是被禁止的。你可以告诉hr让it重新安排面试。
avatar
G*A
27
你的else block里面的语句感觉不对阿...
不如直接这样:
void deleteNode(Node*& node){
if(!node)
return;
Node* temp = node;
node = node->next;
delete temp;
}
/********/
testing case #1: Pass!
input: 1->2->3->4
deleteNode(1->next);
output:1->3->4
testing case #2: Pass!
input: 1->2->3->4
deleteNode(3->next);
output:1->2->3

【在 w****a 的大作中提到】
: 应该是吧,
: void deleteNode(Node*& node){
: if(!node) return;
: if(!node->next){
: delete node;
: node = NULL;
: }else{
: node->val = node->next->val;
: node->next = node->next->next;
: delete node->next;

avatar
j*y
28
这是我翻出来一个老帖子,06年的google面经,呵呵,不好意思,那时候估计是可以的
:)

【在 w****a 的大作中提到】
: 我也觉得很奇怪 为什么他很出了那么多。
avatar
a*m
29
哦。对。俺说怎么看着很怪,没注意时间。。。赫赫。

【在 j*****y 的大作中提到】
: 这是我翻出来一个老帖子,06年的google面经,呵呵,不好意思,那时候估计是可以的
: :)

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。