前端面试笔记(二四年八月至今)

123 阅读4分钟

h5,c3篇

position有哪些值

- relative 相对定位
- absolute 绝对定位
- static 静态(默认值)
- fixed
- sticky
- 追问static什么时候用,答:我不太清楚。。。

垂直居中有哪些方法

1. 定位,margin 移动
2. flex
3. 总的来说就定位然后移动dom的一半

js

let和const

- let定义变量,const定义常量
- 没有变量提升
- 有作用域
- 追问,你怎么实现一个const特性,答:不会。
- 后面看了下是Object.freeze()

排序有哪些

冒泡排序
sort
reduct
追问:冒泡排序怎么实现
答:双重for循环(面试官说可以了)

promiss.rece()有什么作用

- 返回一个最快有结果的promisee的结果

js执行机制

- js是单线程语言
- 第一次先执行同步任务,遇到宏任务放到宏任务队列,遇到微任务放到微任务队列
- 同步任务执行完,开始执行微任务队列
- 微任务执行完会执行宏任务队列
- 然后实现循环
- 追问:常见的宏任务和微任务有哪些
- 宏任务:定时器,http请求
- 微任务:promiss.then

react

fiber是什么

是新的协调算法
“React中的Fiber是一种内部实现的新调度算法和数据结构,
旨在解决React早期版本在处理UI更新时可能出现的性能瓶颈。
Fiber使得React可以异步地执行工作,并且支持优先级调度,
这样即使在执行复杂的UI更新时也不会阻塞用户界面。
通过使用双缓冲机制和递归终止条件,
React能够在不影响用户体验的前提下逐步更新界面。
此外,Fiber还支持并发操作,使得React在处理大规模应用时更加高效。
对于开发者而言,Fiber使得React的Hooks API更加易用,
并且增强了错误处理的能力。”
解决了diff算法在递归的时候不能暂停的问题
特点是分片渲染、可暂停、计算优先级
追问:引入fiber对你开发有什么影响
答:具体我感觉就是渲染页面不卡顿了
补充
1.性能提升:由于fiber的上下文切换开销远小于传统线程,因此在高并发场景下可以显著提高应用性能。
2.资源消耗减少:与传统线程相比,fiber占用的系统资源更少,这意味着可以在相同的硬件上运行更多的任务。
3.开发效率提升:使用fiber可以减少因等待I/O操作而导致的阻塞情况,这可以让开发者更加专注于业务逻辑的实现而不是并发控制。

常用的hooks有哪些

 1. useRef(亿达内面)
        1、获取dom的属性
        2、非受控组件
        3、高阶函数取值

生命周期有哪些

redux

qiankun

dva

useEffect能放在if判断语句里面吗

不可以

  • 不可预测的的副作用执行时机
    • 如果将 useEffect 放在 if 语句中,那么只有在满足 if 条件的情况下才会执行副作用,这意味着在某些情况下副作用可能不会被执行。这可能导致副作用的执行时机变得不可预测,进而导致组件行为不一致。
  • 违反hooks规则
    • React 的官方文档明确规定,Hooks 必须在函数组件或自定义 Hook 的顶层调用。这意味着你不能在循环、条件或嵌套函数中调用 Hooks。这样做是为了确保每次渲染时 Hooks 被调用的次数相同,并且 Hooks 的调用顺序保持一致。如果在条件语句中调用 useEffect,那么在不同的渲染中 useEffect 可能会被调用多次或根本不被调用,这会破坏 Hooks 的行为。
  • 状态更新问题
    • 如果在某些情况下 useEffect 不被执行,那么依赖于 useEffect 内部状态更新的逻辑可能会出现问题。例如,如果 useEffect 中包含了状态更新操作,而在某些渲染周期中这些操作没有被执行,那么状态可能会变得不一致。

场景题

如果让你一个react页面你会注意什么

- 组件懒加载
- 将业务分成多个小组件,并且用useMome和useCallback包装,防止父组件页面状态更新子组件重复渲染
- 列表使用唯一key
- 长列表或者图片使用懒加载

AI问答

- 问:你做AI问答的时候引入大模型了吗
- 答:引入了
- 问:你才用流式渲染了吗
- 答:没有

开发过程中你遇到的难题是什么

- 这个真的很难回答
- 我是做安全部门中后台的,平时都是增删改查,封装业务组件,难度并没有太大的
- 有没有jy分享下

你觉的你的优势是什么

- 事少
- 干活快
- 熟悉流程(面的阿里外包,已经做过两年阿里外包了)