金九银十|前端真实面试知识点梳理

目录

1.vue

2.react

2.离职原因

3.提问环节

4.加班 

5.职业规划

6.期望薪资

7.你的缺点

8.谈项目经历


1.vue

1.1真实dom,虚拟dom渲染原理,diff算法如何理解,渲染过程,生命周期的什么阶段,Key的作用

真实dom上ast生成,vdom是一个js对象,diff算法对比过程?更新dom触发render函数,通过diff算法,getter方法会被调用,setter通知wather组件实例,进行页面的重绘,回流。created声明周期dom没有生成,但是有实例的this,mounted函数可以获取真实dom。

key的作用作为唯一标识,来进行内容改变的时候,真实dom进行更新

        为什么不能用inde作为key,做数据进行逆序增加,删除的时候会没必要的更新,或者进行输入类的dom的时候界面显示有问题

        如果内容不改变,只是dom的顺序改变,vue将会怎么更新渲染?

 vue是异步更新dom,按照一定的策略更新,什么策略?vue中的数据更新不是立即的,而是异步更新,意味着数据变化的所有事件会进入一个队列之中,wacther的多次触发,只会进入队列一次,然后在下一次是事件循环里面vue会进行队列的执行,并且刷新队列。

1.2异步方面,nexttick使用,整个事件循环的机制,过程

事件循环可以理解为js是单线程的,一次只能执行一个任务,当多个任务同时执行,会导致阻塞,把数据等计算过程较慢的进行异步队列,等主线程代码块执行完,再执行队列任务,再循环执行点击事件,以及后续的异步任务。

1.3数据传递方面,vuex,pinia区别

vuex中的state的作用,用于存放组件之间共享的数据。单一的状态树,可以传递给所有的父子组件。每个应用只有一个实例,vuex可以获取组件在任何状态下的快照。

vuex::mvvm架构,发布监听者的模式,state->getter()=>mutation(commit('xxx'))->action(dispatch({}))->改变state->view

pinia:state->getter->action 可以直接改变state. 更轻量化,简洁   storeToRefs进行数据结构

$patch 进行多个state同时修改

1.4vue实现按需加载路由或者组件

webpack中提供了require.ensure( )来实现按需加载

requrie.ensure([],()=>require('src'))

1.5data为什么是一个函数

保证函数是独立可复用的,每次实例化一个组件的时候,都是可以生成一个data对象的,相互之间不干扰。

1.6如何用vue-cli自定义组件

1,定义组件

2,import 导入组件,传递参数喝方法

3,components定义组件,在template引入

4,全局组件vue.component()

1.7watch和computed的区别

区别 watch computed
场景 一个数据影响多个数据 一个数据受到多个数据影响
功能 不需要return 必须return
缓存 没有缓存 有缓存
初始化 添加immediate:true 默认立即执行
是否异步 支持 不支持
功能 监听 计算属性

1.8vue的响应式的系统是怎么样的

每个vue组件都有一个与之对应的watcher实例,vue的data上的属性会被添加到getter,setter中,然后进行所有变动的data的依赖收集,通知每个依赖的data的组件调用render方法进行更新

v-model 父子组件中的使用

slot插槽的使用

1.9性能优化方面

1,http减少请求数

2,组件封装

3,js写在后面,html,css写在前面

4,压缩

5,缓存

6,打包优化

7,工程管理

8,可复用,低耦合高内聚,降本增效

9,懒加载,预加载

10,路由懒加载

11,cdn技术,iconFont图标

1.10模块化

5,amd  异步打包机制  js前端 define(['dep1', 'dep2'],function(dep1,dep2){

return function(){}
})

6,cmd  同步的 moudle.exports= {} require()  js后端

7,umd 通用模块定义 webpack打包机制 umd

8,esm es6打包机制 esm  import export 

1.11算法

1,冒泡排序,快速排序算法

2,数组、字符串、链表、栈、队列、哈希表、二叉树、堆、递归、深搜广搜、动态规划基础题,最好每个类型做几道常见题练练手感

3,浏览器获取地址栏参数

4,反转数字

5,数组降纬

6,回文字符串

7,场景题:数字递增,暂停,继续功能;函数式组件实现井子棋

8,状态提升,

1.12协议 

http协议

tcp协议 三次握手 四次挥手

1,客服端发送 syn=1 seq =x 服务端 发送ack = x +1 syn=1 seq= y 客服端发送ack报文 ack=y+1 syn=0 seq =z

2,主动方 发送 fin=1 seq =x  ack = z 被动方发送ack = x +1 seq =z  被动方再发送 ack = y fin =1 seq = z  主动方发送 ack = y seq = x

为什么是三次握手不能是两次?

        防止攻击,防止发生死锁

为什么是四次挥手?

        防止数据包丢失,FIN和ACK报文是分开发送的

