← 返回全部文章

技术笔记

面试

技术/前端
文章目录

概述

掌握程度定义

了解:应用基础知识完成常规业务开发,对一些常规的bug能够有解决能力

熟练:了解各个基础场景面临一些坑,并且针对语言特性有一些应对方案

掌握:理解语言底层的运行环境和运行原理,能够根据底层原理解决问题

大纲

通用计算机基础

操作系统

网络

数据库

算法

前端

JavaScript

  1. 类型
    - 基本要求
    • 很多人容易出现概念的错误、比如回答JS中有哪些类型的时候
    • 容易回答:Array Function Date Regexp String
    • 容易忽略:Null Undefined Object
    • 基本上想不起:Bigint Symbol
    • 了解 JS语言里面定义了哪些数据类型
    • 基本类型:String Number Bool Null Undefined Bigint Symbol
    • 引用类型:Object (Object Array Function Date Regexp)
    • 熟悉类型的转换方式,比如 == 和 === 的情况
    • 进阶要求
    • 了解JS类型转换过程的一些陷阱
    • 了解存在Bigint Symbol的类型,以及如何检测着两种类型
    • 如何检测一个变量的类型
    • typeof
    • instanceof
    • constructor
    • Object.prototype.toString.call
  2. 函数、类
    - 基本要求
    • 熟悉类和函数的最基本用法
    • 熟悉通过类和函数如何定义对象,实现继承的基本思路
    • Class extends
    • Prototype extends
    • 进阶要求
    • 了解Hoisting的情况,能解释清楚代码的执行区别
    • console.log(foo()); function foo() {};
    • console.log(bar()); const bar = function () {};
    • console.log(new Hello()); class Hello {};
    • 手撸inherits的实现,能解释清楚原理
    • 加分项
    • 了解class extends和prototype extends各自的区别
    • 了解定义class中常见的一些语法
    • Public field & private field
    • Static property
  3. 闭包
    - 基本要求
    • 熟悉如何创建一个闭包
    • 进阶要求
    • 能够给出一些例子,适合用闭包来解决的问题
    • 能了解闭包使用不当带来的问题
    • 加分项
    • 能解释清楚原理和概念(闭包是函数和声明该函数的词法环境的组合)
  4. 流控制
    - 异步
    • 基本要求
    • Callback 和Promise的用法
    • Async & await的用法
    • fetch的用法
    • Node.js中读写文件的异步方式
    • 进阶要求
    • Callback 转成Promise
    • 多个callback或者Promise的时序问题处理
    • 熟悉Promise相关的unhandledPromiseRejection之类的用法
    • 同步
    • 代码提升
  5. 常见数据结构
    - 数组
    • 基本要求
    • 不要考察API,如何splice和slice的区别
    • 创建一个空数组、长度为N的空数组
    • 了解for in 和 for of遍历数组的区别
    • 进阶要求
    • 如何实现Array.prototype.flat()
    • 了解ArrayLike Object的存在,以及操作的注意事项
    • 了解ArrayLike Object 如何快速的转化成Array
    • 对象
    • 基本要求
    • 熟悉如何遍历一个对象,并完成深度复制
    • 了解string和new String(),以及number和new Number的区别
    • 进阶要求
    • 了解[] 和 new Array的区别
    • 了解{} 和 new Object() 以及 Object.create(null)的区别
  6. 网络操作
    - 基本要求
    • 了解xhr和fetch的基本用法(可以写出伪代码)
    • 了解http中缓存相关的事项
    • 进阶要求
    • 了解跨域处理的方式、优点、缺点等
    • 熟悉基本的http相关的协议 status code, request & response format
    • 加分项
    • 熟悉h2相关协议
    • 熟悉https协议,如何在安全性、性能方面进行平衡
    • 看过High Performance Browser Networking、HTTP:The Definitive Guide
  7. DOM
    - 基本要求
    • 事件:addEventListener 和 removeEventListener的基本用法
    • 事件:了解onxxx和addEventListener的区别
    • 进阶要求
    • 了解DOM和BOM的区别
    • 熟悉最基础的DOM遍历的方式,可以实现DOM2JSON(考察会不会写递归、是不是了解最基本的DOM API,比如children, childNodes以及兼容性的处理,比如文本节点,注释节点等)
    • 加分项
    • 样式:了解getComputedStyle和style的区别和联系
    • 事件:了解兼容性的问题,可以手撸一个事件管理等library,知道实现过程中的细节和难点
    • 可以实现JSON2DOM也就是最基础的VirtualDOM的实现
  8. BOM
    - 基本要求
    • 熟悉通过document.cookie访问cookie的方式
    • 熟悉navigator screen history location等基本的用法
    • 进阶要求
    • 熟悉如何通过document.cookie设置cookie
    • 熟悉如何通过set-cookie response header设置cookie、以及了解HttpOnly和secure相关的属性
    • 加分项
    • 计算机可视区域 window,innerHeight window.innerWidth 以及screen.width和screen.height的区别
  9. 正则
    - 基本要求
    • 了解/x/和new RegExp('x')的用法
    • 了解正则表达式的基本用法exec test等
    • 进阶要求
    • 了解global flag和lastIndex注意事项
    • 加分项
    • 了解最新的一些特性,比如named group unicode的支持等
    • 了解正则回溯带来的性能问题
  10. JSON操作
    • 基本要求
    • 熟悉JSON.parse和JSON.stringify的用法
    • 进阶要求
    • 了解JSON.stringify的安全性问题
    • 了解JSON.parse和JS语法的兼容性问题

HTML

CSS

进阶知识

项目经验

设计