抓取牛客最新前端面试题五百道 数据分析JS面试热点

简介: 抓取牛客最新前端面试题五百道 数据分析JS面试热点

前言


秋招感觉即将接近尾声了,今年的秋招可谓是风起云涌、锣鼓喧天、异彩纷呈(听说腾讯总包都40w+,流下羡慕的眼泪)。


秋招期间,我特别喜欢在牛客上看各位大佬的面经、offer等,看的不亦乐乎,每天增加一个小幻想。


前几天在看面经时,突然想到,有的题我见过很多次,有的题第一次见,现在虽说有八股文,但每年的面试行情应该都会有小的变化,要不来做个统计,粗略的估计一下今年面试市场的态势,也为自己后续的学习指一下路。


说做就做,耗费了我好几个快乐游戏的夜晚,挨着面试题,面经的复制、去重,最后精挑细选出 547 道题目,其中笔试题 200 道,面试题 357 道。


本文涉及的题目全是JavaScript方向。前端框架、计算机基础知识方向还在统计中。


笔试题部分已整理完毕,传送门: 牛客最新前端JS笔试百题


面试部分题目整理完毕,传送门: 牛客最新前端面经面试题汇总(含解析)


考点划分


本文章将 JavaScript 分为几大考点:


  • ECMAScript 基础(简称 JS 基础):包括类型、运算符、字符串、数组、对象、函数等基础知识
  • ECMAScript 深入(简称 JS 深入):包括 this 指向、原型与原型链、作用域与作用域链、垃圾回收、同步异步、事件循环等
  • ES6
  • BOM
  • DOM


接下来我们来一起分析一下(作者是个机械狗,有可能分析的会有点生硬,希望大佬们见谅):


笔试题


题型分析


在线笔试题中程序题大多也是有选项的,但是我感觉程序题的难度是超出选择题,因此我把它单独列为一项。


笔试题有五类:单选题、多选题、填空题、程序题,简答题,下面是各类题目出现的数量:


题型 单选题 多选题 填空题 程序题 简答题
数量 63 14 34 85 4


更直观的表现看下面饼图:

image.png

可以从上面的表格和饼图中看出:


  • 重视基础:选择题、填空题比重较大,简答题的比重较小
  • 重视代码能力:程序题的比重最大


程序题分析


将程序题考点笼统的分为四类:JS 基础、JS 深入、ES6 题、其他题,各类题目的数量如下:


类别 JS基础 JS深入 ES6题 其他题
数量 40 31 10 4


更直观的表现看下面饼图:


image.png

可以从上面的表格和饼图中看出:


  • 程序题难度适中:基础题和深入题所占比重类似,笔试题同样注重 JS 深入部分的考察。
  • ES6 占比较少: 在笔试题中,ES6 考察的部分大多数与 JavaScript 深入结合,例如:promise 与事件循环结合;箭头函数与 this 指向结合,let/const 与作用域结合等。

考点分析


将笔试题按考点划分成:JS 基础、JS 深入、ES6BOMDOM,具体数量见下表


考点 JS基础 JS深入 ES6题 BOM DOM
数量 105 43 25 7 20

image.png

通过对考点的分析,我们可以得出:


  • 笔试超级超级重视基础
  • JS 深入题大多出现在程序题中
  • DOM 事件流需要重点掌握


笔试热门考点


笔试题的十大热门考点见下表:


考点 数量
类型检测 22
类型转换 20
promise 20
数组 18
字符串 12
运算符 11
作用域 11
this 10
原型 10
let/const 7

image.png


笔试题总结


通过对 200 道题多维度的分析,我们可以得出笔试部分的复习重点:



  • 类型检测: typeof/instanceof
  • 类型转换: "+", "==" 隐式转换
  • DOM: 事件流
  • 数组: 数组方法(那些数组方法会修改原数组,那些不会)
  • 字符串: 字符串方法,配合正则使用


  • JavaScript 深入部分的各类难点要熟知,并且能说出其大致流程,看到程序题要知道从何入手。


  • ES6部分以基础居多,promise 要重点掌握


面试题


面经部分共 357 道题,题目来自阿里、腾讯、百度、字节、滴滴、拼多多、京东、B站、富途、美团、网易、小红书、有赞、快手、其他。


image.png


考点分析


依旧将考点划分为五类:JS 基础、JS 深入、BOMDOMES6,我们来一起看一下面试题各类考点的数量:


考点 JS基础 JS深入 BOM DOM ES6
数量 37 212 9 12 87

image.png

可见面试题部分的难度明显加大了很多,JavaScript 深入占据了总题目的一半以上,ES6 比重也增大很多,所以我们在准备面试部分时,JavaScript 深入部分的学习要重视、重视、再重视。


JS深入部分分析


JS 深入部分的考点进一步划分:作用域、this、原型、垃圾回收、浏览器存储、事件循环、异步、手撕代码。

