传说中的谷歌招聘委员会成员之一,从幕后走出来,教你学系统设计!


一亩三分地论坛

 找回密码
 获取更多干活,快来注册
天天打游戏、照样领工资、还办H1B
这份工作你要不要?
把贵司招聘信息放这里
查看: 3269|回复: 23
收起左侧

[找工就业] 古狗电面跪经

[复制链接] |试试Instant~ |关注本帖
FightForTomo 发表于 2017-8-4 18:21:31 | 显示全部楼层 |阅读模式

2017(7-9月)-[15]CS硕士+fresh grad 无实习/全职 - 猎头|BayArea 码农类全职@Googlefresh grad应届毕业生

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

您需要 登录 才可以下载或查看,没有帐号?获取更多干活,快来注册

x
好想混进狗家啊。.鐣欏璁哄潧-涓浜-涓夊垎鍦
2周前在linkedin联系的HR。约了个电面。tag底下刷了2周,写了能有67十道吧。
SETI职位。英语说的别好的一个外国人面的。

第一题测试

. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
Calculate(String"2", String "+", String"3") return 5

你会怎么测试这个函数?
我列个能想到的情况:
. From 1point 3acres bbs
我就说 如果说 如果输入是"" "" ""空字符串怎么办

输入是Null Null Null怎么办
如果输入的是 "a" "+" "b"怎么办
如果输入的是"2" "#" "3"怎么办
如果只传入了2个或1个参数怎么办

我本来还想到 Integer Overflow但是输入输出的字符串可能就没这个问题了

第二题设计数据结构
. From 1point 3acres bbs
给定 Key Value Duration 3个参数
写3个函数, 1个是put, 一个是get,还有一个是clearExperiedEntry。get 函数要求如果 过时了的话, 就return Null。


我是建了一个对象用Hashmap存。
-google 1point3acres
class obj {
int val;
long cur;
long dur;
obj()
}


然后第三题是 设计一个类

给定snipit  [text] Hello [/text] [bold]![/bold] [mark]word[mark]
. 鍥磋鎴戜滑@1point 3 acres
如何把那个文本标志和内容分开储存

我不会给他们分开,所以没写出来

然后第三题他有说 TreeNode Snipit

我就说 前缀树,然后觉得也不太对,也不太会写就。那么地了。

第三题 主要是难在 他的那些[marks] 文本符号是互相交错的.。

提了两个问题,然后就结束了。
第三题代码都不会写。估计onsite的机会都没有了,好难过

. 1point 3acres 璁哄潧

评分

3

查看全部评分

本帖被以下淘专辑推荐:

magicsets 发表于 2017-8-7 11:30:31 | 显示全部楼层
第三题将文本“分开”的方法,比较系统的知识应该是在"Programming Languages and Compilers"这类课程里前几章关于"Lexer/Parser"的部分。

只是要做题目的话,可以用一个stack去hack出来(stack=递归,是处理树状结构的很好的方法), 例如楼上提到的类似题目LeetCode 591,Discuss里给出的答案:
https://discuss.leetcode.com/topic/91300/java-solution-use-startswith-and-indexof

更通用一点的方法是写一个简单的“递归下降语法解析器”(recursive descent parser)——这个并不难写,而且可以解决几乎所有类似的题目,建议搜索并学习一下..

实践中需要解析文本的时候一般是用"parser generator"工具,比如flex+bison / JavaCC / Antlr之类的。这道题目非常适合词法和语法混合的LL(k)的parser generator,例如Antlr,语法部分几行代码就可以表达出来了。
回复 支持 3 反对 0

使用道具 举报

ZionHill 发表于 2017-8-4 23:57:09 | 显示全部楼层
会给你第二轮电面的。好好准备
回复 支持 1 反对 0

使用道具 举报

2011051305 发表于 2017-8-5 01:27:05 | 显示全部楼层
第三题都没看懂什么意思 是说给定  [text] Hello [/text] [bold]![/bold] [mark]word[mark]  最后让你提取出 Hello (并且标记其为text属性) 提取出"!"(标记其为bold属性) 以及提取"word"(标记其为mark属性)?
回复 支持 反对

使用道具 举报

 楼主| FightForTomo 发表于 2017-8-5 05:06:21 | 显示全部楼层
2011051305 发表于 2017-8-5 01:27
第三题都没看懂什么意思 是说给定  [text] Hello [/text] ![/bold] [mark]word[mark]  最后让你提取出 Hell ...

设计一个数据结构 分别储存文本和标记。
回复 支持 反对

使用道具 举报

2011051305 发表于 2017-8-5 10:12:39 | 显示全部楼层
FightForTomo 发表于 2017-8-5 05:06
设计一个数据结构 分别储存文本和标记。
. Waral 鍗氬鏈夋洿澶氭枃绔,
那么看起来是利扣 无玖腰 的变体?
回复 支持 反对

使用道具 举报

 楼主| FightForTomo 发表于 2017-8-5 10:29:26 | 显示全部楼层
2011051305 发表于 2017-8-5 10:12
那么看起来是利扣 无玖腰 的变体?
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
没做过,不知道。
回复 支持 反对

使用道具 举报

brn 发表于 2017-8-7 10:48:20 | 显示全部楼层
第三题就是设计一个类似于 TreeNode 的结构呗
另外你说的是 snippet 吧?  
回复 支持 反对

使用道具 举报

 楼主| FightForTomo 发表于 2017-8-7 10:55:24 | 显示全部楼层
