注意事项

  1. 『很多』公司面试题都是常年不更新的,『可能』你搜该公司往年的面经,就能猜到今年的题目。

  2. 很多面试官的知识也是常年不更新的,你不要答得太『偏激』,应该了解大众的想法。

  3. 本押题主要强调答题思路,具体答案都可以搜到(不要用百度)

    技巧

  4. 遇到比较抽象的题目就具体化(举例),遇到比较具体的题目就抽象化(阐述)

  5. 抽象题目搜知乎,代码题目搜 Stackoverflow 或博客

  6. 『XXX 的原理』这种题目一般都是说源代码思路,但你不需要看源码,直接看别人的博客即可(再次强调,不要用百度)

    HTML

  7. 必考:你是如何理解 HTML 语义化的?

    简单来说:就是用正确的标签做正确的事。比如:
    头部:header 导航:nav 主体内容:main 标题:h1 ~ h6 段落:p 侧边栏:aside 页脚:footer
    从历史讲起,大家知道前端也是这两年才发展起来的,以前的前端都是写写展示页,所以其实很早以前,是没有专门的前端的,需要写网页了,就让后端看看顺手写了,所以那时候的网页,都是一堆Table 或者 满屏幕的div标签。不要说给别人看自己的HTML结构了,估计自己也看的够累。而且对于搜索引擎和设备解析来说,非常的不友好。
    发展路线:后端的table标签–>美工人员使用div+css布局–>讲专业的前端会使用正确的标签进行页面开发。

    使用HTML语义化的好处:
    1.标签语义化有助于构架良好的HTML结构,有利于搜索引擎的建立索引、有助于爬虫抓取更多的有效信息.简单来说,试想在H1标签中匹配到的关键词和在div中匹配到的关键词搜索引擎会吧那个结果放在前面。
    2.有利于不同设备的解析(屏幕阅读器,盲人阅读器等)满是div的页面这些设备如何区分那些是主要内容优先阅读?
    3.有利于构建清晰的机构,有利于团队的开发、维护。
    4.提升用户体验,例如title、alt可用于解释名词或解释图片信息。
    5.网页加载慢导致CSS文件还未加载时(没有CSS),页面仍然清晰、可读、好看。

  8. meta viewport 是做什么用的,怎么写?

  9. 你用过哪些 HTML 5 标签?

  10. H5 是什么?

CSS
===
  1. 必考:两种盒模型分别说一下。
  2. 必考:如何垂直居中?
  3. 必考:flex 怎么用,常用属性有哪些?
  4. 必考:BFC 是什么?
  5. CSS 选择器优先级
  6. 清除浮动说一下

原生 JS

  1. 必考:ES 6 语法知道哪些,分别怎么用?
  2. 必考 Promise、Promise.all、Promise.race 分别怎么用?
  3. 必考:手写函数防抖和函数节流
  4. 必考:手写AJAX
  5. 必考:这段代码里的 this 是什么?
  6. 必考:闭包/立即执行函数是什么?
  7. 必考:什么是 JSONP,什么是 CORS,什么是跨域?
  8. 常考:async/await 怎么用,如何捕获异常?
  9. 常考:如何实现深拷贝?
  10. 常考:如何用正则实现 trim()?
  11. 常考:不用 class 如何实现继承?用 class 又如何实现?
  12. 常考:如何实现数组去重?
  13. 放弃:== 相关题目(反着答)
  14. 送命题:手写一个 Promise

DOM

  1. 必考:事件委托
  2. 曾考:用 mouse 事件写一个可拖曳的 div

HTTP

  1. 必考:HTTP 状态码知道哪些?分别什么意思?
  2. 大公司必考:HTTP 缓存有哪几种?
  3. 必考:GET 和 POST 的区别
  4. Cookie V.S. LocalStorage V.S. SessionStorage V.S. Session

框架 Vue

  1. 必考:watch 和 computed 和 methods 区别是什么?

  2. 必考:Vue 有哪些生命周期钩子函数?分别有什么用?

  3. 必考:Vue 如何实现组件间通信?

  4. 必考:Vue 数据响应式怎么做到的?

  5. 必考:Vue.set 是做什么用的?

  6. 必考:vue 双向绑定原理?
    使用 Object.defineProperty 或者 Proxy 实现数据拦截,在 getter 存储值时,在 setter 时更新值,并且更新 UI。

  7. Vuex 你怎么用的?

  8. VueRouter 你怎么用的?

  9. 路由守卫是什么?

框架 React

  1. 必考:受控组件 V.S. 非受控组件
  2. 必考:React 有哪些生命周期函数?分别有什么用?(Ajax 请求放在哪个阶段?)
  3. 必考:React 如何实现组件间通信?
  4. 必考:shouldComponentUpdate 有什么用?
  5. 必考:虚拟 DOM 是什么?
  6. 必考:什么是高阶组件?
  7. React diff 的原理是什么?
  8. 必考 Redux 是什么?
  9. connect 的原理是什么?

TypeScript

  1. never 类型是什么?
  2. TypeScript 比起 JavaScript 有什么优点?

Webpack

  1. 必考:有哪些常见 loader 和 plugin,你用过哪些?
  2. 英语题:loader 和 plugin 的区别是什么?
  3. 必考:如何按需加载代码?
  4. 必考:如何提高构建速度?
  5. 转义出的文件过大怎么办?
    上面五题请看这个不错的参考:https://zhuanlan.zhihu.com/p/44438844

安全

  1. 必考:什么是 XSS?如何预防?
  2. 必考:什么是 CSRF?如何预防?

开放题目

  1. 必考:你遇到最难的问题是怎样的?
  2. 你在团队的突出贡献是什么?
  3. 最近在关注什么新技术
  4. 有没有看什么源码,看了后有什么记忆深刻的地方,有什么收获

刁钻题目

  1. 代码
  2. 代码
  3. (a ==1 && a== 2 && a==3) 可能为 true 吗?
    可以能

超纲题

  1. JS 垃圾回收机制
  2. Eventloop 说一下

个性化题目

  • PWA
  • echarts.js / d3.js
  • three.js
  • flutter
  • SSR

源码题目