前端面试(一)

1、 问:React的生命周期钩子  答:componentDidMount, componentWillUnmount, componentWillMount, componentWillupdate...回答不够完整

事后总结:

1)挂载,当组件实例被创建并插入DOM中时,其生命周期调用顺序如下:

constructor()

static getDerivedStateFromProps()

render()

componentDidMount()

2)更新,当组件的 props 或 state 发生变化时会触发更新。组件更新的生命周期调用顺序如下:

static getDerivedStateFromProps()

shouldComponentUpdate()

render()

getSnapshotBeforeUpdate()

componentDidUpdate()

3) 卸载,当组件从DOM 中移除时会调用如下方法:

componentWillUnmount()

4)错误处理,当渲染过程,生命周期,或子组件的构造函数中抛出错误时,会调用如下方法

static getDerivedStateFromError()

componentDidCatch()

2、问:js 怎么合并两个对象  答:Object.assign()

3、js 怎么快速获取object 属性  答:没有概念(当时纠结着 “快速” ?,事后觉得面试官应该是问怎么获取属性吧?

4、问:arguments  答:函数内部接收参数的类数组对象

5、问:js 怎么确定类型  答:instanceof,typeof

6、问:instanceof有什么缺点  答:不同浏览器对函数的instanceof可能返回值不一样(其实没想到instanceOf 有什么缺点,而且弄混了instanceof和 typeof

事后补充:

typeof 可以准确的判断原始值的数据类型(undefined, boolean, string, number, object, function symbol),但不能区分引用值的具体类型,比如 Array 、Date 以及自定义类。instanceof 检测原始值始终返回false,检测引用值时,若该引用值是给定引用类型(原型链上)的实例则返回true,注意:所有引用值都是Object类型的实例。

7、问:怎么优化前端页面性能  答:React.lazy 懒加载路由

事后补充:

1、代码性能

1)js作用域,避免全局查找

2)对象,避免不必要的属性查找

3)优化循环:简化终止条件,简化循环体,使用后测试循环,展开循环

4)语句最少化

5)优化 DOM 交互

2、代码构建

1)代码分割,并行加载

2)React路由懒加载

3)代码压缩

3、减少请求数量

1)图片合并,或者使用base64

2)减少文件数量

3)利用浏览器缓存

8、问:怎么实现跨域请求  答:JSONP,图片探测,跨源资源共享(CORS)

 

面试结果:没通过,主要是没有工作经验,面试答得也不太ok

 

posted @   黄燃  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示