brn 发表于 2017-8-7 10:48
第三题就是设计一个类似于 TreeNode 的结构呗. visit 1point3acres.com for more.
另外你说的是 snippet 吧?

你嗦的对。
回复 支持 反对

使用道具 举报

stargazer 发表于 2017-8-14 13:32:19 | 显示全部楼层
这么早就招全职了?还能LinkeIn直接联系HR?
回复 支持 反对

使用道具 举报

watercup 发表于 2017-8-15 02:28:45 | 显示全部楼层
第三题感觉就是设计一个DOM tree解析html 文件。
class TreeNode {
   String tag;
   String text;
   List<TreeNode> children;
}
回复 支持 反对

使用道具 举报

codemonk 发表于 2017-8-24 13:32:26 | 显示全部楼层
第三题 recursive descend parser
. more info on 1point3acres.com
  1. #include <iostream>
  2. #include <vector>. Waral 鍗氬鏈夋洿澶氭枃绔,
  3. #include <queue>. more info on 1point3acres.com
  4. using namespace std;. 鍥磋鎴戜滑@1point 3 acres
  5. 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  6. struct TreeNode {. Waral 鍗氬鏈夋洿澶氭枃绔,
  7.     string tag;. more info on 1point3acres.com
  8.     string text;
  9.     vector<TreeNode*> children;
  10.     TreeNode(string tag_, string text_) {
  11.         tag = tag_;
  12.         text = text_;
  13.     }
  14. };

  15. TreeNode* parse(string& html, int& i) {
  16.     if(html[i] == '[') {
  17.         i++; // skip '['
  18.         int j = html.find(']', i);
  19.         string tag = html.substr(i, j-i);. Waral 鍗氬鏈夋洿澶氭枃绔,
  20.         i = j + 1;. visit 1point3acres.com for more.
  21.         .鐣欏璁哄潧-涓浜-涓夊垎鍦
  22.         int start = i;. more info on 1point3acres.com
  23.         TreeNode* root = new TreeNode(tag, "");
  24.         while(html.substr(i,2) != "[/") {
  25.             auto child = parse(html, i);
  26.             if(child) root->children.push_back(child);
  27.         }
  28.         root->text = html.substr(start, i-start);
  29.         i += 2;
  30.         i = html.find(']', i);. 1point3acres.com/bbs
  31.         i++;// skip ']'
  32.         return root;
  33.     }
  34.     else {
  35.         while(i < html.length() && html[i] != '[') i++; // scan all text content
  36.         return nullptr;
  37.     }
  38. }
  39. . 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  40. TreeNode* parseHtml(string& html) {
  41.     TreeNode* root = new TreeNode("","");. 鍥磋鎴戜滑@1point 3 acres
  42.     for(int i = 0; i < html.length(); ) {
  43.         auto tmp = parse(html, i);
  44.         if(tmp) root->children.push_back(tmp);
  45.     }
  46.     return root;. 1point3acres.com/bbs
  47. }

  48. void printTree(TreeNode* root) {. From 1point 3acres bbs
  49.     queue<TreeNode*> q;
  50.     q.push(root);
  51.     while(!q.empty()) {
  52.         int qsize = q.size();
  53.         while(qsize-- > 0) {. 1point3acres.com/bbs
  54.             auto top = q.front();
  55.             q.pop();
  56.             cout << "tag:" << top->tag << " text:" << top->text << "    ";
  57.             for(auto c : top->children) q.push(c);
  58.         }
  59.         cout << endl;
  60.     }. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  61. }
  62. 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  63. int main(int argc, const char * argv[]) {
  64.     // insert code here.... visit 1point3acres.com for more.
  65.     string html = "[text] Hello [/text] [bold]![/bold] [mark]word[/mark]";
  66.     printTree(parseHtml(html));
  67.     cout << endl;.鏈枃鍘熷垱鑷1point3acres璁哄潧
  68.     html = "[text] Hello [/text] [bold]abc[tiny] maketiny [/tiny]123[/bold] [mark]word[/mark]";
  69.     printTree(parseHtml(html));
  70.     return 0;
  71. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| FightForTomo 发表于 2017-8-24 13:36:50 | 显示全部楼层
codemonk 发表于 2017-8-24 13:32. Waral 鍗氬鏈夋洿澶氭枃绔,
第三题 recursive descend parser

谢谢,下次我就写出来了。
回复 支持 反对

使用道具 举报

jessyhann 发表于 2017-8-25 08:05:46 | 显示全部楼层
题主电面结果怎么样?
回复 支持 反对

使用道具 举报

littlegrass 发表于 2017-8-26 09:09:13 | 显示全部楼层
楼主有后续吗?
回复 支持 反对

使用道具 举报

 楼主| FightForTomo 发表于 2017-8-26 09:26:56 | 显示全部楼层

就继续刷题,争取再面一次呗。
回复 支持 反对

使用道具 举报

littlegrass 发表于 2017-8-26 09:39:08 | 显示全部楼层
FightForTomo 发表于 2017-8-26 09:26
就继续刷题,争取再面一次呗。

. 鍥磋鎴戜滑@1point 3 acres祝楼主好运!楼主的帖子写fresh grad 为什么不等今年的秋招 急着面SETI?
回复 支持 反对

使用道具 举报

 楼主| FightForTomo 发表于 2017-8-26 10:40:22 | 显示全部楼层
littlegrass 发表于 2017-8-26 09:39
祝楼主好运!楼主的帖子写fresh grad 为什么不等今年的秋招 急着面SETI?

年少无知唉
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2017-9-24 00:56

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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