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

atlassian 前端電面

🔗
匿名用户-XNYAX  2019-2-13 01:53:05 |倒序浏览

2019(1-3月) FrontEndEng 本科 全职@atlassian - 内推 - 技术电面  | | Other | 在职跳槽

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

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

x
上禮拜5 電面front end 職位
其實內容不難, 面試是個白人哥~ 問題共兩個
第一題, 寫一個function 會返回数组对象
輸入input 的, function 是要跟expected 一樣,


const input = [
  {
    "value": "value0",
    "children": []
  },
  {
    "value": "value1",
    "children": [
      {
        "value": "value2",
        "children": [
          {
            "value": "value3",
            "children": []
          }
        ]
      },
      {
        "value": "value4",
        "children": []
      }
    ]
  },
  {
    "value": "value5",
    "children": []
  },
  {
    "value": "value6",
    "children": []
  }
]

const expected = [
  {"value":"value0"},
  {"value":"value1"},
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
nt>];


const getBatch = (index) => {
  return new Promise((resolve, reject) => {
    if (index === 1) {
      resolve([
        {
          value: "value0",
          children: []
        }
      ]);
    } else if (index === 2) {
      resolve([
        {
          value: "value1",
          children: [
            {
              value: "value2",
              children: [
                {
                  value: "value3",
                  children: []
                }
              ]
            },
            {
              value: "value4",
              children: []
            }
          ]
        },
        {
          value: "value5",
          children: []
        }
      ]);
    } else if (index === 3) {
      resolve([
        {
          value: "value6",
          children: []
        }
      ]);
    }
  });
};




评分

参与人数 1大米 +20 收起 理由
匿名用户-HI161 + 20

查看全部评分


上一篇:热带雨林 欧诶1
下一篇:1.23 google Sunnyvale onsite 挂经

本帖被以下淘专辑推荐:

推荐
gamesover 2019-4-7 16:18:05 | 只看该作者
全局:

什么?你的问题是?
不好意思,没明白什么是怎么用出来的?

ps,是我的错觉吗?你用的繁体字?

补充内容 (2019-4-7 16:59):
我明白了,你的意思是代码怎么格式化输出?选中代码,然后工具栏里有个“代码”的按钮。
回复

使用道具 举报

推荐
gamesover 2019-4-6 02:31:03 | 只看该作者
全局:
  1. const input = [
  2.   {
  3.     "value": "value0",
  4.     "children": []
  5.   },
  6.   {
  7.     "value": "value1",
  8.     "children": [
  9.       {
  10.         "value": "value2",
  11.         "children": [
  12.           {
  13.             "value": "value3",
  14.             "children": []
  15.           }
  16.         ]
  17.       },
  18.       {
  19.         "value": "value4",
  20.         "children": []
  21.       }
  22.     ]
  23.   },
  24.   {
  25.     "value": "value5",
  26.     "children": []
  27.   },
  28.   {
  29.     "value": "value6",
  30.     "children": []
  31.   }
  32. ]

  33. const expected = [
  34.   {"value":"value0"},
  35.   {"value":"value1"},
  36.   {"value":"value2"},
  37.   {"value":"value3"},
  38.   {"value":"value4"},
  39.   {"value":"value5"},
  40.   {"value":"value6"}
  41. ];

  42. function extract_values(input) {
  43.   const values = {}
  44.   input.forEach(function(item) {
  45.     dfs(item, values)
  46.   })

  47.   return Object.keys(values).map(x => {
  48.     return {"value": x}
  49.   })
  50. }

  51. function dfs(node, values) {
  52.   if (!(node['value'] in values)) {
  53.     values[node['value']] = 1
  54.   }

  55.   node['children'].forEach(function(child) {
  56.     dfs(child, values)
  57.   })
  58. }

  59. console.log(extract_values(input))


  60. // const expected = [
  61. //   {"value":"value0"},
  62. //   {"value":"value1"},
  63. //   {"value":"value2"},
  64. //   {"value":"value3"},
  65. //   {"value":"value4"},
  66. //   {"value":"value5"},
  67. //   {"value":"value6"}
  68. // ];


  69. const getBatch = (index) => {
  70.   return new Promise((resolve, reject) => {
  71.     if (index === 1) {
  72.       resolve([
  73.         {
  74.           value: "value0",
  75.           children: []
  76.         }
  77.       ]);
  78.     } else if (index === 2) {
  79.       resolve([
  80.         {
  81.           value: "value1",
  82.           children: [
  83.             {
  84.               value: "value2",
  85.               children: [
  86.                 {
  87.                   value: "value3",
  88.                   children: []
  89.                 }
  90.               ]
  91.             },
  92.             {
  93.               value: "value4",
  94.               children: []
  95.             }
  96.           ]
  97.         },
  98.         {
  99.           value: "value5",
  100.           children: []
  101.         }
  102.       ]);
  103.     } else if (index === 3) {
  104.       resolve([
  105.         {
  106.           value: "value6",
  107.           children: []
  108.         }
  109.       ]);
  110.     }
  111.   });
  112. };

  113. function getValueList(fromIndex, toIndex) {
  114.   const promises = []
  115.   for(let i=fromIndex; i <= toIndex;i++) {
  116.     promises.push(getBatch(i))
  117.   }
  118.   return Promise.all(promises).then(values => {
  119.     return extract_values(values.flat(1))
  120.   })
  121. }

  122. getValueList(1, 3).then(result => console.log(result))
