Linux754介绍: IEEE 754标准是一种在计算机系统中用于浮点运算的标准化表示方法,它规定了浮点数的存储格式、舍入规则以及基本的运算操作。在Linux中,浮点数的处理通常遵循这个标准。浮点数被分为三个部分:符号位、指数位和尾数位。这个标准确保了不同平台和不同语言之间的浮点数运算能够保持一致性,从而在程序开发和数据交换过程中减少了误差。 介绍冒泡排序,选择排序,冒泡排序如何优化: 冒泡排序和选择排序都是简单的排序算法。冒泡排序通过重复遍历待排序的序列,比较相邻的两个元素,如果它们的顺序错误就把它们交换过来。优化冒泡排序通常包括引入一个标志位来记录上一次遍历是否有交换发生,如果一次遍历后没有发生交换,则说明序列已经有序,可以提前结束算法。 选择排序的基本思想是每次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。选择排序每次都需要遍历未排序的部分来确定最小(或最大)元素,时间复杂度为O(n^2)。 transform动画和直接使用left、top改变位置的优缺点: 使用CSS的transform属性进行动画化操作相比于直接改变元素的left和top属性,有以下优点:1) transform动画可以进行硬件加速,性能更高;2) transform可以实现3D变换,并且可以设置变换的中心点;3) 当元素位置发生改变时,transform不会影响文档的布局流,因此对文档流中其他元素的影响更小。 如何判断链表是否有环: 判断链表是否有环的方法之一是使用快慢指针。初始化两个指针,都指向链表的头节点,快指针每次移动两个节点,慢指针每次移动一个节点。如果链表有环,快慢指针最终会相遇;如果没有环,则快指针会到达链表尾部。 介绍二叉搜索树的特点: 二叉搜索树是一种特殊的二叉树,它满足以下性质:对于树中的每个节点,其左子树上所有节点的值都小于该节点的值,其右子树上所有节点的值都大于该节点的值。这种结构特别适用于实现查找、插入和删除操作,可以提供对数时间的查找性能。 介绍暂时性死区: 暂时性死区(Temporal Dead Zone,TDZ)是ES6中引入的一个新的概念,它描述了使用let或const声明的变量在声明之前无法访问的情况。这与var声明的变量不同,后者会进行变量提升(hoisting),在声明之前可以被访问(值为undefined)。TDZ的引入是为了减少程序中的错误和提高代码的安全性。 ES6中的map和原生的对象有什么区别: ES6中的Map是一种键值对集合,它可以使用任何类型的值作为键,包括对象。而原生的对象在JavaScript中作为键的只能是字符串或符号类型。另外,Map保持了键值对的插入顺序,而对象则不保证属性的顺序。 观察者和发布-订阅的区别: 观察者模式是一种对象间一对多的依赖关系,当一个对象改变状态时,所有依赖于它的对象都会收到通知并自动更新。而发布-订阅模式则涉及三个角色:发布者、订阅者和一个调度中心。发布者向调度中心发布消息,订阅者订阅消息,当消息到达调度中心时,调度中心负责通知所有订阅了该消息的订阅者。发布-订阅模式更加解耦,通过调度中心可以实现发布者和订阅者之间的解耦。 react异步渲染的概念,介绍TimeSlicing和Suspense: React的异步渲染主要是一种渲染策略,目的是为了提高应用的性能,避免在大型应用中出现卡顿现象。Time Slicing(时间分片)是其中一种策略,它允许React将渲染工作分割成小的时间片,这样应用可以持续响应用户的交互,而不会被长任务阻塞。Suspense是一个实验性的特性,它允许组件声明它们等待的内容,并可以控制等待时的渲染内容,比如一个加载指示器。 16.X生命周期的改变: 在React 16版本中,生命周期函数有了变化,比如引入了新的生命周期getDerivedStateFromProps来替代componentWillReceiveProps,以及新增了getSnapshotBeforeUpdate和静态getDerivedStateFromError方法。为了更好地控制组件的渲染过程,也引入了不推荐使用的getDerivedStateFromError和componentDidCatch等。 16.X中props改变后在哪个生命周期中处理: 在React 16.3之后,新增了一个名为getDerivedStateFromProps的静态方法。当组件接收到新的props时,或者在组件实例化后,该方法都会被调用。这个方法的目的是让组件在初始化时以及接收到新props时,能够更新state。如果返回一个对象,则该对象会被用于更新state,否则state保持不变。 介绍纯函数: 纯函数是函数式编程中的一个概念,它指的是一个函数的输出只依赖于输入的参数,不依赖也不改变外部的状态。纯函数执行时不会产生副作用,即不会改变全局变量、不会进行I/O操作、不会修改传入参数的值。 前端性能优化: 前端性能优化是一个宽泛的话题,包括但不限于减少HTTP请求的数量、使用内容分发网络(CDN)、压缩资源、优化图片和视频内容、减少DNS查询、减少重绘和重排、使用事件委托处理事件监听、利用缓存优化等。 介绍JSX: JSX是JavaScript的一个扩展,它允许开发者在JavaScript代码中使用类似HTML的语法来编写组件。JSX最终会被编译为JavaScript代码,React利用它来创建虚拟DOM。JSX并不是必须的,但它提供了一种直观的方式来构建组件的UI结构。 pureComponent和FunctionComponent区别: React的PureComponent是针对类组件的,它提供了一种优化手段,即通过浅比较props和state来决定是否需要更新组件,从而避免不必要的渲染。而FunctionComponent是基于函数的组件,它不涉及组件的实例化过程,是更加轻量级的。从React 16.8版本开始,引入了Hooks,使得FunctionComponent也能够管理state和执行副作用操作。 如何做RN在安卓和IOS端的适配: React Native提供了一套可以在不同平台之间共享的代码库,但每个平台的显示效果可能略有不同。适配工作通常包括设置不同平台的样式差异,使用平台特定的API或组件,以及确保在不同屏幕尺寸和分辨率上都能提供良好的用户体验。可以通过条件语句来区分平台,并根据需要引入特定的样式文件或组件。 RN为什么能在原生中绘制成功原生组件(bundle.js): React Native通过JavaScript与原生代码进行通信,bundle.js包含了JavaScript代码,当React Native应用启动时,JavaScript代码被加载并执行,它通过桥接技术与原生环境交互。这个过程包括调用原生API、触发UI更新等操作。因为原生环境提供了支持JavaScript运行的容器,所以bundle.js可以在其中执行,并成功渲染出原生组件。 介绍虚拟DOM: 虚拟DOM是一种编程概念,是真实DOM的一个轻量级的抽象表示。在前端框架中使用虚拟DOM可以提高性能,因为它可以减少与真实DOM的直接操作,通过批量更新来减少重排重绘的次数。当状态变更时,框架会首先构建一个新的虚拟DOM树,然后通过与旧的虚拟DOM树进行比较,计算出最小的变更集,最后一次性将这些变更应用到真实DOM上。 如何设计一个localStorage,保证数据的实效性: localStorage是Web存储机制中的一个部分,它允许网站存储键值对数据在用户的浏览器中。为了保证数据的实效性,可以存储每个数据项的同时,附加上一个时间戳,每次读取数据时都检查时间戳,以判断数据是否过期。如果过期,则可以删除该数据项或更新数据。在存储数据时,也可以考虑序列化和反序列化机制,以及对存储的数据大小有所限制。 如何设计Promise.all(): Promise.all()是一个用于处理多个Promise的组合工具。它接受一个Promise对象的数组作为输入,返回一个新的Promise。新Promise在所有输入的Promise都成功解决时解决;如果任何一个输入的Promise被拒绝,则返回的Promise立即被拒绝,并且拒绝的原因就是那个被拒绝的Promise的原因。 介绍高阶组件: 高阶组件(HOC)是React中用于复用组件逻辑的一种高级技巧。高阶组件本身并不是React的API,而是一个设计模式。它是一个接收一个组件并返回一个新组件的函数。高阶组件可以用于实现诸如权限校验、数据处理、扩展组件行为等复用功能。 sum(2,3)实现sum(2)(3)的效果: 在JavaScript中,可以通过闭包和高阶函数的概念来实现sum(2)(3)这种柯里化(Currying)的效果。柯里化允许我们将一个接受多个参数的函数转换成一系列使用一个参数的函数。例如,sum函数可以首先接收一个参数,返回一个新的函数,该新函数又接收下一个参数,并最终返回结果。这样的函数利用了闭包保持了函数参数的状态。 react性能优化: React性能优化通常包括以下几个方面:1) 使用shouldComponentUpdate方法避免不必要的重新渲染;2) 使用PureComponent或React.memo来实现组件的浅比较,以避免不必要的渲染;3) 利用React的Context API减少不必要的props传递;4) 使用生产环境版本的React减少包大小和优化渲染流程。 两个对象如何比较: 在JavaScript中,比较两个对象是否相等比较复杂,因为它们包含的是引用而非具体的值。可以采用深度比较方法,递归比较两个对象的所有属性值是否相等。这要求两个对象的结构完全相同,并且每个对应属性的值也相同。在实际应用中,有时可以转换为比较它们的字符串序列化结果是否一致,或使用第三方库如lodash提供的isEqual方法来完成这个工作。
- 粉丝: 1873
- 资源: 28
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助