前端面经:蚂蚁集团
代码题:
(1)非递归实现二叉树中序遍历
使用栈来实现二叉树的中序遍历。
(2)买卖股票的最佳时机
描述一个算法,找出给定股票价格列表中买卖一次获得最大利润的时机。
基础题:
(1)宏任务和微任务
宏任务(如setTimeout、setInterval)和微任务(如Promise、MutationObserver)的执行顺序,以及它们的区别和包含的例子。
(2)箭头函数作为构造函数
(3)浮点精度问题
由于JavaScript使用IEEE 754格式的双精度浮点数,可能导致精度问题。可以使用第三方库如decimal.js来解决。
(4)原型链
原型链是JavaScript对象继承的机制,通过原型对象连接形成的链式结构。
(5)for in 与原型链
for...in循环可以遍历对象自身的可枚举属性,以及原型链上的可枚举属性。
(6)浏览器跨域限制
浏览器出于安全考虑限制跨域请求。可以通过CORS、JSONP、代理服务器等方式解决。
(7)JSONP
(8)跨域请求的拒绝
跨域请求是由浏览器安全策略拒绝的,而不是服务器。
(9)HTTP OPTIONS请求
(10)HTTP请求方法
主要包括GET、POST、PUT、DELETE等。
(11)POST与GET的区别
POST用于提交数据进行处理,GET用于请求数据。POST对数据大小没有限制,而GET请求的数据会附加在URL上。
(12)React Fiber
(13)React任务调度
React通过任务调度算法(如Fiber)来合理安排更新的时机和顺序。
(14)浏览器剩余空间时间
React通过时间切片和请求动画帧(requestAnimationFrame)来估算浏览器的空闲时间。
(15)requestAnimationFrame
requestAnimationFrame作用。
(16)React合成事件
React合成事件是一个跨浏览器的事件处理系统,不直接绑定在元素上,以提高性能和一致性。
(17)高阶组件(HOC)
HOC是一种React组件复用逻辑的高级技术,可以用来增强组件功能。
(18)useEffect、useState使用限制
useEffect和useState需要在组件的顶层使用,不能放在条件判断语句中,以避免潜在的副作用和状态管理问题。
(19)微前端
#软件开发笔面经#