# 快手
# 一面
# react 16 新增了那些生命周期函数,有什么作用,为什么去掉某些 15 的生命周期
# fiber 原理,如何实现异步渲染(链表/可中断)
# redux 和 redux-saga 的区别和原理
# 项目中用到的 saga-duck 是什么东西
# useEffect 的实现原理
# 异步渲染和旧版的 diff 的区别
# babel 实现转码的过程(词法、语法分析)
# 项目技术栈怎么选型
# 小程序底层实现原理了解多少(双线程模型/预加载Webview)
# 项目 nodejs 应用异常退出如何处理(pm2/uncaughtException 事件等)、日志上报怎么做(输出重定向到文件,elk服务传到kibana)
# graphic schema 怎么设计
# 有哪些技术驱动业务的案例
# 算法:最大乘积子序列 (opens new window)
# 拼多多
# 一面
# redux 理念
# react-redux 中 connect 怎么实现
# mixin、hoc、继承的区别、优缺点
# react diff 实现
# react 旧版的diff用深度优先还是广度优先。为什么用深度优先,广度优先能实现吗
# diff的时间复杂度?为什么?
O(n)
react 从 O(n3) -> O(n)
# react-router 实现原理
# 客户端路由 hash/history 实现的区别、原理
# 有哪些常见的 http 头
# websocket 轮询的好处缺点
# websocket 握手的过程
# tcp 握手过程
# tcp/udp 的区别
# 尽可能多实现pdd app 导航布局实现(4等分div并列排布)
# 如何清除浮动
# BFC 实现原理
# 开放题:pdd 假设没有首页优化,尽可能想办法优化
# 二面
# css盒子模型(content-box、border-box)
# 实现动画有哪些方法
# react mixin hoc 以及 hook 之间的区别和优缺点
# 浏览器渲染出一个页面的过程
# vue/react 技术选型
# 项目相关,重构开发如何并行
# 项目中工程化进行了哪些优化
# 项目中进行优化会从哪方面去做
# nodejs 性能优化
# linux 文件权限
# 前端监控怎么实现
# 虾皮
# 一面
# http 302 301 307 的区别
# 301 和 302 哪个对 seo 更友好(301)
# 跨域是什么、如何解决
# jsonp 有什么缺点
# base64和外链的应用场景,各自的优缺点
# http缓存机制
# https 的握手过程
# set/map 的区别
# hook 的局限性
# setState 和 hook 的区别
# decorator 的作用,编译后是什么样子的
# symbol 是什么,一般用来做什么
# csrf 是什么,如何防范
# sql注入是什么,如何防范
# react 调用 setState 之后发生什么
# nodejs 事件循环机制
# pm2原理,有哪些模式(cluster fork)
# docker 和 k8s 有了解多少
# 移动端一个元素的拖动,如何实现和优化(节流,改变位置)
# for in / for of 看代码输出
# 描述链表的反转如何实现,复杂度多少
# 实现 instanceof
# 实现一个对象被 for of
遍历
# 实现链表的添加、删除。复杂度是多少
# 二面
# 给两段效果上都可以实现继承的代码,说出差异
function child() {}
function parent() {}
child.prototype.__proto__ = parent.prototype
child.prototype = new parent()
# this 输出问题
# 如何监听 html 外链资源加载失败
# Mutation Observer
、Intersection Observer
使用场景
# 127.0.0.1
和 0.0.0.0
差别(一个只能通过 localhost
,另一个可以通过本机 ip 或者 localhost 都可以)
# 利用 Promise js sleep 函数实现
# jsx 转换后是什么样子的
# redux compose 函数是做什么的,中间件呢
# redux-sage 是什么,和 redux-thunk 有什么区别
# dva 了解吗
# umi.js 有用过吗
# req.pipe(res)
# stream 如何处理数据消费和数据生产的速率不一致问题
# writeable stream drain 事件是做什么的(这是和一个控制读写速率有关的事件)
# 字节
# 一面
# 常用的 http 状态码(101 200 204 301 302 304 307 400 404 500)
# 301 和 302 的区别(永久/临时)
# 前端路由如何实现
# 前端路由刷新404如何处理(404时重定向到index.html)
# 从前端到后端全链路如何设计一个登录的流程(session 方案、jwt)
# 什么是跨域,怎样处理
# 简单请求、复杂请求
# 浏览器的缓存策略
# domain 属性解决跨域,几种domain设置对跨域是否生效
# ts泛型做什么的,infer关键字的作用
# 实现 typescript 的 Paramters、ReturnType
# 实现 Promise.all
# 实现一个并发请求控制函数,限制并发数
# 二面
# jwt 原理
# xss和csrf防范
# pureComponent 和 Component 区别(前者 shouldComponentUpdate 默认比较 props)
# react hook hoc 解决了什么问题
# 有哪些常用的 hook
# 项目实现一个中间层的意义(前端全链路日志打通)
# setState 同步还是异步
# setState 传递对象和函数有什么区别
# 合成事件是怎样的,有什么好处
# 事件冒泡和事件捕获的区别,react中的冒泡和捕获(react 都是合成事件,无论是冒泡还是捕获,都对应原生中的冒泡)
# 水平垂直居中
# 手写 bind
# 实现快排
# 三面
# graphql 相比 restful 的区别,优缺点
# 为啥选择了redux-saga
作为解决方案(解决异步优雅/提供很多工具函数)。redux
的异步中间件方案有哪些,对比。saga
对比dva
?
# graphql的鉴权在哪里做
# 协程是什么(语言层面实现的并发),Go/nodeJs怎样去实现协程(Go使用go关键字、node
可以使用Generator
实现、我理解react
16的异步渲染也是协程的实现)
# react
fiber
的机制是怎样的
# 锁机制的作用,node和Go如何处理死锁
# Go/node实现并发怎么做
# node和Go的优缺点怎样理解
# 实现一个 useState
← 字节跳动.md 字节跳动(EA).md →