在国外一跟老外吵架口语立刻就不够用了

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
E轮2.5亿美元融资
K12教育独角兽一起作业
北京-诚聘人工智能/教育/大数据岗
坐标湾区
Games Startup
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
码农求职神器Triplebyte:
不用海投
内推多家公司面试
把贵司招聘信息放这里
查看: 1331|回复: 6
收起左侧

这道题应该怎么写?

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

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

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

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

x
要求写一个类,完成template string功能。具体如下:
var tmp = Template("{name} is a {if #isMale}man{/if}."). visit 1point3acres for more.
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

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

使用道具 举报

easyandme 发表于 2017-6-17 04:54:38 | 显示全部楼层
  1. class Template {
  2.     constructor(str) {
    . 1point3acres
  3.         this.var1 = this.constructor.getvar1(str)
  4.         this.var2 = this.constructor.getvar2(str)
  5.         this.bool = this.constructor.getBool(str)
  6.         this.mid = this.constructor.getMid(str)
  7.     }

  8.     format(obj) {. Waral 博客有更多文章,
  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.     }

  13.     static getvar1(str) {
  14.         let re = /{([0-9a-zA-Z\_]+)}/g. 1point3acres
  15.         return re.exec(str)[1]
  16.     }
  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.     }. from: 1point3acres
  25.     static getMid(str) {-google 1point3acres
  26.         let re = /}(.*){if/g. Waral 博客有更多文章,
  27.         return re.exec(str)[1]. 围观我们@1point 3 acres
  28.     }
  29.     static output(str1, mid, bool, str2) {
  30.         console.log(str1 + mid + (bool ? str2 : ""))
  31.     }
  32. }
  33. . 1point 3acres 论坛
  34. let tmp = new Template("{name} is a {if #isMale}man{/if}."). 1point3acres
  35. let tmp2 = new Template("{name} is a {if #isGirl}girl{/if}.")
  36. tmp.format({name:'John', isMale:false})  // "John is a "
  37. tmp2.format({name:'Jane Doe', isGirl:true})  // "Jane Doe is a girl"
复制代码
回复 支持 反对

使用道具 举报

 楼主| dongogogo776 发表于 2017-6-17 06:14:33 | 显示全部楼层
. 1point3acres
你这个答案好像不怎么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
感觉挺难的 考察点楼主觉得是啥?

数据结构肯定是stack啊,不过怎么把string切分出不同的block塞到stack去,这个相当麻烦。也不是不能做,但45分钟又无debug环境,我是做不出来的。
回复 支持 反对

使用道具 举报

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

关闭

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

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

custom counter

GMT+8, 2018-5-23 19:33

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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