z*********8 发帖数: 2070 | 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没有任何特征, 即可以有多个子节点, 父节点和左右子节点也
没有大小关系。但 每个节点 |
j*****y 发帖数: 1071 | 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
|
d**********x 发帖数: 4083 | 3 binary encoding
【在 j*****y 的大作中提到】 : 8瓶酒一瓶有毒, 用人测试。 每次测试结果8小时后才会得出, 而你只有8个小时 : 的时间。 问最少需要几人并如何测试? : 这道题怎么做? 我想到的是需要7个人阿,7个人每人测试一瓶,如果都没事的话,另 : 外一瓶就有毒 : : 1:删除一个单链中的节点, 不知该链表的head : 2: 50个白石头 50个黑石头, 放到两个盒子里。 任选一个盒子中的任意一个石头, : 怎么摆放石头使得拿到白石头的概率最大? : 3: 两个骰子, 一个是1-6的正常骰子, 问怎么设置另一个骰子六个面上的数值, 使 : 得掷出两个骰子之后的和在1-12之内均匀分布。
|
w**********o 发帖数: 140 | 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 |
j*****y 发帖数: 1071 | 5 好厉害:)
每个人负责测试一个 bit
【在 w**********o 的大作中提到】 : 是3个人,如果你学过数的2进制编码,就容易说了: : 8瓶酒的编码如下: : 0: 000 : 1: 001 : 2: 010 : 3: 011 : 4: 100 : 5: 101 : 6: 110 : 7: 111
|
l*******b 发帖数: 2586 | 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
|
w****a 发帖数: 710 | 7 楼主你面的是什么职位啊,是SDE么?为什么这么多概率和IQ题 |
e***s 发帖数: 799 | 8 1:删除一个单链中的节点, 不知该链表的head
这个怎么搞?只知道要删除那个节点的指针吗? |
e***s 发帖数: 799 | 9 这些题我最弱了,请大牛指正
2: 50个白石头 50个黑石头, 放到两个盒子里。 任选一个盒子中的任意一个石头,
怎么摆放石头使得拿到白石头的概率最大?
一个盒子放一个白石头,其他49个白石头和50个黑石头放到一个盒子
3: 两个骰子, 一个是1-6的正常骰子, 问怎么设置另一个骰子六个面上的数值, 使
得掷出两个骰子之后的和在1-12之内均匀分布。
另外一个骰子是,0,0,0,6,6,6 |
w****a 发帖数: 710 | 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 : 这个怎么搞?只知道要删除那个节点的指针吗?
|
|
|
e***s 发帖数: 799 | 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;
|
j*****y 发帖数: 1071 | 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;
|
w****a 发帖数: 710 | 13 哪里问题?我传参传的引用阿
【在 j*****y 的大作中提到】 : 这个如果要删除的node是最后一个节点的话,有点问题阿?
|
j*****y 发帖数: 1071 | 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 的大作中提到】 : 哪里问题?我传参传的引用阿
|
w****a 发帖数: 710 | |
j*****y 发帖数: 1071 | 16 head->next 变成了 NULL吗? 如果用你的函数
【在 w****a 的大作中提到】 : 可以的,没问题。
|
w****a 发帖数: 710 | 17 可以的。指针传的引用进来。
【在 j*****y 的大作中提到】 : head->next 变成了 NULL吗? 如果用你的函数
|
j*****y 发帖数: 1071 | 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 的大作中提到】 : 可以的。指针传的引用进来。
|
w****a 发帖数: 710 | 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){
|
w****a 发帖数: 710 | 20 所以还是改一下函数吧,如果输入node的next是空直接报错。不允许删除最后一个结点
。只能这样了。 |
|
|
j*****y 发帖数: 1071 | 21 所以最后一个节点还是没办法处理的
【在 w****a 的大作中提到】 : 原来你是这么调用的啊。那肯定不可以。 : deleteNode(head->next);直接这么写才可以。 : 不然只是让p变成NULL了。 : 不过话说确实没有办法处理最后一个节点的情况了。因为程序里指针大多调用的都是副 : 本。
|
w****a 发帖数: 710 | 22 恩,对。
【在 j*****y 的大作中提到】 : 所以最后一个节点还是没办法处理的
|
t*********h 发帖数: 941 | 23 筛子这个什么原理
【在 e***s 的大作中提到】 : 这些题我最弱了,请大牛指正 : 2: 50个白石头 50个黑石头, 放到两个盒子里。 任选一个盒子中的任意一个石头, : 怎么摆放石头使得拿到白石头的概率最大? : 一个盒子放一个白石头,其他49个白石头和50个黑石头放到一个盒子 : 3: 两个骰子, 一个是1-6的正常骰子, 问怎么设置另一个骰子六个面上的数值, 使 : 得掷出两个骰子之后的和在1-12之内均匀分布。 : 另外一个骰子是,0,0,0,6,6,6
|
t*********h 发帖数: 941 | 24 figured. thanx
【在 t*********h 的大作中提到】 : 筛子这个什么原理
|
a********m 发帖数: 15480 | 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
|
w****a 发帖数: 710 | 26 我也觉得很奇怪 为什么他很出了那么多。
【在 a********m 的大作中提到】 : iq题目是被禁止的。你可以告诉hr让it重新安排面试。
|
G****A 发帖数: 4160 | 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;
|
j*****y 发帖数: 1071 | 28 这是我翻出来一个老帖子,06年的google面经,呵呵,不好意思,那时候估计是可以的
:)
【在 w****a 的大作中提到】 : 我也觉得很奇怪 为什么他很出了那么多。
|
a********m 发帖数: 15480 | 29 哦。对。俺说怎么看着很怪,没注意时间。。。赫赫。
【在 j*****y 的大作中提到】 : 这是我翻出来一个老帖子,06年的google面经,呵呵,不好意思,那时候估计是可以的 : :)
|