前端面试题,冷静面对,沉着应答

无论是在校学生,还是应届毕业生,面试可谓是找工作很关键的一个环节,作为一名前端学习者,在学习的过程中也要提前熟悉面试的环节,这篇文章就挑一些简单的面试题来说说。

题目一

1:javasprite 的深浅拷贝,可以用代码简述一下区别吗?
2:你会采用什么方式来优化项目?
考点:
1:Javasprite的深浅拷贝
答案
浅拷贝:Object.assign
深拷贝:可以通过 JSON.parse(JSON.stringify(object)) 来解决

let a = {
 age: 1
}
let b = Object.assign({}, a)
a.age = 2
console.log(b.age) // 1

 
    一般情况下,浅拷贝可以解决大部分问题,但是如果当浅拷贝只解决了第一层的问题,但是接下来的值还是有对象的话,浅拷贝就不能运行出正确结果,这时候就需要深拷贝来解决问题。深拷贝可以运用JSON.parse(JSON.stringify(object)) 来实现

let a = {
    age: 1,
    jobs: {
        first: 'FE'
    }
}
let b = JSON.parse(JSON.stringify(a))
a.jobs.first = 'native'
console.log(b.jobs.first)

但是深拷贝还是有一定的局限性的,比如:不能序列化函数,会忽略undefined,不能解决循环引用对象。

题目二

js的性能优化
考点:
影响javasprite性能的因素

答案

影响js的性能的因素主要有:代码松散、缺乏组织,事件处理性质量差,依赖过多,迭代时间长。
我们可以从一下方面提高js的性能,进行优化:
减少 HTTP 请求数
减少 DNS 查询
使用 CDN
避免重定向
图片懒加载
减少 DOM 元素数量
减少 DOM 操作
使用外部 JavaScript 和 CSS
压缩 JavaScript、CSS、字体、图片等
优化 CSS Sprite
使用 iconfont多域名分发划分内容到不同域名
尽量减少 iframe 使用避免图片 src 为空
把样式表放在 link 中
把 JavaScript 放在页面底部

扩展

浅拷贝:如果原型对象的成员变量是值类型,将复制一份给克隆对象,也就是说在堆中拥有独立的空间;如果原型对象的成员变量是引用类型,则将引用对象的地址复制一份给克隆对象,也就是说原型对象和克隆对象的成员变量指向相同的内存地址。换句话说,在浅克隆中,当对象被复制时只复制它本身和其中包含的值类型的成员变量,而引用类型的成员对象并没有复制。
深拷贝:是一种完全拷贝,无论是值类型还是引用类型都会完完全全的拷贝一份,在内存中生成一个新的对象,简单点说就是拷贝对象和被拷贝对象没有任何关系,互不影响。

#面试题目#
全部评论
感谢楼主的分享,加油
点赞 回复 分享
发布于 2022-08-16 13:46

相关推荐

点赞 评论 收藏
分享
06-26 10:08
门头沟学院 C++
北京Golang实习,一个月4700,吃住都不报,公司位置在海淀。请问友友怎么看呢?如果要租房的话有什么建议吗
码农索隆:租房肯定是合租了,剩下的钱,差不多够正常吃饭了,看看能不能学到东西吧
点赞 评论 收藏
分享
评论
3
13
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务