2023-12-16 17:41:51
前端实习及刚入行找工作面试经验分享可从基础、项目、简历、心态、高频题准备几方面入手,做好这些拿offer概率大增。
基础准备
掌握数据类型,区分基本和引用类型,了解Symbol和BigInt的应用场景。Symbol用于创建唯一标识,BigInt可表示大整数。
学会判断数据类型的方法,理解instanceof原理,掌握判断空对象、typeof null、typeof NaN的方法。
清楚var/let/const的区别,了解暂时性死区和块级作用域,知道const a = {}; a.x = 1可以修改的原因。
理解函数式编程和函数柯里化,掌握其使用场景。函数式编程强调函数是第一等公民,柯里化可将多参数函数转换为单参数函数。
明白防抖、节流的含义和使用场景,并能手写实现。防抖是在一定时间内多次触发事件只执行一次,节流是固定时间间隔执行一次事件。
区分call、apply、bind,了解bind实现及绑定this指向后能否修改的原因。
理解闭包概念,掌握闭包的应用场景,如封装私有变量。
用es5实现es6类的继承,了解各种继承方式。
区分深拷贝与浅拷贝,掌握常用方法并手写深拷贝函数。
了解JavaScript设计模式,区分观察者和发布订阅模式,并能手写发布订阅。
理解JavaScript异步编程,掌握Promise.all、race、allSettled的概念并手写,如用promise实现请求并发个数限制。
掌握水平垂直居中方法及兼容性,包括不知道宽高的情况。
理解BFC概念、作用和常用场景,如解决外边距合并问题。
了解Flex布局,注意flex:1的含义,能解决常见场景问题。
掌握盒模型概念,学会切换盒模型。
实现1px边框和1px线条,解决移动端1px显示问题。
区分伪类和伪元素,掌握其使用场景。
理解浏览器缓存和http缓存,包括强缓存、协商缓存、preload、prefetch、Service Worker等,了解304含义,对比e-tag和Last-Modified的生成方式及优先级。
掌握跨域概念、判断条件、浏览器判断字段、解决方案,了解options请求及CORS中的简单请求和复杂请求,明确form表单提交不会跨域。
讲清浏览器事件循环Event Loop和node事件循环,理解异步任务执行机制。
了解http2新特性、缺陷及http3的相关知识。
详细描述从输入URL到页面加载完成的过程,包括DNS查询、缓存查询、3次握手、4次挥手、浏览器渲染进程等,并能回答面试官深入提问,如为什么是3次握手4次挥手、进程线程区别等。
理解https加密原理,了解中间人攻击和与http的区别。
掌握生命周期,知道哪个生命周期可获取真实DOM,了解修改data数据触发的生命周期。
理解组件data为什么是函数,避免多个组件实例共享同一数据对象。
掌握vue组件通信方式,了解vuex用法、action和mutations区别及实现原理。
了解vue导航守卫,包括全局和组件的,可用于权限控制。
明白$nextTick作用和实现原理,了解微任务向宏任务的降级处理,说出几种宏任务和微任务。
理解vue响应式原理,这是面试重点。
了解vue scoped属性作用和实现原理,实现组件样式私有化。
掌握vue router的几种模式和实现方式。
理解key的作用,知道没有key时vue的做法及diff问题。
了解vue diff过程及和react diff的区别。
了解vue 2.x defineProperty缺陷及业务代码处理方法,掌握$set原理和vue重写数组方法的原因。
掌握vue 3.0 proxy优缺点及处理不支持IE的方法。
区分computed和watch的区别和运用场景,说出三种watcher的区别。
详细描述生命周期,了解官方改变的原因。
理解虚拟DOM概念,对比直接全量更新和diff的速度(分情况)。
了解HOC概念,知道React里用过的HOC,能实现add(1)(2)(3)的函数。
明白Fiber的作用,了解requestIdleCallback。
掌握react性能优化方法。
理解hooks出现的意义,区分类组件和函数组件。
知道不要在循环、条件语句或嵌套函数中调用hooks的原因。
了解setState同步还是异步及原因。
掌握避免组件重新渲染的方法,区分memo/useMemo、PureComponent,了解useMemo和useCallback区别。
webpack:掌握构建流程、打包原理,了解项目优化方法,区分loader和plugin,知道是否写过及常用loader和plugin,理解webpack热更新原理、tree-shaking及对CommonJS的处理,了解webpack loader执行顺序。
性能优化:掌握项目性能优化方法,如长列表渲染优化、各种懒加载实现原理(路由、图片等)。
Typescript:区分interface和type的区别。
作为技术人,技术能力至关重要。刚入行时可能充满热情,但随着时间推移,容易疲倦安于现状。技术领域不进则退,只有持续学习,才能在技术道路上不断前进,提升获得offer的几率。