第一次面大厂就直接挂在一面,能力不足,尚需努力呀 ——2021-03-08
题目
function get() {
// 请补全函数参数和实现逻辑
}
const obj = {
selector: {
to: {
toutiao: 'FE coder'
}
},
target: [1, 2, { name: 'byted' }]
};
// 运行代码
// get(obj, 'selector.to.toutiao', 'target[0]', 'target[2].name')
// 输出结果:
// ['FE coder', 1, 'byted']
实现
function get() {
const args = Array.from(arguments);
const sourceObj = args[0];
const keyPaths = args.slice(1);
const retValues = [];
let tempVal;
keyPaths.forEach(keyPath => {
const keys = keyPath.split('.');
keys.forEach(key => {
if (/(\w+)\[(\d+)\]/.test(key)) {
const parentKey = RegExp.$1;
const index = RegExp.$2;
let parentVal;
if (!tempVal) {
parentVal = sourceObj[parentKey];
}
else {
parentVal = tempVal[parentKey];
}
tempVal = parentVal[index];
}
else {
// 对象
if (!tempVal) {
tempVal = sourceObj[key];
}
else {
tempVal = tempVal[key];
}
}
});
retValues.push(tempVal);
tempVal = undefined;
});
return retValues;
}
console.log(get(obj, 'selector.to.toutiao', 'target[0]', 'target[2].name'));
总结这次失败:
- 编程题时,第一次面对大厂的面试官而且还是别人等着你写代码,内心出现了有些不自信,写着写着思路就有点乱了,导致写了好几分钟还没有写出来,最终因为越来越慌,思路越来越乱给面试官说暂时写不出来。总结来说:临场发挥能力不足
- 工作所写项目没有任何可拿得出来的亮点和难点
- 自己平时没有深入学习,像webpack只是从官方脚手架拿来就用,连inject出来看下有哪些配置文件都没有
- 对工作中项目没有去思考能做哪些优化,基本上是业务开发完成,测试通过就结束,没有深入去分析自己所产出的代码的性能(性能优化是基本所有面试公司都问到的问题)
- 业务上,纯粹根据产品的来,没有过自己提出的一些实现方案或提议
- 项目实现上,像平时做的这么多ToB后台管理项目中,有很多业务逻辑类似、功能类似的没有去做复核、做抽象(对项目的思考太少)