「这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战」
前言
上个月抓取了牛客 21 年最新的笔试题和面试题,笔试题上个月份就发出,当时准备不足,未准备答案。面经部分的题目我吸收上次教训,每个题目我都准备答案,有的题目答案是我的理解,有的题目我的水平可能暂时还有限,答案选取掘金高赞高访问量博客。希望能帮助到大家。
面经部分,初步决定分为两部分,一部分为所有的简答题和手写题,另一部分为程序题。此章为简答题和手写题部分。
程序题部分正在想以何种方式发出,大家也可以在评论区给阿包出出注意
我大约统计了牛客网大约 15 家大公司的前端题,考察频率大致划分如下:
- ⭐⭐⭐⭐⭐: 在 15 家公司面试中出现 10+
- ⭐⭐⭐⭐:在 15 家公式面试中出现 5-10
- ⭐⭐⭐:在 15 家公司面试中出现 3-5
- 无星:出现 1-2
下面是笔试题部分和题目分析部分传送门:
JavaScript基础部分
typeof 问题汇总
考察频率: (⭐⭐⭐⭐⭐)
typeof能正确区分原始值吗
typeof的返回值有哪些
typeof function 会显示什么
typeof为什么对null错误的显示答案&解析
typeof('abc')和 typeof 'abc'都是 string, 那么 typeof 是操作符还是函数?答案&解析
JavaScript的数据类型
考察频率: (⭐⭐⭐⭐⭐)
== 的隐式转换规则
undefined、null 自身相等且互相相等
考察频率: (⭐⭐⭐⭐⭐)
instanceof原理
考察频率: (⭐⭐⭐)
["1","2","3"].map(parseInt) 结果是什么,并解释原因
如何让上述式子返回[1,2,3] 用你能想到的最简单的方案(要求使用[].map())
考察频率: (⭐⭐⭐)
判断数据类型的方法
typeof 与 instanceof 的区别
如何判断数组类型
number能表示的整数的最大范围
2.toFixed() 会输出什么结果
查询某个对象是否有某个属性的方法
splice和slice你能说说有啥用和区别吗
==和===区别
构造函数与普通函数的区别
类数组与数组区别,为什么要设置类数组
null 与 undefined 的区别
a.b.c.d 和 a['b']['c']['d'],哪个性能更高?
forEach与for循环,谁的性能更好
JavaScript深入部分
this指向
考察频率: (⭐⭐⭐⭐⭐)
原型与原型链
考察频率: (⭐⭐⭐⭐⭐)
你能讲一下事件循环机制吗?
考察频率: (⭐⭐⭐⭐⭐)
作用域与作用域链
考察频率: (⭐⭐⭐⭐⭐)
谈谈你对闭包的理解
考察频率: (⭐⭐⭐⭐⭐)
预编译
考察频率: (⭐⭐⭐⭐⭐)
new 操作符做了哪些事情
考察频率: (⭐⭐⭐⭐⭐)
垃圾回收机制
考察频率: (⭐⭐⭐⭐)
继承的多种方式和优缺点
考察频率: (⭐⭐⭐⭐)
JS原型链继承与Class继承
考察频率: (⭐⭐⭐⭐)
call、apply、bind区别
考察频率: (⭐⭐⭐⭐)
cookie, localStorage sessionStorage区别
考察频率: (⭐⭐⭐⭐)
数组高阶方法
考察频率: (⭐⭐⭐⭐)
防抖与节流的区别
考察频率: (⭐⭐⭐⭐)
script标签的defer和async属性有什么区别
考察频率: (⭐⭐⭐)
同步任务和异步任务区别
考察频率: (⭐⭐⭐)
构造函数,实例对象和原型对象关系
考察频率: (⭐⭐⭐)
使用new调用函数,而这个函数中有return,那它return出来的是什么
考察频率: (⭐⭐⭐)
setTimeout、Promise、Async/Await 的区别
17.Object的_proto_指向什么
18.Function的_proto_指向什么
19.promise和setTimeout分别是什么任务
20.js文件为什么要放在文件底部
ES6
什么是promise?实现一个简单的promise
考察频率: (⭐⭐⭐⭐⭐)
Promise不会??看这里!!!史上最通俗易懂的Promise!!!
Promise.all(), .race(), .allSettled()对比
考察频率: (⭐⭐⭐⭐⭐)
Promise 中的三兄弟 .all(), .race(), .allSettled()
Promise、Generator、Async三者的区别
考察频率: (⭐⭐⭐⭐⭐)
async 和 await 原理
考察频率: (⭐⭐⭐⭐⭐)
let const var 区别
考察频率: (⭐⭐⭐⭐⭐)
箭头函数与普通函数区别
考察频率: (⭐⭐⭐⭐⭐)
defienProperty与proxy区别
考察频率: (⭐⭐⭐⭐)
map与weakMap的区别
考察频率: (⭐⭐⭐⭐)
set 与 weakSet 区别
考察频率: (⭐⭐⭐⭐)
map与object区别
考察频率: (⭐⭐⭐⭐)
map与set
考察频率: (⭐⭐⭐⭐)
如何在使用async & await 时优雅的处理异常
考察频率: (⭐⭐⭐⭐)
proxy优缺点
考察频率: (⭐⭐⭐)
面试官: 实现双向绑定Proxy比defineproperty优劣如何?
Object.defineProperty
考察频率: (⭐⭐⭐)
介绍一下symbol
考察频率: (⭐⭐⭐)
proxy可以监听嵌套对象的变化吗
你了解ES6的bigInt吗
map与object键值key遍历顺序
聊聊Promise的值穿透和异常穿透
Object.assign是浅拷贝还是深拷贝?实现深拷贝的方法有哪些?(2020.01.07).md
generator底层原理
BOM DOM
DOM事件流
事件冒泡、事件捕获
什么是事件委托?
获取元素在页面位置的 API 有哪些
setTimeout与setInterval区别,两者那个更准
定时器不准时☞带你揭秘setTimeout和setInterval
在 timer = setInterval(() => {}, delay) 中,这个 timer 打印出来是什么
在 timer = setInterval(() => {}, delay) 中,这个 timer 打印出来是什么
requestAnimationFrame
遍历
遍历对象的方法
for in 与 Object.keys区别
for in 和 for of 的区别
for of 可以遍历对象吗
手撕代码
promise
实现promise
考察频率: (⭐⭐⭐⭐⭐)
实现promise.all
考察频率: (⭐⭐⭐⭐⭐)
实现 promise.finally
考察频率: (⭐⭐⭐⭐⭐)
实现promise.allSettled
考察频率: (⭐⭐⭐⭐)
实现promise.race
考察频率: (⭐⭐⭐)
来说一下如何串行执行多个Promise
promise.any
resolvev reject
Array篇
数组去重
考察频率: (⭐⭐⭐⭐⭐)
数组扁平化
考察频率: (⭐⭐⭐)
forEach
考察频率: (⭐⭐⭐)
reduce
考察频率: (⭐⭐⭐)
map
filter
every
some
find/findIndex
indexOf
实现sort
防抖节流
实现防抖函数debounce
考察频率: (⭐⭐⭐⭐⭐)
实现节流函数throttle
考察频率: (⭐⭐⭐⭐⭐)
Object篇
能不能写一个完整的深拷贝
考察频率: (⭐⭐⭐⭐⭐)
实现new
考察频率: (⭐⭐⭐⭐)
继承
考察频率: (⭐⭐⭐⭐)
原型链继承
借用构造函数(经典继承)
组合继承
原型式继承
寄生式继承
寄生组合式继承
Class实现继承(补充一下)
class Animal {
constructor(name) {
this.name = name
}
getName() {
return this.name
}
}
class Dog extends Animal {
constructor(name, age) {
super(name)
this.age = age
}
}
实现object.create
Function篇
call
考察频率: (⭐⭐⭐⭐)
bind
考察频率: (⭐⭐⭐⭐)
apply
考察频率: (⭐⭐⭐⭐)
实现柯里化
考察频率: (⭐⭐⭐)
实现链式调用
偏函数
ajax 与 jsonp
考察频率: (⭐⭐⭐)
实现ajax
实现jsonp
ES6篇
实现set
实现 map
实现es6的class
使用proxy实现arr负数索引访问
其他
instanceof
考察频率: (⭐⭐⭐⭐)
实现千分位分隔符
考察频率: (⭐⭐⭐)
把一个JSON对象的key从下划线形式(Pascal)转换到小驼峰形式(Camel)
考察频率: (⭐⭐⭐)
实现数据类型判断函数
实现数组转树
实现sleep函数
实现发布订阅模式
[参考代码](21interview/imitate/eventEmitter.md
未找出答案题目
set去重原理
使用promise实现请求超时重新请求
JavaScript进阶系列
- JavaScript进阶之彻底理解原型与原型链
- JavaScript进阶之预编译学习
- JavaScript进阶之彻底理清JS中this指向问题 |《2w字大章 38道面试题》
- JavaScript进阶之彻底理解EventLoop
- JavaScript进阶之作用域与作用域链
近期精彩
面试部分
快乐编程
题目仓库
传送门: 仓库
后语
整理了好久,如果大家感觉有帮助,希望可以给小包点个赞👍
伙伴们,如果大家感觉本文对你有一些帮助,给小包点一个赞👍或者关注➕都是对我最大的支持。
我是 战场小包 ,一个快速成长中的小前端,希望可以和大家一起进步。
如果喜欢小包,可以在 掘金 关注我,同样也可以关注我的小小公众号——小包学前端。
一路加油,冲向未来!!!