2018年9月南京前端面试题个人总结
本周花了三天时间去了七家公司面试,其中有正在组建团队的创业公司,也有像苏宁这样成熟的大公司。面试结束之后,记录一下个人面试所遇到的一些问题。
HTML 部分
- 行内元素与块级元素分别有哪些?有什么区别?
- HTML 5 新增的标签有哪些?
- 事件代理的原理是什么?为什么要使用事件代理?
- 有没有什么事件是不会冒泡的?
- 两个并列的元素渲染顺序是什么样的?
- 如何理解 HTML 语义化?
- 了解过浏览器的渲染机制吗?
- 如何加快页面的加载速度?
CSS 部分
- 如何实现元素水平和垂直居中?
- 如何实现左侧元素宽度固定,右侧元素宽度自适应的布局?
- z-index 生效的范围?
- rem 和 em 分别是什么?有什么区别?
- CSS 有哪些选择器?选择器的权重与优先级规则什么样的?
- 介绍一下 flex 布局?
- 什么情况下会遇到元素高度塌陷?如何处理?
- 网站如何适配不同屏幕大小?
- 有了解 CSS3 里面的新增动画吗?
- 如何看待 SCSS 这种 CSS 预处理器?
JS 部分
谈谈你对原型的理解?
JS 如何实现继承?如何实现多继承?
闭包是什么?它的使用场景是什么?
什么是深拷贝与浅拷贝?如何实现?
如何判断一个变量是数组类型?
谈谈你对同步和异步的理解?
简述下变量提升与函数提升?如何避免?
熟悉 ES6 语法吗?ES6 带来了哪些改变?
你经常使用的数组方法有哪些?为什么要使用它们呢?
简述一下 Promise 的概念?它的实现原理是什么?
async/await 的作用是什么?它的实现原理是什么?
有了解过 Generator 函数吗?简单介绍一下。
了解 Iterator 吗?它的作用是什么?
import 和 require 引入有什么区别?
了解函数式编程这个概念吗?它有哪些特性?
如何理解高阶函数?
ES7 新增了哪些语法?
如何理解 JS 单线程?
编程题:以下 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
- 常用的请求方法有哪些?分别在什么情况下使用?
- 使用过 HEAD 方法吗?它的适用场景是什么?
- 简述一下常用 HTTP 状态码及其对应状态?
- HTTP 的请求构成有哪些?
- TCP 几次握手?做了些什么?
- 谈谈你对 RESTful 架构的理解?
- 如何处理浏览器跨域问题?
- 平时使用什么方式发起 http 请求?它的原理是什么?
- 有了解过 Fetch 吗?
- session 和 cookie 的区别是什么?它们各自的适用场景是什么?
Node
- 说说你对 node 的理解?
- node 的适用场景有哪些?
- 什么是事件循环?
- Express 和 Koa 有什么异同吗?
- 简述一下 Koa 的原理?
- 如何理解 koa 的中间件?
- Koa 是如何实现异步的?
- co 库的原理实现是什么?
Vue
- 你为什么会选择使用 Vue,谈谈你对 Vue 的理解?
- Vue 和 AngularJS 之间有什么异同?
- 阅读过 Vue 源码吗?Vue 的双向绑定原理是什么?
- Vue 的生命周期?对应的钩子函数有哪些?
- 在钩子函数中常做的操作有哪些?
- 计算属性和侦听器有什么区别?常用来做些什么?
- 使用过计算属性里面的 getter 和 setter 吗?
- 常用的指令有哪些?使用过自定义指令吗?
- v-if 和 v-show 有什么区别?它们之间的优先级是什么样的?
- v-model 指令是如何实现的?
- 列表组件中的 key 属性的作用是什么?
- 组件过渡动画有了解吗?
- 使用过缓存组件吗?keep-alive 的适用场景是什么?
- 父子组件与非父子组件间如何进行数据通信?
- 为什么要进行状态管理?如何进行状态管理?
- 为什么要使用 Vuex ,而不是将数据挂载到 window 对象上?
- Vuex 里面的几个重要属性分别是什么?它们的作用是什么?
- Vuex 的工作流程是什么样的?
- Vuex 里面的同步与异步操作该如何进行?
- 有遇到过 Vuex 里面的数据与计算属性冲突的问题吗?该如何解决?
- 常用的路由方式有哪几种?
- Vue-Router 如何进行参数传递以及参数接收?
- 路由的常用钩子函数有哪些?一般用来做些什么?
- 如何实现页面权限控制?
- 如何实现按钮级别颗粒细度的权限控制?
- 如何实现路由按需加载?
- 开发时如何解决跨域问题?
- 如何更改打包输出文件的路径?
- 有了解过 Vue3.0 吗?它更新了哪些新特性?
常用工具
- 有自己手写写过 webpack 的配置文件吗?
- webpack 的配置文件有哪几个重要属性?
- webpack 的 Loader 和插件的区别是什么?
- git 常用的命令有哪些?
git checkout
命令的作用是什么?- rebase 跟 merge 的区别是什么?有了解过 gitflow 工作流吗?
杂项
- 谈一谈你之前所做的项目?
- 有做过移动端开发吗?
- 开发中有遇到令你印象深刻的问题吗?
- 开发时遇到 BUG 时你是如何进行处理的?
- 能展示一下你的 Github 吗?
- 平时在哪些地方学习前端技术?常去的技术社区有哪些?
- 有写过技术文章吗?
- 发布过 npm package 吗?
- 写过 Vue 插件吗?
- 如何与其他同事进行沟通交流?
- 你希望公司给你提供什么?
- 你对自身有什么个人规划吗?
- 你有什么想问我(面试官)的?
The MIT License (MIT)
Copyright (c) 2019, Roojay.
本文链接:https://roojay.com/pages/906ca162/