坐标杭州,我在上半年陆续找过一些前端实习,记录面经(只记录技术面,不记录HR面)于此,供你们分享,只记得其中一些问题了,见谅。
现正在准备秋招,你们一同加油吧!javascript
Promise
如何实现链式调用
Promise.then
Promise2
在 Promise1
以后调用
async await
Promise.all
for...in
和 for...of
的区别
for...in
遍历键名(Key)并转化为字符串,for...of
遍历键值(Value)for...in
语句以任意顺序遍历一个对象自有的、继承的、可枚举的、非 Symbol 的属性for...in
更适合遍历对象,for...of
更适合遍历数组。for (let i in [1, 2, 3]) {
console.log(typeof i); // string 数组下标被转化字符串
console.log(i); // '1', '2', '3'
}
var triangle = { a: 1, b: 2, c: 3 };
function ColoredTriangle() {
this.color = 'red';
}
ColoredTriangle.prototype = triangle;
var obj = new ColoredTriangle();
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) { // 若是去了 hasOwnProperty() 这个约束条件会怎么样?
console.log(`obj.${prop} = ${obj[prop]}`); // obj.color = red
}
}
复制代码
Set
和 Map
Set
有哪些遍历方法
Set.prototype.values()
Set.prototype.keys() // 等于 Set.prototype.values()
Set.prototype.entries() // [value, value]数组
Set.prototype.[Symbol.iterator]()
// 以上所有返回一个新的迭代器对象
Set.prototype.forEach()
for ... of
复制代码
let [x = 1] = [undefined];
x // 1
let [x = 1] = [null];
x // null
// 注意,ES6 内部使用严格相等运算符(===),判断一个位置是否有值。因此,只有当一个数组成员严格等于undefined,默认值才会生效。
复制代码
CSS、JS、React
实现动画:方块从屏幕左下角运动到右上角
translate + animation
position + top/left + transition
CSS
的最终表现分为如下四步:Recalculate Style
-> Layout
-> Paint Setup and Paint
-> Composite Layers
,即查找并计算样式 -> 排布 -> 绘制 -> 组合层。transform
是位于 Composite Layers
层,而 width
、left
、margin
等则是位于 Layout
层,在 Layout
层发生的改变一定致使Paint Setup and Paint
-> Composite Layers
,因此相对而言使用 transform
实现的动画效果确定比 left
这些更加流畅。transform
等开启GPU加速。requestAnimationFrame / setTimeout
Ref
Dom
interface(接口)
和type(类型别名)
的区别
&,extnds
)interface
可以声明合并type
能够声明基本类型别名,联合类型,元组等类型
type DiffName = string;
type Pet = Dog | Cat
TS class
相对于 ES6 class
的拓展
readOnly
只读属性abstract
抽象类包含抽象方法,必须在子类中实现,且子类使用 extends
private
protected
说一下经常使用的模块html
path
fs
stream
http
util
实现 EventEmitter
,以及应用场景前端
emit
on
NodeJS
是基于异步事件驱动的架构,须要一个事件调度中心stream
fs
net
http
都继承 EventEmitter
发布-订阅
模式和 观察者
模式的区别java
发布-订阅
模式,发布者和订阅者不须要彼此了解,有消息队列的存在观察者
模式主要以同步方式实现,发布-订阅
模式主要以异步方式实现Subject
还保留了 Observers
的记录如何实现脚手架react
process.argv
获取参数,下载 Github 对应的 模板
,修改 模板内容
npm login
npm publish
Redux
的原理和流程Mobx
的原理,如何实现数据的监听
proxy
Redux
中为何要直接替换数据源,而不是修改
redux
经过比较对象的引用来判断是否同一个对象,若是是,则继续使用旧的 state
,因此不会有任何的变化immutable.js
吗Antd
按需加载的原理import { Button } from 'antd';
ReactDOM.render(<Button>xxxx</Button>);
↓ ↓ ↓ ↓ ↓ ↓
var _button = require('antd/lib/button');
require('antd/lib/button/style');
ReactDOM.render(<_button>xxxx</_button>);
复制代码
HTTP
OSI
七层HTTP
和 HTTPS
HTTP2
websocket
GET POST DELETE PUT OPTIONS HEAD CONNECT TRACE PATCH
cookie
token
loader
和 plugin
吗tree shaking
splitChunks
React
的按需加载如何实现
webpack
的动态导入 (dynamic imports)React.lazy React.suspense
React
的 HOC
const HOC = (WrappedComponent) =>
class extends WrappedComponent {
render() {
if (this.props.isRender) {
return super.render();
} else {
return null;
}
}
复制代码
React
怎么和 Redux
结合
react-redux
的 connect
高阶函数Redux
的 stroe
存储在 React
何处
Context
DomContentedLoaded
DomContentedLoaded
是否和 Raect
生命周期里的 render
同步
tab
页,其中一个 tab
页更改了权限,怎么保持另外一个 tab
页权限同步Expires
表示一个绝对时间,容许客户端在这个时间以前不去检查(发请求)Cache-Control
public
客户端和 CDN
代理服务器均可以缓存private
客户端能够缓存max-age=60
缓存内容将在60秒后失效no-cache
每次请求都须要通过服务端的协商缓存no-store
禁用缓存200(from disk/memory cache)
HTTP
请求If-Modified-Since/Last-modified
资源的最后修改时间
If-None-Match/Etag
根据实体内容生成的一段hash字符串304 Not Modified
304
中携带 response
response headers
SPA
应用打包出来的 index.html
是否存在缓存
CDN
CDN
主要部署什么资源CDN
如何更新资源JS + REM
VW + VH
DRP
window.devicePixelRatio
@media -webkit-min-device-pixel-ratio
React
的生命周期
Fiber
架构Redux
的工做流程Redux
如何实现异步操做
Redux-thunk
是一个容许你编写返回一个函数而不是一个 action
的 actions creators
的中间件。若是知足某个条件,thunk
则能够用来延迟 action
的派发(dispatch
),这能够处理异步 action
的派发(dispatch
)。Mobx
如何转化可观察对象为原生数组
slice()
Koa
洋葱模型的理解webpack
的构建速度
TS
中用到哪些语法
Decorators
keyof
typeof
操做符URL
发生了什么OSI
七层模型HTTPS
,什么是对称加密,非对称加密先作了一套笔试题,限时半个小时,比较简单,主要考察基础,还记得的题目有webpack
CSS
选择器的优先级
position
的各个属性
static
sticky
display:none
和 visibility:hidden
的区别new Boolean(false) && true
返回什么,并解释<script> alert(typeof a); </script>
<script> function a() { a = 3; } </script> // 会出现什么内容?
复制代码
React Hooks
Virturl DOM
React
在 16.8 版本为咱们正式带来了 Hooks API
。什么是 Hooks
?简而言之,就是对函数式组件的一些辅助,让咱们没必要写 class
形式的组件也能使用 state
和其余一些 React
特性。Diff
算法的实现过程ES6 class
的 static
属性在构造函数的原型上吗
ACK
:确认序号有效SYN
:发起一个新链接FIN
:释放一个链接PV / UV
的理解,该如何去实现
PV (page view)
,即页面浏览量,一个访问者在 24 小时内到底看了你网站几个页面,不重复计算
UV (unique visitor)
,即惟一访问者,指你的网站 24 小时内有多少不一样 IP 地址的访问web
判断页面来源面试
referrer
字段简述 JWT
算法
Header
npm
{
"alg": "HS256",
"typ": "JWT"
}
复制代码
Payload
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
复制代码
Signature
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
复制代码
Header 和 Payload 串型化的算法是
Base64URL
JWT 做为一个令牌(token),有些场合可能会放到 URL(好比 api.example.com/?token=xxx)。Base64 有三个字符+、/和=,在 URL 里面有特殊含义,因此要被替换掉:=被省略、+替换成-,/替换成_ 。这就是 Base64URL 算法。
图片懒加载,怎么保证未加载的图片占据空间
将来前端的职业规划