面试题答案
一键面试优化措施
- 使用生成器函数:生成器函数不会一次性生成所有数据,而是按需生成,这样可以节省内存。在迭代大型数据集时,避免一次性将所有数据加载到内存中。
- 实现
Symbol.iterator
:通过实现Symbol.iterator
,可以让对象成为可迭代对象,使得我们能用for...of
循环等迭代机制进行遍历。
代码示例
// 模拟一个大型数据集合
function* largeDataGenerator() {
for (let i = 0; i < 1000000; i++) {
yield i;
}
}
// 创建一个自定义可迭代对象
const largeIterable = {
[Symbol.iterator]: largeDataGenerator
};
// 频繁遍历操作
for (const value of largeIterable) {
console.log(value);
// 这里进行具体业务操作,由于是按需生成,不会占用过多内存
}
在Python中:
# 生成器函数
def large_data_generator():
for i in range(1000000):
yield i
# 创建可迭代对象
large_iterable = large_data_generator()
# 频繁遍历操作
for value in large_iterable:
print(value)
# 这里进行具体业务操作,由于是按需生成,不会占用过多内存