面试中问到的问题

3 篇文章 0 订阅
2 篇文章 0 订阅

问题1 介绍一下React

React是一个UI框架。它创造了虚拟DOM并将他们存储起来。每当状态发生变化的时候就会创建新的虚拟节点和之前的进行对比,让变化的部分进行渲染,整个过程没有对DOM进行获取和操作。只有一个渲染的过程 ,所以React是一个UI框架;

问题2 介绍一下Redux

Redux其实就是一个状态管理的容器。主要分为三部分,action,reducer,Store;
action 用来操作state到store.是store的唯一来源。以对象的形式存在;
reducer 是action的处理器,主要处理传入的action和旧的state。按指定的逻辑返回新的state;
store就是把这几样东西连接到一起。维持应用的state;提供dispatch({})方法更新state;提供getState()方法获取state,通过subscribe()注册监听器

说一下钩子函数

10个钩子函数:getDefaultProps():设置默认属性。getInitialState()设置初始状态,一般不用;componentWillMount()组件初始时调用。挂载前。只调用一次。render()创建虚拟DOM,进行DIFF算法。更新DOM树。componentWillReceiveProps(nextProps)组件初始状态时不调用。组件接受新的props时调用。shouldComponentUpdate(nextProps,nextState)react性能优化的一环。componentWillUpdata(nextProps,nextState)将要更新时。render()重新渲染页面。componentDidUpdate()更新完成后。componentWillUnmount()组件将要卸载时;

JS回收机制有哪几种方法?

(1)标记清除法
(2)引用计数法

说一下性能优化

减少Http请求。资源合并压缩。图片压缩等。减少DOM操作。

说一下闭包

什么叫闭包?闭包就是当一个函数被父函数之外的一个变量引用时就会形成闭包。一般当一个函数执行完成后。其作用域就会销毁。如果是闭包的话就不会被销毁。闭包的作用就是包含私有变量不被外界污染、通过接口的方式来获取变量。但是外界不能直接获取该变量;

说一下原型链, Function类和Object类是什么关系?

在JS中万物皆对象。每个对象都有一个__proto__属性。该属性指向它的原型。当一个对象在查找一个属性是。如果自身没有。就会通过__proto__往它的原型查找。直到找到Object.prototype.__proto__为null。这样就形成了原型链;
Function.proto==Object.proto //true Function是Object的实例。同样Object又是Function的实例、

说一下JS中的单线程和多线程

首先要知道JS是单线程。单线程就是上一个任务执行完成以后,才会执行下一个任务。上一个任务如果没有执行完,下一个任务就处于等待状态;
那么JS在最初设计的时候就设计成单线程。因为,假设JS是多线程的。那么第一个线程是删除DOM,第二个线程是编辑DOM 那么JS先执行那个呢?所以JS设计成单线程是有一定的原因的。还有一点JS就是用来操作DOM的;
说到这里。如果上一行解析时间太长。那么下面的代码就会被阻塞。对于用户而言。阻塞就意味这卡死,这样就导致了很差的用户体验;那么这时候。JS中的异步事件函数就出现了。JS是单线程的,只有一条线程。那么是如何实现异步的呢?是通过事件循环(Event Loop);

console.log(1)
setTimeOut(function(){
console.log(2)
},0)
console.log(3)

//1 3  2

也就是说setTimeOut里的函数没有立即执行,而是延迟了一段时间,满足一定条件之后才去执行,这类代码就叫异步代码
所以JS里分为同步和异步两种方式

  • 首先判断JS是同步还是异步。同步就进入主线程,异步呢就进入事件列表中;
  • 异步任务在事件列表中注册函数,当满足一定条件后,被推入事件队列中
  • 同步任务进入主线程后一直执行,直到主线程空闲时,才会去事件队列中查看是否有可执行的异步任务,如果有就推入主线程。这就是事件循环;
    再深刻一点就是:
    异步事件又分为宏任务和微任务、宏任务好比setTimeOut,setInterval…,微任务。比如new Promise.process…,
    那么当执行到异步任务时候。会执行宏任务并把微任务放入事件队列中。等宏任务执行完成以后。再把事件队列里的微任务全部执行;严谨的来说应该是这样的;
基于STM32F407,使用DFS算法实现最短迷宫路径检索,分为三种模式:1.DEBUG模式,2. 训练模式,3. 主程序模式 ,DEBUG模式主要分析bug,测量必要数据,训练模式用于DFS算法训练最短路径,并将最短路径以链表形式存储Flash, 主程序模式从Flash中….zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值