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

这道题应该怎么写?

全局:

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

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

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

x
要求写一个类,完成template string功能。具体如下:
var tmp = Template("{name} is a {if #isMale}man{/if}.")
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
ont face="Geneva, Arial, Helvetica, sans-serif">

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


上一篇:BB onsite
下一篇:应求 FB 2017 至 6月为止onsite面经截图+总结
🔗
say543 2017-6-16 14:50:38 | 只看该作者
全局:
有要求语言吗 JS?
回复

使用道具 举报

🔗
easyandme 2017-6-17 04:54:38 | 只看该作者
全局:
  1. class Template {
  2.     constructor(str) {
  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) {
  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
  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.     }
  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}.")
  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
感觉挺难的 考察点楼主觉得是啥?

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

使用道具 举报

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

本版积分规则

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