“今天面试了个自称‘两年经验’的前端候选人,结果问到 JavaScript 基础时,他一脸茫然:‘ 闭包闭包是啥?是用来封装变量的吗?’
那一刻我真的……沉默了。
想起上个月团队来了个新人,为了实现一个简单的表单验证,手动写了三十行 if-else。
我实在看不下去,随手写了个正则 + 数组方法数组方法——五行搞定。
他还站在旁边愣住:‘这也能这么写?’
不是苛责谁基础弱,而是真的心疼那些每天加班到八九点的前端人。
明明一个数组方法就能解决的事,却在用最笨的方式硬扛。
我做过五年前端,现在带团队也一直在教新人,今天就把我们日常高频使用的 6 类 JavaScript 核心知识,用最直白、最落地的方式讲清楚。
不讲理论,不堆术语,全是每天写组件、调接口、做优化时真实用得到的技能。
照着理解一遍,日常开发至少省下 3 小时。
🔹 一、数组操作|数据处理基本功
map():遍历并返回新数组,比如接口数据转渲染列表
filter():筛选符合条件的数据,比如从列表里找出“已完成”的订单
reduce():累加或汇总数据,比如计算购物车总价
→ 告别 for 循环满天飞,用声明式代码表达意图
🔹 二、异步处理异步处理|现代前端生存技能
Promise:处理异步任务,避免回调地狱
async/await:用同步写法写异步逻辑,让代码更清晰
fetch() 或 axios:发请求、接数据、处理错误和 loading 状态
→ 异步代码写得不乱,复杂业务才能 hold 住
🔹 三、DOM 与事件DOM 与事件|交互实现核心
querySelector() / addEventListener():选中元素并绑定交互
事件委托:利用事件冒泡,用单个监听器管理多个子元素
classList:动态增删类名,实现样式切换或动画触发
→ 精准操作界面,用户体验更流畅
🔹 四、对象与引用对象与引用|避坑必备知识点
浅拷贝 vs 深拷贝:Object.assign()、扩展运算符、JSON 序列化
Object.keys() / Object.values():遍历对象属性
可选链 ?.:安全访问深层属性,避免 Cannot read property of undefined
→ 正确处理数据引用,减少隐蔽 bug
🔹 五、模块化与工具模块化与工具|工程化基础
import / export:组织代码结构,实现功能解耦
常用工具函数:Lodash 中的 get、throttle,或自己封装工具类
环境判断:区分开发、生产环境,配置不同接口或日志输出
→ 代码结构清晰,协作和重构更轻松
以前我也觉得‘能跑就行’,直到看见同事用几行函数式代码完成我写几十行的逻辑。
那一刻才明白:真正的专业,是懂得用代码表达思想,而不只是实现功能。
针对前端人在面试中遇到的问题,我整理了以下:
总览:
因为篇幅原因,下面就只能截图部分内容展示了,有想要的小伙伴: https://github.com/encode-studio-fe/natural_traffic/wiki/scan_material1
一、Vue
面试题
- 说说vue动态权限绑定渲染列表〔权限列表渲染)
- Vue用的哪种设计模式
- 说说vue操作真实dom性能瓶颈
- Vue中如何获取dom、操作dom、更新dom
- Vue的双向数据绑定原理是什么
- mvvm框架是什么
- 谈谈Vue的token存储
- 知道nextTick的作用吗,谈谈对它的理解,是什么,怎么用
- nextTick和setTimeout区别
- vue中为什么用虚拟dom而不操作真实dom
- Vue如何进行组件传值
- 说说vue里面的父子通信
- 谈谈如何实现vue组件通信和传值方式(两个问题为同一个答案问法不一样)
- 说说vue中Key值的作用
- 说说vue中的虚拟dom和diff算法
- vue3.0有了解过吗,你觉得vue3.0好吗,好在哪
- VUE组件如何与iframe通信问题
二、
React面试题
- 说说React中onClick绑定后的工作原理
- 说说react里面bind与箭头函数
- 说说react中的性能优化
- 高阶组件和高阶函数是什么
- setState和repalceState的区别
- redux中核心组件有哪些,reducer的作用
- 什么是受控组件
- hooks+context和redux你是怎么选择的,都在什么场景下使用
- useffect模拟生命周期
- setsate更新之后和usestate的区别
- react父组件props变化的时候子组件怎么监听
- usememo在react中怎么使用
- React Hooks各种函数介绍
- React Component和Purecomponent区别
- hooks相对于class的优化
- hooks父组件怎么调用子组件的方法
- 讲一下react中的通信
- react通过什么方法修改参数
- 说你对react native的了解
- redux的实现原理
三、小程序
面试题
- 简单谈谈微信小程序
- 小程序的原生组件有哪些
- 小程序的安卓版和ios版是怎么开发出来
- uni-app弹窗被覆盖怎么解决
- 小程序生命周期
- 小程序路由跳转
- 小程序的兼容问题有哪些
- 小程序框架都学握哪一些,uniapp都会哪一些,平时开发遇到的困难
- 小程序怎么获取手机号
- 小程序的登录流程
- 小程序如果版本更新了怎么通知用户
- 小程序嵌入H5页面怎么做
- 小程序的生命周期函数有哪些?分别有什么作用?
四、
Webpack面试题
- webpack了解吗,讲一讲原理,怎么压缩代码
- webpack怎么配置
- webpack怎么打包
- vue打包内存过大,怎么使用webpack来进行优化
- webpack打包用过什么插件
- 说说gulp和webpack的区别
五、TypeScript面试题
- 了解过TS吗?
- 使用ts写一个对象属性约束
- 说一下typescript中的泛型
- 如何在TS中对函数的返回值进行类型约束
- ts和js相比有什么区别
- RX了解吗?
六、Node.JS面试题
- 说说对nodejs的了解
- nodejs如何写接口,返回参数如何处理,有多少种方法
- websocket和http的区别
- 常见的 HTTP Method有哪些?GET/POST区别?
- 说一说Tcp三次握手,四次挥手
- 阐述一下http1.O与http2.0的区别,及http和https区别
- node.js如何导出页面数据形成报表
- 协商缓存和强缓存
- 强缓存
- Expires
- Cache-Control
- 协商缓存
- Etag和If-None-Match
- Last-Modify/lf-Modify-Since
- 为什么要有Etag
- http常用状态码有哪一些,说—说他们的作用
- 网络攻击方案有哪些,自己有写过什么安全性方面的东西吗?
- 静态资源部署到哪?
- 说说你对nodejs的了解
七、GIT
面试题
- git经常用哪些指令
- git出现代码冲突怎么解决
- 你们团队是怎么管理git分支的
- 如何实现Git的免密操作
八、其它面试题
- loadsh了解过吗?
- 是否用过混合APP开发
- 项目中的组件是如何使用的
- hash和histoty的原理
- window.location.href和history.push的区别
- 商城项目中有写到调用微信,支付宝支付,简单讲述—下
- 这个支付与后台对接的过程,微信支付的原理
- 混合开发知道吗?你是怎么理解混合开发的,在项目中用到过混合开发吗?
- 平时工作中有是香有接触linux系统?说说常用到linux命令?
- echarts是什么,怎么用
- Hash和history的区别
- 谈谈宏任务与微任务的理解,举一个宏任务与微任务的api
- 对Event loop的了解?
贴一下GitHub: http:// https://github.com/encode-studio-fe/natural_traffic/wiki/scan_material1