Front-End Interview
Prototype, multiply
让下面的代码运行
const a = [ 1, 2, 3, 4, 5]
a.multiply();
console.log(a) // 1, 2, 3, 4, 5, 1, 4, 9, 16, 25
Solution:
Array.prototype.multiply = function() {
return this.concat(this.map(i => i*i))
}
IEEE754
0.2 + 0.1 === 0.3
因为0.2+0.1丢失精度,结果是0.3000000...01.
数据类型
两种类型:主要类型和引用类型 undefined, null, string, number, Symbol object
异步代码问题
回调写法:XHR,或者是JQuery.ajax。 Promise写法:fetch,没什么难度,返回值修改 Observables:应该是Rx.fromfetch然后声明好结果 generator:定义function*,依次返回答案 async-await:普通写法,没什么难度
简单的数据绑定
两种写法,ES Proxy 或者是Object.defineProperty,然后如果有内部操作,劫持所有函数(Vue Augmentation)
JavaScript并发模型
Event-loop,Web Worker两种。Node内部是libuv提供的事件循环。 又有microtask和macrotask之分。 栈和堆。
new关键字
执行以下构造函数,原型链 [[Construct]]和[[Call]] https://www.w3.org/html/ig/zh/wiki/ES5/%E5%87%BD%E6%95%B0%E5%AE%9A%E4%B9%89
四种函数调用的方式
直函数调用、方法、call、apply
个人觉得这道题不好
ES2018提案
BigInt,管道,private,for-async-of
Iterator和Iterable
我只知道Array是Iterable的,用于for-of。
类为什么是反模式
繁琐的继承、重新声明的构造函数、相等运算符的复杂性、Instanceof运算符的实效情况 多重继承的防止、难以维护的原型链、重载和重写
JSON 序列化
Symbol不会被序列化
Typed Array
实现不同,V8的内置方法可以更快优化(Torque)
默认参数?
是不是用||做啊。。。不是很懂
尾递归优化
就是把递归重写成循环的 2018年还没有。
单向数据流和双向绑定
DirtyCheck, Zone.js,Vue defineProperty SetState,on...,Event/Emit
单向数据流的应用
那肯定是数据表格,简单的数据显示等等 可以进行细粒度的优化,就是指shallow-compare然后按需更新这样。 按需更新就可以走DocumentFragment然后replace node。
MVC
SmallTalk
函数式编程
科里化(返回函数的函数,但是是链式的那种) 高阶函数 副作用 记录类型 (不懂)
函数式和反应式的关系
???没有什么关系好吧!完全看自己的实现,有时候全部函数式也很难受的,全部都要重新包装。
Immutable
性能影响是内存不好管理,复制等等 优势在于防止突变(mutations),不需要劫持,可以按需更新,为反应式做准备 线程安全,全体原子化(有鸡巴用)
大型项目,静态类型
Typescript。编译时 Flow,运行时 和其他语言的区别在于完全可擦除。
类型系统...不知道? 类型推断就是根据已有的类型推断更多的类型。 JS的类型本质就是...都是字典 弱类型静态的是C++ 强类型动态的是Python
模块系统
AMD, CMD, UMD, RequireJS, CommonJS, ES模块 Webpack
HTTP2
多路复用,头部压缩,全体二进制
Fetch的改进
好看的API,Promise based, 统一标准
拉和推的区别
RxJS说说,大家都懂。
Promise的问题
求值问题,撤销问题(cancellable)
Doctype
怪异盒模型
DOM和BOM的区别
document和navigator?的区别,
事件处理
冒泡、截取
上传文件
multipart、xhr2、FileAPI、Fetch(难用)
重流重绘
重流是重新排版 重绘是局部的渲染 rasterize
CSS选择性特异性
背一下各种优先级?
CSS像素和物理像素的区别
切片算法?
section
FlexBox/CSS Grid
很难聊
CSS动画、过渡
没什么难度
CSS代码
魔术数(你能避免?) en/rem(偶尔可以用的) 媒体查询(SCSS) 滥用ID、类别(OOCSS) ID会注册全局对象
触摸事件
touchstart, touchend
async,defer
阻塞不阻塞?同步不同步?