阿里-前端-一面(已offer)
9月20日 16:00 实习
- 会不会遇到性能问题,怎么解决的
- 云产品错误监控方案设计
- 项目遇到的难点,怎么解决的 React源码深入:
- 怎么理解VDOM,有什么好处,底层原理是什么
- fiber树原理,中间有哪些阶段
- 怎么拿到state,状态更新的原理是什么
- useEffect会在什么时候执行
- 如果useEffect依赖数组是对象,对象属性值改变会引起Effect内的重新更新吗?函数呢
- useMemo依赖影响,useMemo有什么作用 前端工程化
- Webpack和Vite在原理上有什么区别
- Vite除了热更新还有什么好处
- 线上打包产物与开发环境不一致怎么解决
- 线上白屏事故怎么定位问题,你有什么解决思路 输入url到页面加载发生了什么(中间不断打断,插入问题)
- url,浏览器会对url校验吗
- 请求发送到dns服务器以前会做什么
- TCP连接如何建立的
- 服务端处理报文会做什么
- 如何确定一个任务是不是长任务
- js是否会阻塞浏览器加载
- 浏览器有哪些性能检测方案,提供了哪些API
- 前端异常如何监控,有哪些异常,Promise的catch能不能被window.onerror捕获到。 算法:
- 手写render函数(vdom转dom)
const render = (element, container) => {
// 创建node节点,对文本节点和非文本节点做不同处理
const node = element.type === 'TEXT_ELEMENT'
? document.createTextNode('')
: document.createElement(element)
// 递归处理children
element.props.children.map(child => render(child, node))
// 将props里的属性赋给dom节点
Object.keys(element.props)
.filter(key => key !== 'children')
.forEach(name =>
node[name] == element.props.name
)
container.appendChild(node)
}
- 2. 判断镜像二叉树
const isSymmetricTree = (root) => {
return root === null
? true
: judge(root.left, root.right) // 递归处理左右子树
}
const judge = (left, right): boolean => {
if (left === null && right === null) {
return true
} else if (left !== null && right !== null) {
return
left.val === right.val
? judge(left.left, right.right) && judge(left.right, right.left) // 判断镜像核心逻辑
: false
} else {
return false
}
}
#面经##校招##阿里巴巴##前端工程师#