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


一亩三分地论坛

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

这道题应该怎么写?

[复制链接] |试试Instant~ |关注本帖
dongogogo776 发表于 2017-6-16 12:45:30 | 显示全部楼层 |阅读模式

2017(4-6月) 码农类 硕士 全职@Dropbox - 猎头 - 技术电面 |Other在职跳槽

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

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

x
要求写一个类,完成template string功能。具体如下:-google 1point3acres
var tmp = Template("{name} is a {if #isMale}man{/if}.")
tmp.format({name:'John', isMale:false})

这样就会输出 John is a man.

要实现的东西有3层:
1. Variable replacement
2. If statement
3. Nested if statement




. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷

这道题真能45分钟内能写出来吗?感觉是个小型的library,有点类似于dust.js-google 1point3acres

say543 发表于 2017-6-16 14:50:38 | 显示全部楼层
有要求语言吗 JS?
回复 支持 反对

使用道具 举报

easyandme 发表于 2017-6-17 04:54:38 | 显示全部楼层
  1. class Template {
  2.     constructor(str) {
    . visit 1point3acres.com for more.
  3.         this.var1 = this.constructor.getvar1(str)
  4.         this.var2 = this.constructor.getvar2(str).鏈枃鍘熷垱鑷1point3acres璁哄潧
  5.         this.bool = this.constructor.getBool(str)
  6.         this.mid = this.constructor.getMid(str) 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  7.     }.鏈枃鍘熷垱鑷1point3acres璁哄潧

  8.     format(obj) {
  9.         if (obj.hasOwnProperty(this.var1) && obj.hasOwnProperty(this.bool)) {. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  10.             this.constructor.output(obj[this.var1], this.mid, obj[this.bool], this.var2)
  11.         }
  12.     }. more info on 1point3acres.com

  13.     static getvar1(str) {
  14.         let re = /{([0-9a-zA-Z\_]+)}/g
  15.         return re.exec(str)[1]
  16.     }. Waral 鍗氬鏈夋洿澶氭枃绔,
  17.     static getBool(str) {
  18.         let re = /#([a-zA-Z0-9]+)}/g
  19.         return re.exec(str)[1]
  20.     }
  21.     static getvar2(str) {
  22.         let re = /{if.+}([0-9a-zA-Z\_]+){\/if}/g
  23.         return re.exec(str)[1]
  24.     }
  25.     static getMid(str) {
  26.         let re = /}(.*){if/g
  27.         return re.exec(str)[1]
  28.     }
  29.     static output(str1, mid, bool, str2) {
  30.         console.log(str1 + mid + (bool ? str2 : ""))
  31.     }
  32. }

  33. let tmp = new Template("{name} is a {if #isMale}man{/if}.")
  34. let tmp2 = new Template("{name} is a {if #isGirl}girl{/if}."). visit 1point3acres.com for more.
  35. tmp.format({name:'John', isMale:false})  // "John is a "
  36. tmp2.format({name:'Jane Doe', isGirl:true})  // "Jane Doe is a girl"
复制代码
回复 支持 反对

使用道具 举报

 楼主| dongogogo776 发表于 2017-6-17 06:14:33 | 显示全部楼层

你这个答案好像不怎么work,智能handle一个variable substitution和if
题目要求则是无限个.鐣欏璁哄潧-涓浜-涓夊垎鍦
而且if还需要支持nested if
回复 支持 反对

使用道具 举报

 楼主| dongogogo776 发表于 2017-6-17 06:15:14 | 显示全部楼层
say543 发表于 2017-6-16 14:50
有要求语言吗 JS?

语言无所谓,我说js行不行,他说可以
回复 支持 反对

使用道具 举报

say543 发表于 2017-6-18 14:33:47 | 显示全部楼层
dongogogo776 发表于 2017-6-17 06:15
语言无所谓,我说js行不行,他说可以


感觉挺难的 考察点楼主觉得是啥?
回复 支持 反对

使用道具 举报

 楼主| dongogogo776 发表于 2017-6-23 03:28:17 | 显示全部楼层
say543 发表于 2017-6-18 14:33
感觉挺难的 考察点楼主觉得是啥?
. 1point3acres.com/bbs
数据结构肯定是stack啊,不过怎么把string切分出不同的block塞到stack去,这个相当麻烦。也不是不能做,但45分钟又无debug环境,我是做不出来的。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

custom counter

GMT+8, 2017-9-23 08:42

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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