等待2msl才CLOSED?

        等待发送数据包完成,防止重复在在旧ip和端口建立重复的分组

各网络层对应的工作设备:
        物理层:中继器、集线器
        数据链路层:网桥或交换机
        网络层中继系统:路由器
        网络层以上的中继系统:网关

1.13Websocket 

1,全双工的协议

2,如何进行心跳监听

3,有线网切换wifi是否断开,wifi切换有线网是否断开

4,原理是什么

1.14路由守卫

1,hash路由和history路由的区别

2,全局路由守卫和各个子组件的路由守卫是什么?哪些路由守卫是各自独有的?

3, 路由的原理是什么

2.react

2.1事件处理机制,事件委托

事件机制。捕获 冒泡 目标 事件冒泡到document地方,react进行重写了事件默认冒泡方式,使用dispatchEvent进行事件派发,systheicEvent总的事件委托,事件冒泡和事件捕获的区别?react怎么实现事件捕获,默认是事件冒泡。

2.2dom渲染过程

1,jsx语法 底层是react.createElement() ,

2,递归渲染和fiber架构渲染的区别?

3,怎么做渲染的性能优化?

4,scu和hooks语法分别怎么去做组件的性能优化?

5,scheduler.postTask的实现过程和兼容性问题

6,requestIdleCallback是干嘛的?接受的参数和作用?

2.3函数式组件。hooks 

1,函数式组件和class组件的对比?

2,useMemo和react.memo的区别

3,useEfffect和useLayoutEffect的区别

4,怎么优化性能,useMemo和useCallBack如何使用

5,数据是如何保存的?如何更新的?底层实现过程是怎么样的?

6,react生命周期的UNSAFE_前缀的含义?为什么导致重复渲染?导致死循环?

7,getSnapshotBeforeUpdate的作用?与componentDidUpdate的关系?

8,

2.4react架构的原理

1,数据层面的架构变化(实现方式是什么?)

2,渲染层面的性能提升

3,声明周期方面的控制

4,数据传递方面的优化

5,HOC和组合式组件的区别?

2.5redux的原理和实现过程

1,mvvm和mvc的区别

2,redux实现异步

3,redux和react-redux的区别

4,connect高阶组件接受的参数和作用


2.离职原因

1,上一家公司是小公司,公司业务流程规范性比较低,自己想去大公司学习更加规范的业务流程,也有利于个人的发展

2,之前呢,公司只做国内业务,不做海外业务,我了解到贵司在做海外业务,我希望能开阔一下个人的视野

3,之前的公司做的业务是助贷相关的,后续会受到国家助贷管理办法的约束,不利于个人发展,担心随时可以被优化,不符合个人的职业规划,自己想去一个稳定的行业能够踏踏实实做事。

3.提问环节

您觉得一个优秀的员工需要具备哪些特质呢?

公司的团队规模和目前所做的业务是什么?

我的主要工作职责是什么?

请问公司的晋级制度是怎么样的呢,对于表现优秀的员工会有怎么样的激励制度呢?

新员工在两到三年内会有怎么样 的发展呢?

这份工作对于新人最大的挑战是什么呢?

您觉得应该怎么应对挑战呢?

4.加班 

 如果是工作需要的话,我会义不容辞的加班,我目前是一个人,没有负担,可以全身心的投入到工作中,但是同时我也会提供开发效率,减少不必要的加班

5.职业规划

学习:在学习方面,我打算深入研究vue3源码和白帽子的web安全理论,两年内完成vue3源码的系列专栏,和web安全方面的系列专栏

工作:在工作方面,打算在技术方面有所突破,在web前端领域成为技术专家

管理岗位 :如果后续公司有管理岗位的机会啊,待能力成熟时,希望能够带领团队

6.期望薪资

希望公司能够根据我个人的开发年限和经验,结合市场的标准给予我合理的薪水 

1,个人底线薪资

2,期望薪资在底线薪资上浮20%

3,工作年限薪资区间

7.你的缺点

我个人比较重视细节,在前端开发过程中不可避免的浪费了一部分时间,后面我通过时间管理,先做框架,完成整体流程,后面在优化细节,探讨原理,总结经验完成了对于工作时间的把控。

我这个人不太懂的拒绝别人,导致工作很累,通过多任务处理能力将任务排序,将手头的工资高进行排序,给出帮助同事的时间,然后让同事自行决定是否需要帮助。

8.谈项目经历

1,STAR法则

STAR法则是情境(situation)、任务(task)、行动(action)、结果(result)四项的缩写。

在什么场景下,接到了什么任务,我做了哪些工作,最后的结果是什么。

多用数据,更有说服力。

微前端项目的实现过程

你可能感兴趣的:(面试,前端,javascript,开发语言)