吐血整理

223 阅读9分钟

JS

  1. WeakMap 和 Map 了解吗? 说下他们的区别?WeakMap 是和垃圾回收有一些关系
  2. 0.1 + 0.2 !== 0.3 数字精度问题
  3. fetch有什么好处和缺点
  4. babel实现转码的过程
  5. jsonp有什么缺点
  6. set/map的区别
  7. decorator的作用,编译后是怎样的(@decorator -> decorator(target)...)
  8. symbol是什么,一般用来做什么,symbol 和 symbol 的 polyfill写法
  9. ts 泛型做什么的,infer关键字的作用
  10. 尾递归函数优化
  11. 请用一句话描述 try catch 能捕获到哪些 JS 异常
  12. 事件循环,哪些是宏任务,哪些是微任务,为什么要区分宏任务和微任务
  13. js堆和栈的区别,内存,垃圾回收,内存泄漏这篇文章可以凑合看
  14. 怎么看js异步编程,如何做到公共的封装,当组件销毁时取消请求

React

  1. react18
  2. react-router实现原理
  3. react16新增了哪些生命周期、有什么作用,为什么去掉某些15的生命周期
  4. fiber如何实现异步渲染的
  5. useEffect的实现原理,useState怎么做缓存的
  6. 简述一下redux的实现理念,手写一个redux connect
  7. Mixin、HOC、Render Props的区别和优缺点
  8. react diff如何实现,深度优先还是广度优先
  9. setState和hook的区别
  10. react 调用setState之后发生了什么
  11. pureComponentComponent的区别
  12. setState同步还是异步
  13. react 合成事件怎样的,有什么好处,冒泡和捕获怎么办
  14. 请问React调用机制一共对任务设置了几种优先级别?每种优先级都代表的具体含义是什么?在你开发过程中如果遇到影响主UI渲染卡顿的任务,你又是如何利用这些优先级的?
  15. render 和 renderToString 的底层实现上的区别
  16. useEffect、useLayoutEffect区别
  17. redux三大原则
  18. fiber节点对象的一些属性都有哪些
  19. 浏览器每一帧都做了什么,优先级是怎样的,requestAnimationFrame什么时候执行,requestIdleCallback什么时候执行,如果事件循环中微任务执行非常久,宏任务和rAF受什么影响(实际上页面会卡帧,FPS降低,导致rAF也不能执行)
  20. getDerivedStateFromError

常见功能实现

  1. 异步任务调度器
  2. 深拷贝
  3. 写一个图片懒加载
  4. 如何实现模块动态加载
  5. 4等分div并列布局
  6. 实现 instanceOf
  7. js sleep函数实现,三个版本都是一下,promise、generator、async await
  8. redux的compose函数做什么的,实现一个
  9. 实现typescript的ParamtersReturnType (考察infer关键字使用)、DeepReadOnly
  10. 实现Promise.all
  11. 手写分别实现apply, call, bind函数,
  12. 实现一个useState
  13. 用decorator装饰器模式实现防抖,节流函数
  14. requestAnimationFrame的作用及使用,替代setTimeout的写法
  15. 实现promise.allSettled 和 promise.all
  16. 实现cacheRequest方法,保证使用ajax请求相同资源实际只发送一次请求
  17. 手写promise
  18. node中promisify实现
  19. fetch兼容超时重传
  20. 观察者模式
  21. 扁平化
  22. 柯里化
  23. 手写实现async(链接中的第四题)或者这里
  24. 实现maxRequest,成功后resolve结果,失败后重试,尝试超过一定次数才真正的reject
  25. 实现一个new方法,关于继承可以看传送门,里面几种比较全,有优点和缺点
  26. 写一个 mySetInterVal(fn, a, b),每次间隔 a,a+b,a+2b 的时间,然后写一个 myClear,停止上面的 mySetInterVal
  27. 手写数组转树,arrayToTree
  28. 手写用 ES6proxy 如何实现 arr[-1] 的访问。proxy巧用
  29. 手写一个redux-thunk
  30. 对象数组转换成tree数组
  31. 实现类似模版字符串的解析
  32. 请实现一个 find 函数,功能等同于 document.getElementById
  33. 实现 一个 find sql功能
  34. 将字符串转成千分位。例如 '12345678' 转化成千分位是 '12,345,678'
  35. 数组的flattern方法(试一试用reduce实现)和对象的flattern方法
  36. 实现 applyMiddleWare,示例见链接
  37. 手写-将虚拟 Dom 转化为真实 Dom
  38. 手写函数实现数组([12, 3, 24, 1, 932, 6423])按照首位排序
  39. 实现一个典型的lazyMan
  40. 惰性求值
  41. 正则qq号
  42. abcdefgabchabja => 'abcdefabchabja'
  43. 数字转中文 123456 => '十二万三千四百五十六'
  44. sortDeps由文件依赖关系输出加载排序