image.png

注意:手撕代码可太太重要了,当下的面试中,代码编写能力占据的比重越来越大,很多公司还会有算法题考察。


ES6部分分析


ES6 部分的考点进一步划分:遍历方法、箭头函数、let/constset/mappromiseproxyasync/await、其他


image.png


ES6 考察比较均匀,多点开花,因此 ES6 准备要全面,并且准备的深度要深,特别是一些实现原理,要做到心中有数。但记住一句话,promiseES6 的真神


手撕代码题


接下来我会罗列所有出现的手撕代码题,并指明其出现频率(从高到低)。


  • promise(21, 所有的公司): 实现一个简单的 promise、实现 promise.all
  • 数组去重(13, 仅小红书、快手未找到): 你能用多少种方法实现数组去重、数组去重优化等
  • 防抖(10): 防抖的作用,什么场景下使用防抖,手撕防抖等
  • 节流(10): 节流的作用,什么场景下使用节流,手撕节流等
  • 深拷贝(9): 深拷贝实现(考虑到函数情况、对象、数组、正则、Date)
  • jsonp/ajax(7): 手撕 ajax、jsonp、jsonp/ajax 区别
  • new(6)
  • 继承(5)
  • 数组扁平化(4)
  • 数组函数模拟(4): forEach、map、reduce、filter、find、indexOf
  • call/apply/bind(3)
  • 柯里化(3)
  • 数组乱序(2)
  • 千分符(2)
  • "get-element-by-id" 变为小驼峰模式(2)
  • instanceof(1)
  • 封装 cookie 方法(1)
  • Object.create(1)
  • 求嵌套数组深度(1)
  • 原生模拟 class(1)


面试题总结


代码为神


面试部分可谓是得代码者得天下,常见的手撕代码一定要熟练、再熟练,不止要会写,同时也要能说明白为什么。这将是特别大的加分项。


  • promise: 重中之重
  • 数组去重: 多种实现方法,如果涉及到对象该怎么办?
  • 防抖节流: 一定要区分开,而且要能举出例子来,不要硬背代码
  • 深拷贝: 要学会实现全面的深拷贝。面试的要求和难度越来越大,因此日常复习准备时,一定要考虑所有的情况。
  • ...


考察深度深,广度广


对于 JavaScript 深入部分一定要吃透,完全的吃透,特别是如下四项:



重视 ES6 部分


ES6 部分知识掌握一定要全面,不要因为很多东西太难,或者日常用的不多就舍弃它,而且一定要"打破砂锅问到底",大公司不止对 ES6 感兴趣,而且对 ES6 很多部分的实现原理感兴趣,例如: async 原理,set 去重原理等。


总结


通过上面一通迷迷糊糊的分析后,如果想进入自己心仪的大公司,在 JavaScript 这里最起码要具备三点:


  1. 手撕代码炉火纯青
  2. 原生 JS 登峰造极
  3. ES6 语法胸有成竹


后语


  1. 本文涉及的这 547 道题,后面我整理一下,会全部发出来,并且会挑其中我认为特别好的题目做一下分析讲解,有兴趣大佬可以关注一下
  2. 手撕代码部分,我会陆续都认真、完善的实现一遍。
  3. 目前我正在编写 JavaScript深入系列和 JavaScript基础系列(灵魂拷问),如果大家需要可以关注我的博客。
  4. 本文仅涉及 547 道题,分析的结果有可能存在不准确性,仅供参考。
相关文章
|
3月前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
7天前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
25 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
3月前
|
JavaScript 前端开发 Java
springboot解决js前端跨域问题,javascript跨域问题解决
本文介绍了如何在Spring Boot项目中编写Filter过滤器以处理跨域问题,并通过一个示例展示了使用JavaScript进行跨域请求的方法。首先,在Spring Boot应用中添加一个实现了`Filter`接口的类,设置响应头允许所有来源的跨域请求。接着,通过一个简单的HTML页面和jQuery发送AJAX请求到指定URL,验证跨域请求是否成功。文中还提供了请求成功的响应数据样例及请求效果截图。
springboot解决js前端跨域问题,javascript跨域问题解决
|
3月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
87 5
|
3月前
|
缓存 前端开发 JavaScript
JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式
本文深入解析了JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式(Hash路由和History路由)、优点及挑战,并通过实际案例分析,帮助开发者更好地理解和应用这一关键技术,提升用户体验。
125 1
|
3月前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
74 4
|
3月前
|
JavaScript 前端开发
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
49 1
JavaScript中的原型 保姆级文章一文搞懂
|
7月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
138 2
|
3月前
JS+CSS3文章内容背景黑白切换源码
JS+CSS3文章内容背景黑白切换源码是一款基于JS+CSS3制作的简单网页文章文字内容背景颜色黑白切换效果。
33 0
|
7月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
196 4

热门文章

最新文章