一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

一亩三分地官方iOS手机应用下载
查看: 1276|回复: 18
收起左侧

google 9.18 电面

[复制链接] |试试Instant~ |关注本帖
宝贝忆彼岸 发表于 2015-9-19 03:25:42 | 显示全部楼层 |阅读模式

2015(7-9月) 码农类 硕士 全职@Google - 内推 - 技术电面 |Otherfresh grad应届毕业生

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
刚刚面完,紧张。。。。
lz运气好,全都是leetcode原题呀,但是感觉自己口语还是渣,感觉很多时候都没有把自己的想法表达清楚
下面是干货,感觉和看的面经不是一个档次,太简单。。。。各位看官也就随便看看,可能不具有代表性
1.plusOne leetcode
2.两个array相加,返回array
3.两个array相乘,返回array
三个写完+ test case 刚好45分钟,最后一个test case没写完,小哥告诉我没有时间了
不知道有没有onsite,虽然题目都做出来了,但是感觉交流有点问题,中间一度小哥问我还在不在。。。。让我和他交流一下想法。。。
大米,求RP,求onsite啊



补充内容 (2015-9-19 03:50):
HR效率好高,刚刚email说过了准备onsite。。。为onsite攒人品,求好运

评分

2

查看全部评分

本帖被以下淘专辑推荐:

colfighter 发表于 2015-9-19 10:38:36 | 显示全部楼层
关注一亩三分地公众号:
Warald_一亩三分地
楼主能说下第三题么?谢啦
回复 支持 反对

使用道具 举报

leixiang5 发表于 2015-9-19 10:50:48 | 显示全部楼层
关注一亩三分地微博:
Warald
都做到三道题了。。面的肯定就是不错了。
回复 支持 反对

使用道具 举报

kelvinzhong 发表于 2015-9-19 11:55:30 | 显示全部楼层
之前一直没写过表达式求值包含加减乘除括号的情况, 现在写一写,代码不知道该怎么写得更简洁了, 求指点
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴是用递归加stack做的,递归处理括号,stack处理乘除

  1. . 鍥磋鎴戜滑@1point 3 acres
  2. int eval(string &expr, int &pos) {
  3.         stack<char> s_op;
  4.         stack<int> s_num;-google 1point3acres
  5.         for (int i = pos; i < expr.length(); i ++) {
  6.                 if (expr[i] == '+' || expr[i] == '-' || expr[i] == '*' || expr[i] == '/') {
  7.                         s_op.push(expr[i]);
  8.                 } else if (expr[i] == '(') {
  9.                         i ++;
  10.                         return eval(expr, i);
  11.                 } else if (expr[i] == ')') {
  12.                         break;
  13.                 } else if (expr[i] <= '9' && expr[i] >= '0') {. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  14.                         int tmp = 0;. Waral 鍗氬鏈夋洿澶氭枃绔,
  15.                         while (i < expr.length() && expr[i] <= '9' && expr[i] >= '0') {
  16.                                 tmp = tmp * 10 + expr[i] - '0';. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  17.                                 i ++;
    . from: 1point3acres.com/bbs
  18.                         }
  19.                         i --;. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  20.                         if (!s_op.empty()) {
  21.                                 if (s_op.top() == '*') {
  22.                                         s_op.pop();
  23.                                         int num1 = s_num.top();
  24.                                         s_num.pop();. From 1point 3acres bbs
  25.                                         tmp = num1 * tmp;. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  26.                                 } else if (s_op.top() == '/') {
  27.                                         s_op.pop();
  28.                                         int num1 = s_num.top();
  29.                                         s_num.pop();. 鍥磋鎴戜滑@1point 3 acres
  30.                                         tmp = num1 / tmp;
  31.                                 }
  32.                         }
  33.                         s_num.push(tmp);. from: 1point3acres.com/bbs
  34.                 }. 1point3acres.com/bbs
  35.         }. 鍥磋鎴戜滑@1point 3 acres

  36.         while (!s_op.empty()) {. more info on 1point3acres.com
  37.                 int num2 = s_num.top();
  38.                 s_num.pop();
  39.                 int num1 = s_num.top();. 1point 3acres 璁哄潧
  40.                 s_num.pop();
  41.                 char op = s_op.top();
  42.                 s_op.pop();
  43.                 if (op == '+') {
  44.                         s_num.push(num1 + num2);
  45.                 } else if (op == '-') {
  46.                         s_num.push(num1 - num2);
  47.                 }
  48.         }
  49.         return s_num.top();
  50. }

  51. int eval(string expr) {
  52.         int i = 0;
  53.         return eval(expr, i);. 鍥磋鎴戜滑@1point 3 acres
  54. }
  55. . more info on 1point3acres.com
  56. void test() {. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  57.         string expr = "1+2+3"; // 6
  58.         cout << eval(expr) << endl;
  59.         expr = "1*2 + 3 * 5 - 4 / 2"; // 15
  60.         cout << eval(expr) << endl;
  61.         expr = "1 + (3 - 4) * (9 / 3) - 3"; // -5. Waral 鍗氬鏈夋洿澶氭枃绔,
  62.         cout << eval(expr) << endl;
  63. }
