Moka一面(牛客面经很有用,刚看了算法,立刻面了)
---
title: Moka一面
date: 2023-03-06 16:29:23
categories:
- [杂谈,面试]
---
公司: Moka
时间:2023-03-06 下午3点
时长:1hour左右
------------------------------
HR:我们重点考察算法,预计总共一个小时,前半个小时考算法
### 自我介绍
### 算法题
**写一个函数format,传入一个javascript object,输出格式化后的string,为了简化,我们规定object里只有number、string、array、object四种类型, 且传入合法。**
(本题需用原生方法实现,不能用**JSON.stringify**方法)
const object = { a: 1, b: [ 2, 3, { c: 4 } ], d: { e: 5, f: { g: '6' } } } /* 将在屏幕上打印:*/ // '{ // "a": 1, // "b": [ // 2, // 3, // { // <-- 这个{前的空格数是4 // "c": 4 // } // ], // "d": { // <-- 这个属性"d"前的空格数是2 // "e": 5, // "f": { // "g": "6" // } // } // }' //实现 function format(obj) { // TODO let type = typeof obj if(type !== 'object' || type === null) { if(/string|funcntion|undefined/.test(type)) { obj = '"' + obj + '"' } return String(obj) } else { let json = [] let arr = (obj && obj.constructor == Array) for(let k in obj) { let v = obj[k] if(/string|funcntion|undefined/.test(type)) { v = '"' + v + '"' } else if(type == 'object') { v = format(v) } json.push((arr ? "" : '"' + k + '":') + String(v)) } return (arr ? '[\n' : '{\n') + String(json) + (arr ? ' \n ]' : '\n }') } };
- 讲一讲整个题的一个思路?
- 用的for in这个循环,怎么处理输出的逗号问题?
- 是不是没有用到Object.keys这个方法,这个方法可以判断最后一个元素?
- 我看到你有视图去写一个\t去实现一个缩进,又把它删了,为什么,你怎么处理这个缩进这个场景?
//面试后的代码改进 function format(obj, floor = 0) { // TODO let type = typeof obj if(type !== 'object' || type === null) { if(/string|funcntion|undefined/.test(type)) { obj = '"' + obj + '"' } return String(obj) } else { let json = [] let arr = (obj && obj.constructor == Array) //层级判断 let blank = '' for(let i = 0; i < floor; i++) { blank += ' ' } for(let k in obj) { let v = obj[k] if(/string|funcntion|undefined/.test(type)) { v = '"' + v + '"' } else if(type == 'object') { v = format(v, floor + 1) } json.push(`\n${blank + ' '}` + (arr ? "" : '"' + k + '": ') + String(v)) } return (arr ? '[' : '{') + String(json) + (arr ? `\n${blank}]` : `\n${blank}}`) } };
#### 工作在北京没有问题吧?
#### 讲一下你哪一个项目做起来感受最多一些?
#### 你的低代码项目有哪些应用的场景可以说一下嘛?
#### 表单里面有复杂一点的功能吗?举个例子,比如说多个selected级联,额外接口的的fetch,输入后可以关联字段,有类似这种吗?
#### 组件拖拽中,拖拽后插入有一个预状态,怎么实现的?
#### 反问
(直接说她对我的反馈是一面过了)