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,输入后可以关联字段,有类似这种吗?
#### 组件拖拽中,拖拽后插入有一个预状态,怎么实现的?
#### 反问
(直接说她对我的反馈是一面过了)
查看6道真题和解析