复制代码

补充内容 (2015-9-19 11:56):. 鍥磋鎴戜滑@1point 3 acres
这个方法还不能处理负数形式
回复 支持 反对

使用道具 举报

kelvinzhong 发表于 2015-9-19 12:19:04 | 显示全部楼层
刚刚的代码有bug, 给跪
这里贴个没错的

  1. int eval(string &expr, int &i) {
  2.         stack<char> s_op;
  3.         stack<int> s_num;.1point3acres缃
  4.         for (;i < expr.length(); i ++) {. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  5.                 if (expr[i] == '+' || expr[i] == '-' || expr[i] == '*' || expr[i] == '/') {. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  6.                         s_op.push(expr[i]);
  7.                 } else if (expr[i] == '(') {
  8.                         i ++;
  9.                         int tmp = eval(expr, i);
  10.                         if (!s_op.empty()) {
  11.                                 if (s_op.top() == '*') {
  12.                                         s_op.pop();.1point3acres缃
  13.                                         int num1 = s_num.top();
  14.                                         s_num.pop();
  15.                                         tmp = num1 * tmp;
  16.                                 } else if (s_op.top() == '/') {
  17.                                         s_op.pop();
  18.                                         int num1 = s_num.top();
  19.                                         s_num.pop();
  20.                                         tmp = num1 / tmp;
  21.                                 }
  22.                         }
  23.                         s_num.push(tmp);
  24.                 } else if (expr[i] == ')') {
  25.                         break;
  26.                 } else if (expr[i] <= '9' && expr[i] >= '0') {
  27.                         int tmp = 0;
  28.                         while (i < expr.length() && expr[i] <= '9' && expr[i] >= '0') {
  29.                                 tmp = tmp * 10 + expr[i] - '0';
  30.                                 i ++;
  31.                         }
  32.                         i --;
  33.                         if (!s_op.empty()) {
  34.                                 if (s_op.top() == '*') {
  35.                                         s_op.pop();
  36.                                         int num1 = s_num.top();
  37.                                         s_num.pop();
  38.                                         tmp = num1 * tmp;.鏈枃鍘熷垱鑷1point3acres璁哄潧
  39.                                 } else if (s_op.top() == '/') {
  40.                                         s_op.pop();
  41.                                         int num1 = s_num.top();
  42.                                         s_num.pop();
  43.                                         tmp = num1 / tmp;
  44.                                 }
  45.                         }
  46.                         s_num.push(tmp);
  47.                 }
  48.         }

  49.         while (!s_op.empty()) {
  50.                 int num2 = s_num.top();
  51.                 s_num.pop();
  52.                 int num1 = s_num.top();
  53.                 s_num.pop();
  54.                 char op = s_op.top();
  55.                 s_op.pop();
  56.                 if (op == '+') {. more info on 1point3acres.com
  57.                         s_num.push(num1 + num2);
  58.                 } else if (op == '-') {
  59.                         s_num.push(num1 - num2);
  60.                 }. visit 1point3acres.com for more.
  61.         }
  62.         return s_num.top();. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  63. }

  64. int eval(string expr) {
  65.         int i = 0;
  66.         return eval(expr, i);
    -google 1point3acres
  67. }-google 1point3acres

  68. void test() {
  69.         string expr = "1+2+3"; // 6. From 1point 3acres bbs
  70.         cout << eval(expr) << endl;
  71.         expr = "1*2 + 3 * 5 - 4 / 2"; // 15
  72.         cout << eval(expr) << endl;
  73.         expr = "1 + (3 - 4) * (9 / 3) - 3"; // -5
  74.         cout << eval(expr) << endl;
  75. }
复制代码
求职神器indeed - 在全球最大的求职网站找找适合你的工作?
回复 支持 反对

使用道具 举报

 楼主| 宝贝忆彼岸 发表于 2015-9-19 12:27:57 | 显示全部楼层
colfighter 发表于 2015-9-19 10:38
楼主能说下第三题么?谢啦

就是leetcode 的 multiply strings,把两个strings变成int array。。。。其实是变简单了
回复 支持 反对

使用道具 举报

 楼主| 宝贝忆彼岸 发表于 2015-9-19 12:29:10 | 显示全部楼层
kelvinzhong 发表于 2015-9-19 12:19
刚刚的代码有bug, 给跪
这里贴个没错的
.鐣欏璁哄潧-涓浜-涓夊垎鍦
赞代码,不过题目没有这么复杂,就是两个array相乘,输出结果,相当于两个大数相乘
leetcode的multiply strings
回复 支持 反对

