前端面试(一)
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~