算法

  1. 最大乘积子序列(leetcode-152)动态规划
  2. 翻转链表(leetcode-206)
  3. 快速排序
  4. 最小路径和动态规划
  5. 单词搜索(leetcode-79)回溯
  6. 洗牌算法(leetcode-384)
  7. 一个无限长有序可重复数组N,查X最后出现的位置
  8. 版本号排序
  9. 数组中第K大个元素
  10. 二叉树的所有路径(leetcode-257)
  11. 二叉树路径总和(leetcode-112)
  12. 二叉树的最近公共祖先
  13. 爱吃香蕉的珂珂
  14. LRU 缓存机制
  15. 二叉树遍历(dfs, bfs, 前序,中序,后序)
  16. 回文子串
  17. 最长回文子串
  18. 买卖股票的最佳时机
  19. 排序算法(冒泡、快排、插入、选择、归并)
  20. 无重复字符的最长子串
  21. 有一堆整数,请把他们分成三份,确保每一份和尽量相等(11,42,23,4,5,6, 56, 78, 90)
  22. 给定一个数组,按找到每个元素右侧第一个比它大的数字,没有的话返回-1的规则返回一个数组
  23. 从给定的无序、不重复的数组data中,取出n个数,使其相加和为sum
  24. 单向链表实现队列
  25. 根据传入参数n(数字)对一维数组(纯数字)按照距离n最近的顺序排序
  26. 判断一个字符串最多只删1个字符,是否能成为一个回文字符串
  27. 红包算法
  28. 螺旋矩阵(leetcode-52\59)
  29. 旋转数组的最小数字
  30. 二叉搜索树与双向链表
  31. 复原 IP 地址
  32. 二维数组中的查找
  33. 从先序遍历还原二叉树
  34. 大招
  35. 大招II

HTML & CSS

  1. 如何清除浮动
  2. BFC实现原理
  3. 实现动画有哪些方法(js & css)
  4. 图片base64和外链的应用场景,各有什么优缺点(base64减少请求数,但是会增加额外的体积)
  5. 如何监听html外链资源加载失败(面试官又追问了onerror 和addEventListener的error都能吗。面试官说onerror不行)
  6. 如何解决在移动端1px的问题?
  7. 客户端怎么处理 JS 事件失效的问题
  8. link标签prefetch和preload作用
  9. link和@import

Webpack

  1. HMR的原理,webpack怎么实现的热更新
  2. loader 和 plugins 的区别,plugins作用于哪个声明周期
  3. treeshaking原理
  4. Webpack 的工作流程
  5. Babel 的 preset 和 plugin 区别
  6. Babel 插件中 syntax 和 transform 的区别和联系
  7. webpack插件,同步异步等等

性能

  1. 白屏怎么优化
  2. 浏览器渲染出一个页面的过程
  3. 移动端一个元素拖动,如何实现和优化(节流、改变位置)

网络

  1. DNS解析、预解析、劫持
  2. http2,头部压缩、多路复用、server push
  3. https,对称加密和非对称加密,握手过程是怎样的
  4. CDN缓存
  5. TCP拥塞控制,TCP和UDP
  6. 有哪些常见的http头
  7. http 302 301 307之间的区别,301和302对于seo来说哪个更好 (301)
  8. http缓存机制
  9. csrf 是什么,如何防范
  10. sql注入是什么,如何防范
  11. 简单请求和复杂请求的区别
  12. no-stroe & no-cache
  13. 跨域请求能携带 cookie么
  14. http header字段都有哪些

Node

  1. nodejs事件循环机制
  2. pm2的原理,cluster和fork两种模式的区别
  3. 协程是什么,node怎样实现协程
  4. 锁机制,死锁,死锁产生的必要条件,node如何处理死锁
  5. node实现并发怎么做

软技能 & 功能设计

  1. 技术栈选型:特性、稳定性、性能、生态社区文档、兼容性、上手成本
  2. 弹幕设计和分页
  3. 二维码扫描登录实现原理
  4. 一组数组,实现Chrome控制台火焰图
  5. 大体积文件上传【分片、断点续传】
  6. A/B Test实现原理,如何实现10%,80%【一致性哈希算法、虚拟节点】
  7. 为什么要使用koa / express
  8. 如何设计一个单点登录方案
  9. 设计一个策略和方法,实现在https的前端项目里进行http请求
  10. 一个iframe,内嵌了一个A页面,iframe的宽高不停变化,如何让A页面的宽高实时自适应这个iframe的宽高大小
  11. 请设计一个方案:有a、b、c三个npm插件,它们会经常更新,在前端项目npm run start启动后,要求a、b、c三个npm插件自动更新到最新版本
  12. 一次性插入1000个div,如何优化插入的性能; 向1000个并排的div元素中,插入一个平级的div元素,如何优化插入的性能
  13. 实现一个搜索推荐组件会考虑哪些
  14. 劫持所有的a标签,点击时不发生跳转,而是弹出提示框提示即将跳转到某个网址,点击确认则跳转,点击取消则无操作
  15. Antd栅格布局的实现
  16. A页面跳转到B页面,在B页面做的操作传输给A页面的方法
  17. 实现一个多级菜单,菜单层级不定
  18. 如何设计实现一个渲染引擎
  19. 从输入URL到看到页面发生了什么【高德】
  20. 设计模式
  21. npm、yarn、pnpm
  22. lerna是怎么工作的

好文章&工具

  1. typescript挑战
  2. react源码阅读
  3. react如何调试源码