使用道具 举报

kelvinzhong 发表于 2015-9-19 12:30:23 | 显示全部楼层
宝贝忆彼岸 发表于 2015-9-19 12:29
赞代码,不过题目没有这么复杂,就是两个array相乘,输出结果,相当于两个大数相乘
leetcode的multiply  ...
. visit 1point3acres.com for more.
哦,原来如此~~谢楼主
回复 支持 反对

使用道具 举报

 楼主| 宝贝忆彼岸 发表于 2015-9-19 12:31:06 | 显示全部楼层
leixiang5 发表于 2015-9-19 10:50
都做到三道题了。。面的肯定就是不错了。

因为都是很简单的题。。。。
全是leetcode原题
回复 支持 反对

使用道具 举报

yanwen4 发表于 2015-9-19 12:32:54 | 显示全部楼层
我一直想知道,比如面试时要写test case,那个是写成一个函数,还是说用Java JUnit 写成一个class。
. From 1point 3acres bbs
转专业不太懂,求解 最好能给个例子,谢谢啊!
回复 支持 反对

使用道具 举报

 楼主| 宝贝忆彼岸 发表于 2015-9-19 12:38:50 | 显示全部楼层
yanwen4 发表于 2015-9-19 12:32.1point3acres缃
我一直想知道,比如面试时要写test case,那个是写成一个函数,还是说用Java JUnit 写成一个class。. more info on 1point3acres.com

转 ...

应该就是找一个例子过一遍程序吧,就感觉是带着面试官理解一下自己的程序,顺便找一下有没有bug,
比如第三题,我给的test case是99*99,然后就讲一讲每一步变量都变成什么,最后得到什么之类的。。。。我就是这么理解test case的。。。
回复 支持 反对

使用道具 举报

yanwen4 发表于 2015-9-19 12:43:56 | 显示全部楼层
宝贝忆彼岸 发表于 2015-9-19 12:38. 1point3acres.com/bbs
应该就是找一个例子过一遍程序吧,就感觉是带着面试官理解一下自己的程序,顺便找一下有没有bug,. From 1point 3acres bbs
比如 ...

谢谢回复啊,所以不用写函数,直接给出那些case就可以了吗?如果方便的话能打下代码吗?
. 鍥磋鎴戜滑@1point 3 acres
回复 支持 反对

使用道具 举报

zxy_snow 发表于 2015-9-19 14:47:44 | 显示全部楼层
确实好简单啊。。。
回复 支持 反对

使用道具 举报

hao9638422 发表于 2015-9-19 21:55:28 | 显示全部楼层
谢谢楼主啊,简直就是计算机界的大神,膜拜一下~
回复 支持 反对

使用道具 举报

colfighter 发表于 2015-9-19 22:36:13 | 显示全部楼层
宝贝忆彼岸 发表于 2015-9-19 12:27
就是leetcode 的 multiply strings,把两个strings变成int array。。。。其实是变简单了

哦哦原来如此,多谢啦!
回复 支持 反对

使用道具 举报

 楼主| 宝贝忆彼岸 发表于 2015-9-19 23:21:19 | 显示全部楼层
yanwen4 发表于 2015-9-19 12:43. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
谢谢回复啊,所以不用写函数,直接给出那些case就可以了吗?如果方便的话能打下代码吗?

是的,不用写什么代码,用这个例子带着面试官过一遍代码就行,
比如
nums1 = {9,9}; nums2 = {9,9};.鐣欏璁哄潧-涓浜-涓夊垎鍦
carry = 0;
firs loop, a = 9, b = 9.......
.........
result = {9,8,0,1};
  
回复 支持 反对

使用道具 举报

 楼主| 宝贝忆彼岸 发表于 2015-9-19 23:21:47 | 显示全部楼层
zxy_snow 发表于 2015-9-19 14:47
确实好简单啊。。。

对呀,lz走了狗屎运。。。
回复 支持 反对

使用道具 举报

 楼主| 宝贝忆彼岸 发表于 2015-9-19 23:22:38 | 显示全部楼层
hao9638422 发表于 2015-9-19 21:55 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
谢谢楼主啊,简直就是计算机界的大神,膜拜一下~

真不是什么大神,目前还在贫困线上挣扎,一个offer都没有。。。。
回复 支持 反对

使用道具 举报

yanwen4 发表于 2015-9-19 23:24:49 | 显示全部楼层
宝贝忆彼岸 发表于 2015-9-19 23:21. 鍥磋鎴戜滑@1point 3 acres
是的,不用写什么代码,用这个例子带着面试官过一遍代码就行,
比如
nums1 = {9,9}; nums2 = {9,9};
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
谢谢楼主!祝onsite顺利
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2017-2-20 01:26

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表