复制代码
回复

使用道具 举报

推荐
remexllee 2019-4-7 23:08:25 | 只看该作者
全局:
gamesover 发表于 2019-4-7 22:39
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat

因 ...

感谢, 学习到啦.

我看了一下兼容性, 似乎微软浏览器全系都不支持. 我刚才在我local的node试了一下也不行.
所以说电话面试的时候如果跑code最好不要用这个方法.

比如你去coderpad跑一下
https://coderpad.io/sandbox

  1. let array = [1, 2, [3, 4, [5, 6]]]
  2. console.log(array.flat())
复制代码


你会看到这个error:
Guest ran 2 lines of JavaScript (finished in 804ms):

solution.js:2
console.log(array.flat())
                  ^

TypeError: array.flat is not a function
    at solution.js:2:19
    at Script.runInContext (vm.js:107:20)
    at Script.runInNewContext (vm.js:113:17)
    at Object.runInNewContext (vm.js:296:38)
    at /home/coderpad/repl.js:23:10
    at process._tickCallback (internal/process/next_tick.js:61:11)
    at Function.Module.runMain (internal/modules/cjs/loader.js:745:11)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)

因为后台跑的是node而不是浏览器
回复

使用道具 举报

🔗
xqqyyy 2019-2-13 04:26:33 | 只看该作者
全局:
我看到他们家jd,好像不sponsor, front end 有sponsor吗?
回复

使用道具 举报

🔗
文科IT狗 2019-2-13 11:24:40 | 只看该作者
全局:
xqqyyy 发表于 2019-2-13 04:26
我看到他们家jd,好像不sponsor, front end 有sponsor吗?

很抱歉 我不太清楚了
因為我不需要sponsor

评分

参与人数 1大米 +10 收起 理由
Lingzviee + 10

查看全部评分

回复

使用道具 举报

🔗
文科IT狗 2019-4-7 10:41:30 | 只看该作者
全局:
gamesover 发表于 2019-4-6 02:31
[mw_shl_code=javascript,true]const input = [
  {
    "value": "value0",

怎樣用出來的?
回复

使用道具 举报

🔗
remexllee 2019-4-7 22:27:56 | 只看该作者
全局:
gamesover 发表于 2019-4-6 02:31
[mw_shl_code=javascript,true]const input = [
  {
    "value": "value0",

请问 130 行的 values.flat(1) 是什么用法?
回复

使用道具 举报

🔗
gamesover 2019-4-7 22:39:22 | 只看该作者
全局:
remexllee 发表于 2019-4-7 22:27
请问 130 行的 values.flat(1) 是什么用法?

https://developer.mozilla.org/en ... _Objects/Array/flat

因为每个returned的promise结果是一个array,然后promise.all把所有结果合并成一个array
所以我就flat最外层的array

但是可能有点画蛇添足了,因为flat这个函数默认参数就是1,所以flat和flat(1)是一回事
回复

使用道具 举报

🔗
gamesover 2019-4-7 23:20:18 | 只看该作者
全局:
remexllee 发表于 2019-4-7 23:08
感谢, 学习到啦.

我看了一下兼容性, 似乎微软浏览器全系都不支持. 我刚才在我local的node试了一下也不 ...

这个codepad还真怪

ie不能跑是可以预见的,因为ie对js兼容性一向很差
现在一般标准浏览器是chrome,直接用es6写,然后webpack compile到es5

我试了一下,chrome和jsfiddle都没问题
js的话没什么必要一定要按照es5写法写,因为webpack肯定可以从es6 compile到es5

麻烦的是有的css低版本ie不兼容,才是最头疼的

补充内容 (2019-4-7 23:23):
css大部分情况都没法compile兼容不同浏览器
回复

使用道具 举报

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

本版积分规则

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