回复: 14
跳转到指定楼层
上一主题 下一主题
收起左侧

简单到不像G家风格的电面

🔗
匿名用户-D16FZ  2016-12-13 11:50:17 |倒序浏览

2016(10-12月) 码农类General 硕士 全职@google - 内推 - 技术电面  | | Other | 应届毕业生

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

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
今天下午的面试,面试官迟到了10分钟,听口音是三哥吧说不好意思迟到了,自己叫David在谷歌干了5年多了,然后说我们会先做题,接着给你时间问问题,我说好的。于是就轻松愉快地开始啦,不问简历什么的最喜欢了!

题目真的特别简单,给一个String, 比如"5.2+4*2.1+8"这样的含double数字的一个等式,只有加号和乘号,求这个等式的结果。follow up是有除号怎么办。同时可以假设输入一定是valid的。



您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
e="font-size:13px">,有很多不同的cafe让你选择。

我这次电面特别水,可能不是很有参考性,但是这几天看地里G家面经,可以看得出大家都对G家面试官的评价很好,非常友善。据说发了面经都会拿到onsite,你们说呢~~

评分

参与人数 1大米 +40 收起 理由
凌曦 + 40

查看全部评分


上一篇:亚麻 Cloud Support oa 已跪
下一篇:报一个Amazon的offer, 妹子选组求建议。。
推荐
2008 2016-12-16 07:19:46 | 只看该作者
全局:
freemail165 发表于 2016-12-16 07:16
你有别的语言的code吗?
这是python?

贴一个C++, LC227:
  1. class Solution {
  2.     int i=0;
  3.     vector<string> v;   
  4. public:
  5.     int calculate(string s) {
  6.         stringstream ss;
  7.         for(int i=0; i<s.length(); i++) {
  8.             if(s[i]==' ') continue;
  9.             else if(s[i]>='0'&&s[i]<='9') ss<<s[i];
  10.             else {
  11.                 v.push_back(ss.str());
  12.                 ss.str(""); ss.clear();
  13.                 v.push_back(string(1, s[i]));
  14.             }
  15.         }
  16.         v.push_back(ss.str());
  17.         return eval();
  18.     }   
  19.    
  20.     int eval() {
  21.         i=0;
  22.         return add();
  23.     }
  24.    
  25.     long getVal() {
  26.         long val=atol(v[i].c_str());
  27.         i++;
  28.         return val;
  29.     }
  30.    
  31.     long multi() {
  32.         long val=getVal();
  33.         while(i<v.size()) {
  34.             if(v[i]=="*") {
  35.                 i++; val*=getVal();
  36.             } else if(v[i]=="/") {
  37.                 i++; val/=getVal();
  38.             }  else {
  39.                 break;
  40.             }  
  41.         }
  42.         return val;
  43.     }
  44.    
  45.     long add() {
  46.         long val=multi();
  47.         while(i<v.size()) {
  48.             if(v[i]=="+") {
  49.                 i++; val+=multi();
  50.             } else if(v[i]=="-") {
  51.                 i++; val-=multi();  
  52.             } else {
  53.                 break;
  54.             }   
  55.         }
  56.         return val;
  57.     }
  58. };
复制代码
回复

使用道具 举报

推荐
2008 2016-12-15 22:05:45 | 只看该作者
全局:
递归下降解法。

double parse(string) {
  double value=getDouble();
  while(isAddSym()) {
   eat('+');
   value+=parseMulti();
  }
  return value;
}

double parseMulti() {
  double value=parseDouble();
  while(isMulSym()) {
    eat(‘*');
    value*=parseDouble();
  }
  return value;
}


补充内容 (2016-12-15 22:14):
哇,有个bug。
double parse(string) {
  double value=parseMulti();
......
回复

使用道具 举报

推荐
2008 2016-12-16 05:23:17 | 只看该作者
全局:
freemail165 发表于 2016-12-16 03:44
不用递归怎么写呢?输入太长会导致stackoverflow

这个肯定不会stackoverflow,
parse=>parseMulti=>parseDouble,就到底了,之后是一个循环,避免左递归。

如果支持括号的话,倒是有可能stackoverflow,我刚才试过LC224,能通过,说明不是问题。
这种算数表达式肯定有自己维护stack的解法,不过我觉得麻烦,
请指教。
回复

使用道具 举报

🔗
houqingniao 2016-12-13 12:52:15 | 只看该作者
全局:
这个题水么。。。。好多case需要考虑吧,还要考虑escape这些操作符。。。
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-D16FZ  2016-12-13 13:01:13
houqingniao 发表于 2016-12-13 12:52
这个题水么。。。。好多case需要考虑吧,还要考虑escape这些操作符。。。

不需要。。只有+ * / 这三个符号 并且可以assume输入是valid
回复

使用道具 举报

🔗
mango_sama 2016-12-15 05:48:02 | 只看该作者
全局:
遇到这样的面试官也是福气,,,祝onsite
回复

使用道具 举报

🔗
carson529 2016-12-15 08:45:41 | 只看该作者
全局:
感觉还是用stack做省空间
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-D16FZ  2016-12-15 08:46:56
carson529 发表于 2016-12-15 08:45
感觉还是用stack做省空间

是的,传统的做法肯定比较好,我当时怎么自己解析double卡了下,面试官给了提示我就跟着他的思路走了 回头想了下因为这个是double所以才能这么做,如果是int操作就不能这样做了
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-D16FZ  2016-12-15 08:47:06
mango_sama 发表于 2016-12-15 05:48
遇到这样的面试官也是福气,,,祝onsite

谢谢!祝你也好运呀
回复

使用道具 举报

🔗
myangelasuka 2016-12-15 15:40:03 | 只看该作者
全局:
这题就是basic calculator 的小变体吧, 出难点再来个nested parentheses 不过楼主太谦虚了。。 祝onsite!
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-D16FZ  2016-12-15 16:12:16
myangelasuka 发表于 2016-12-15 15:40
这题就是basic calculator 的小变体吧, 出难点再来个nested parentheses 不过楼主太谦虚了。。 祝onsite!

谢谢~~是的是的 basic calculator就不能这样做了,因为int要取floor
回复

使用道具 举报

🔗
freemail165 2016-12-15 16:35:43 | 只看该作者
全局:
这种split再split的做法,扩展性/可读性都很差吧
不如自己读输入字符串,自行处理,也不麻烦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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