大厂前端实习、刚入行等找工作面试经验分享,这么做拿offer稳了

大厂前端实习、刚入行等找工作面试经验分享,这么做拿offer稳了
最新回答
烈艳红唇

2023-12-16 17:41:51

前端实习及刚入行找工作面试经验分享可从基础、项目、简历、心态、高频题准备几方面入手,做好这些拿offer概率大增。

基础准备
  • HTML:掌握语义化标签,了解HTML5新特性及标签作用。语义化标签能让页面结构更清晰,便于搜索引擎理解和维护,如<header>、<footer>等。HTML5新增的<canvas>、<video>等标签丰富了页面多媒体展示能力。

  • CSS:精读《CSS权威指南》,重点掌握布局、定位、盒子模型。布局方式如Flex布局能方便实现各种页面排版;定位属性可精确控制元素位置;盒子模型决定了元素在页面中占据的空间大小。
  • JavaScript:内容较多,需掌握基础、算法、数据结构,多在LeetCode上刷题。同时要了解防抖和节流、XMLHttpRequest、JS动画等应用。精读《JavaScript高级程序设计》,理解闭包、原型链等核心概念。例如防抖和节流可优化页面性能,减少不必要的函数执行。
  • 网络:阅读《图解HTTP》,有余力可看《深入浅出HTTPS》。理解网络安全重点,如XSS、CSRF、SQL注入的原理、攻击作用及防御方法。XSS攻击通过注入恶意脚本获取用户信息,可通过过滤输入输出防御;CSRF攻击利用用户身份进行非法操作,可通过验证请求来源防御。
  • 框架:熟练运用Vue,掌握基本API、mixin、插槽、组件传值、生命周期等,了解Vue3.0新特性,如基于代理机制的观察者模式监听属性。阅读源码,了解MVVM实现、响应式监听、vue-router和vuex源码,这在面试中很加分。
  • 性能优化:浏览器缓存是重点,包括强缓存和协商缓存。此外,预加载和懒加载可优化页面加载速度,WebWorker线程能实现多线程处理任务,避免页面卡顿。
  • 工程化:主要考查Webpack,了解plugin和babel的使用及解决的问题。Plugin可扩展Webpack功能,如压缩代码;Babel可将ES6+代码转换为ES5代码,保证代码在旧浏览器中正常运行。
项目准备
  • 简历上的项目描述要丰富,写清担任职位、项目源码地址、线上地址(若上线)、使用技术栈、主要功能及技术难点。丰富且有实际应用价值的项目经历能让面试官更好评估能力。例如,描述一个电商项目,说明使用了Vue全家桶实现页面交互,通过Redis缓存提高数据读取速度等。
  • 写技能项时,要分清了解、熟悉、熟练、精通的程度,不会的或仅了解一点的不要写在简历上,避免给自己挖坑。
心态调整
  • 保持良好心态,不能过于紧张。适当紧张可保持清醒,大脑正常运转。若面试题答不上来,先向面试官求助获取提示,若仍答不上,虚心请教,不要死磕,以免给面试官留下不好印象,要学会“有答必应,无答则问”。
刷面试高频题
  • JavaScript

    掌握数据类型,区分基本和引用类型,了解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实现请求并发个数限制。

  • CSS

    掌握水平垂直居中方法及兼容性,包括不知道宽高的情况。

    理解BFC概念、作用和常用场景,如解决外边距合并问题。

    了解Flex布局,注意flex:1的含义,能解决常见场景问题。

    掌握盒模型概念,学会切换盒模型。

    实现1px边框和1px线条,解决移动端1px显示问题。

    区分伪类和伪元素,掌握其使用场景。

  • Http & 浏览器

    理解浏览器缓存和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的区别。

  • Vue

    掌握生命周期,知道哪个生命周期可获取真实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的区别。

  • React

    详细描述生命周期,了解官方改变的原因。

    理解虚拟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的几率。