2018年9月南京前端面试题个人总结

Author Avatar
Roojay 9月 08, 2018
  • 在其它设备中阅读本文章

本周花了三天时间去了七家公司面试,其中有正在组建团队的创业公司,也有像苏宁这样成熟的大公司。面试结束之后,记录一下个人面试所遇到的一些问题。

HTML 部分

  1. 行内元素与块级元素分别有哪些?有什么区别?
  2. HTML 5 新增的标签有哪些?
  3. 事件代理的原理是什么?为什么要使用事件代理?
  4. 有没有什么事件是不会冒泡的?
  5. 两个并列的元素渲染顺序是什么样的?
  6. 如何理解 HTML 语义化?
  7. 了解过浏览器的渲染机制吗?
  8. 如何加快页面的加载速度?

CSS 部分

  1. 如何实现元素水平和垂直居中?
  2. 如何实现左侧元素宽度固定,右侧元素宽度自适应的布局?
  3. z-index 生效的范围?
  4. rem 和 em 分别是什么?有什么区别?
  5. CSS 有哪些选择器?选择器的权重与优先级规则什么样的?
  6. 介绍一下 flex 布局?
  7. 什么情况下会遇到元素高度塌陷?如何处理?
  8. 网站如何适配不同屏幕大小?
  9. 有了解 CSS3 里面的新增动画吗?
  10. 如何看待 SCSS 这种 CSS 预处理器?

JS 部分

  1. 谈谈你对原型的理解?
  2. JS 如何实现继承?如何实现多继承?
  3. 闭包是什么?它的使用场景是什么?
  4. 什么是深拷贝与浅拷贝?如何实现?
  5. 如何判断一个变量是数组类型?
  6. 谈谈你对同步和异步的理解?
  7. 简述下变量提升与函数提升?如何避免?
  8. 熟悉 ES6 语法吗?ES6 带来了哪些改变?
  9. 你经常使用的数组方法有哪些?为什么要使用它们呢?
  10. 简述一下 Promise 的概念?它的实现原理是什么?
  11. async/await 的作用是什么?它的实现原理是什么?
  12. 有了解过 Generator 函数吗?简单介绍一下。
  13. 了解 Iterator 吗?它的作用是什么?
  14. import 和 require 引入有什么区别?
  15. 了解函数式编程这个概念吗?它有哪些特性?
  16. 如何理解高阶函数?
  17. ES7 新增了哪些语法?
  18. 如何理解 JS 单线程?
  19. 编程题:以下 a.js 文件导出 name1、name,在 b.js 中输出 name1、name2 的值

    // a.js
    export const name1 = 'name1';
    export default {
      name2: 'name2'
    }
    
    // b.js
    import name, { name1 } from 'a.js';
    
    console.log(`name1: ${name1}`);
    console.log(`name2: ${name.name2}`);
    

HTTP

  1. 常用的请求方法有哪些?分别在什么情况下使用?
  2. 使用过 HEAD 方法吗?它的适用场景是什么?
  3. 简述一下常用 HTTP 状态码及其对应状态?
  4. HTTP 的请求构成有哪些?
  5. TCP 几次握手?做了些什么?
  6. 谈谈你对 RESTful 架构的理解?
  7. 如何处理浏览器跨域问题?
  8. 平时使用什么方式发起 http 请求?它的原理是什么?
  9. 有了解过 Fetch 吗?
  10. session 和 cookie 的区别是什么?它们各自的适用场景是什么?

Node

  1. 说说你对 node 的理解?
  2. node 的适用场景有哪些?
  3. 什么是事件循环?
  4. Express 和 Koa 有什么异同吗?
  5. 简述一下 Koa 的原理?
  6. 如何理解 koa 的中间件?
  7. Koa 是如何实现异步的?
  8. co 库的原理实现是什么?

Vue

  1. 你为什么会选择使用 Vue,谈谈你对 Vue 的理解?
  2. Vue 和 AngularJS 之间有什么异同?
  3. 阅读过 Vue 源码吗?Vue 的双向绑定原理是什么?
  4. Vue 的生命周期?对应的钩子函数有哪些?
  5. 在钩子函数中常做的操作有哪些?
  6. 计算属性和侦听器有什么区别?常用来做些什么?
  7. 使用过计算属性里面的 getter 和 setter 吗?
  8. 常用的指令有哪些?使用过自定义指令吗?
  9. v-if 和 v-show 有什么区别?它们之间的优先级是什么样的?
  10. v-model 指令是如何实现的?
  11. 列表组件中的 key 属性的作用是什么?
  12. 组件过渡动画有了解吗?
  13. 使用过缓存组件吗?keep-alive 的适用场景是什么?
  14. 父子组件与非父子组件间如何进行数据通信?
  15. 为什么要进行状态管理?如何进行状态管理?
  16. 为什么要使用 Vuex ,而不是将数据挂载到 window 对象上?
  17. Vuex 里面的几个重要属性分别是什么?它们的作用是什么?
  18. Vuex 的工作流程是什么样的?
  19. Vuex 里面的同步与异步操作该如何进行?
  20. 有遇到过 Vuex 里面的数据与计算属性冲突的问题吗?该如何解决?
  21. 常用的路由方式有哪几种?
  22. Vue-Router 如何进行参数传递以及参数接收?
  23. 路由的常用钩子函数有哪些?一般用来做些什么?
  24. 如何实现页面权限控制?
  25. 如何实现按钮级别颗粒细度的权限控制?
  26. 如何实现路由按需加载?
  27. 开发时如何解决跨域问题?
  28. 如何更改打包输出文件的路径?
  29. 有了解过 Vue3.0 吗?它更新了哪些新特性?

常用工具

  1. 有自己手写写过 webpack 的配置文件吗?
  2. webpack 的配置文件有哪几个重要属性?
  3. webpack 的 Loader 和插件的区别是什么?
  4. git 常用的命令有哪些?
  5. git checkout 命令的作用是什么?
  6. rebase 跟 merge 的区别是什么?有了解过 gitflow 工作流吗?

杂项

  1. 谈一谈你之前所做的项目?
  2. 有做过移动端开发吗?
  3. 开发中有遇到令你印象深刻的问题吗?
  4. 开发时遇到 BUG 时你是如何进行处理的?
  5. 能展示一下你的 Github 吗?
  6. 平时在哪些地方学习前端技术?常去的技术社区有哪些?
  7. 有写过技术文章吗?
  8. 发布过 npm package 吗?
  9. 写过 Vue 插件吗?
  10. 如何与其他同事进行沟通交流?
  11. 你希望公司给你提供什么?
  12. 你对自身有什么个人规划吗?
  13. 你有什么想问我(面试官)的?