一、面试前准备

1.1 什么是面试

面试是经过组织者精心设计,以交谈和观察为主要手段,来考察候选者知识、能力、经验、综合素质等多方面。

面试流程

  • 一面:以基础知识为主(没那么资深,但技术比较扎实的一线工程师)。
  • 二面(交叉面试):以基础知识开始,然后到框架原理、计算机原理,再到业务场景的考察。二面始于基础知识,终于项目经验或项目解决方案(通常是比较资深的工程师)。
  • 三面:基本不会问太多技术问题,有可能会问项目经验。通常会问些角色定位、做什么产品、对产品的思考、未来的技术规划。
  • HR面试:表现阳光积极的心态,如实回答。

校招和社招区别

  • 校招看中基础知识和能力,主要在一面
  • 社招看中经验,主要在二面(基础知识要过关);
  • 社招,工作时间越长,越偏重经验;

1.2 如何解读 JD

JD是什么

  • JD 是用人单位发布的招聘信息
  • 职位描述
  • 岗位要求

从JD中能看到什么

  • 工作内容
  • 技术栈
  • 经验要求

不要过于在意JD

  • JD 是 HR 发布的(可能不懂技术)
  • HR 和技术人员可能会沟通不及时
  • 不能完全相信 JD 的要求

1.3 如何投简历

  • 员工内推(最为靠谱)
  • 猎头推荐
  • HR 收集(主动搜索、接收邮件)

1.4 面试准备

面试前准备

  • 看JD,是否需要临时准备一下
  • 打印纸质简历,带着纸和笔
  • 最好带自己的电脑,现场可能手写代码

面试注意事项

  • 要有时间观念,如果迟到或者推迟,要提前说
  • 衣着适当,不要正装,也不要太随意
  • 为何离职? - 不要吐槽前东家,说自己的原因
  • 能加班吗? - 能!除非特别自信,能找到其他机会
  • 不要挑战面试官,即便他错了
  • 遇到不会的问题,要表现出自己积极一面(会给个提示或者给个答案回去补下知识盲区)

二、前端面试

针对不同级别的工程师,技术考察面不一样:

  • 基层工程师:基础知识
  • 高级工程师:基础知识 + 项目经验
  • 架构师:解决方案能力

具备扎实的基础很重要。

  • 工程师的自我修养:基础知识
  • 扎实的基础能够让你高效学习新技术

2.1 思考

  • 拿到一个面试题,你第一时间看到是什么?
  • 如何看待网上搜出来的永远做不完的题海?
  • 如何对待接下来的面试题?

示例

  • typeof 能判断哪些类型?
  • 何时使用 ===,何时使用 ==
  • window.onloadDOMContentLoaded 区别?
  • JS 创建10个<a>标签,点击的时候弹出对应的序号?
  • 手写节流throttle、防抖debounce?
  • Promise 解决了什么问题?

2.2 如何搞定所有面试题

  • 拿到一个面试题,第一时间看到的 -> 考点
  • 如何看到做不完的题海 -> 不变应万变(题可变,考点不变)
  • 如何对待接下来的题目 -> 题目到知识点,再到题目

示例

  • typeof 能判断哪些类型? -> 考点:JS 变量类型
  • 何时使用 ===,何时使用 == -> 考点:强制类型转化
  • window.onloadDOMContentLoaded 区别?-> 考点:页面渲染过程
  • JS 创建10个<a>标签,点击的时候弹出对应的序号? -> 考点:JS作用域
  • 手写节流throttle、防抖debounce -> 考点:性能、体验优化
  • Promise 解决了什么问题? -> 考虑:JS 异步

三、前端基础知识体系

3.1 什么是知识体系

  • 高效学习三部曲:找准知识体系;刻意训练;及时反馈
  • 知识体系:结构化的知识范围;
  • 涵盖所有知识点:结构化、有组织、易扩展;

从哪些方面梳理

  • W3C 标准
  • ECMA 262标准
  • 开发环境
  • 运行环境

3.2 前端基础知识体系

CSS基础知识

  • 布局:盒模型、BFC、float、flex
  • 定位
  • 图文样式
  • 移动端响应式:rem、media query、vw/vh
  • 动画/渐变

JS 基础语法

  • 变量类型和计算:值类型和引用类型、类型判断、逻辑运算
  • 原型和原型链:class、继承、原型、原型链、instanceof
  • 作用域和闭包:作用域、自由变量、闭包、this
  • 异步:单线程、callback、应用场景、Promise、Event Loop、async/await、微任务/宏任务
  • 模块化: ES6 Module

JS Web API

  • DOM:树形结构、节点操作、属性、树结构操作、性能
  • BOM:navigator、screen、location、history
  • 事件:绑定、冒泡、代理
  • ajax:XMLHttpRequest、状态码、跨域
  • 存储:cookie、localStorage、sessionStorage

开发环境

  • git
  • 调试
  • webpack和babel
  • linux命令

运行环境

  • 页面加载:加载、渲染
  • 性能优化:加载资源优化、渲染优化
  • 安全:XSS、CSRF

HTTP协议

  • 状态码
  • method
  • Restful API
  • headers
  • 缓存策略

四、简历正确格式

简历就像高考作文,阅卷时间非常短。简历应当内容简洁、直接重点,可表现出自己的优势。简历需包含以下内容个人信息、教育经历、专业技能、工作经历、项目经历、博客和开源。

基本信息

  • 必备:姓名、性别、电话、邮箱、籍贯
  • 年龄可不写(能从教育经历评估出来)
  • 头像无所谓

教育经历

  • 写上最高学历即可
  • 学校、专业、入学和毕业时间
  • 不要写上高中,显得很不专业

专业技能

  • 表现出自己的核心竞争力
  • 内容不要太多,3、5条即可
  • 太基础的不要写,例如会用vscode

工作经历

  • 如实写
  • 写明公司、职位、入职离职时间即可,多写无益
  • 如果有空窗期,如实写明即可

项目经历

  • 写2-4个具有说服力的项目(视工作时间)
  • 项目描述、技术栈、个人角色

博客或开源

  • 有博客或者开源作品,会让你更有竞争力
  • 切记:需要真的有内容,不可临时报佛脚
  • 可以从现在开始,慢慢积累

注意事项

  • 界面不要太花俏,简洁明了即可;
  • 注意用词,“精通”、“熟练”等慎用
  • 不可造假,会被拉入黑名单;