阿里面经前端一面
1、自我介绍
2、最近的项目
3、为什么想做前端
4、原型链
5、this
6、深浅拷贝
7、手写深拷贝遍历多层次对象
下面是一个简单的递归函数,用于实现深拷贝:
function deepCopy(obj) {
// 如果是基本类型或者 null,则直接返回
if (typeof obj !== 'object' || obj === null) {
return obj;
}
// 创建一个新的对象或者数组
const result = Array.isArray(obj) ? [] : {};
// 遍历原始对象的每一个属性或者元素
for (let key in obj) {
// 如果属性是对象,则递归调用 deepCopy
if (typeof obj[key] === 'object') {
result[key] = deepCopy(obj[key]);
} else {
// 否则直接复制
result[key] = obj[key];
}
}
return result;
}
使用这个函数可以对多层次的对象进行深拷贝,它会遍历对象的每一个属性或者数组的每一个元素,并递归调用自身来实现深拷贝。需要注意的是,这个函数只适用于处理普通的对象和数组,对于特殊对象(如函数、正则表达式、Date等),需要根据具体情况进行特殊处理。
示例用法:
const obj = {
a: 1,
b: {
c: 2,
d: [3, 4, 5]
}
};
const copyObj = deepCopy(obj);
console.log(copyObj); // 输出一个与 obj 结构相同的深拷贝对象
需要注意的是,这个函数在处理循环引用的情况时会陷入死循环,因此在实际使用时需要做额外的判断和处理。
8、react hooks用过什么 useEffect什么用
在React中,useEffect是一个常用的Hook,用于处理副作用。副作用通常是指与组件渲染无关的操作,比如数据获取、订阅事件、手动修改DOM等。useEffect可以在函数组件中执行副作用操作,并且可以在组件的每次渲染之后执行。
useEffct可以再函数族组件当中执行副作用操作,可以再组件的每次渲染之后执行,
以下是useEffect的基本用法:
import React, { useState, useEffect } from 'react';
function MyComponent() {
const [count, setCount] = useState(0);
// 使用 useEffect 进行副作用操作
useEffect(() => {
// 在组件渲染后执行的副作用操作
console.log('Component has been rendered');
// 可以在这里执行一些副作用操作,比如订阅事件、数据获取等
// 返回一个清除函数,在组件被销毁时执行清理操作
return () => {
console.log('Component will be unmounted');
// 在这里执行一些清理操作,比如取消订阅、清除定时器等
};
}, []); // 第二个参数为空数组,表示只在组件挂载和卸载时执行
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
}
export default MyComponent;
在这个示例中,我们使用useEffect来执行一些副作用操作,比如打印日志。useEffect接受一个函数作为参数,在函数内部可以执行副作用操作,并且可以返回一个清除函数,用于在组件被销毁时执行清理操作。在第二个参数中,我们传入了一个空数组,表示只在组件挂载和卸载时执行副作用操作。如果想在每次组件渲染时都执行副作用操作,可以省略第二个参数或者传入一个包含需要监视的变量的数组。
总的来说,useEffect是React Hooks中用于处理副作用操作的重要工具,可以在函数组件中执行各种与渲染无关的操作,并且具有很好的灵活性和可控性。
2023.2.13 30分钟
面试前要调好摄像头 以为电话面结果手忙脚乱
项目要理清楚 逻辑通顺有重点
多敲代码
作者:在刷题的螺狮粉很活跃
链接:www.nowcoder.com/feed/main/d…
来源:牛客网