写给女朋友的中级前端面试秘籍(含详细答案,15k级别)
前言
本篇文章,献给我家女朋友,祝她在杭州找一个965的好公司!
题外话:关于中级 -> 高级的进阶,我也写了一篇文章,希望对你有帮助: 写给初中级前端的高级进阶指南 HTML篇 HTML5语义化 html5语义化标签 百度ife的h5语义化文章,讲得很好,很多不错的公司都会问语义化的问题。
CSS篇
CSS常见面试题
CSS基础有的公司很重视,在面试前还是需要好好复习一遍的。
能不能讲一讲Flex布局,以及常用的属性?。
Flex布局是高频考点,而且是平常开发中最常用的布局方式之一,一定要熟悉。
BFC是什么?能解决什么问题?
关于bfc,可以看看三元大佬总结的文章 这篇文章里,顺便也把外边距重叠的问题讲了一下。
JS基础篇
讲讲JS的数据类型?
最新的 ECMAScript 标准定义了 8种数据类型:
- 6 种原始类型
- Boolean
- Undefined
- Number
- BigInt
- String
- Symbol
- null
- Object
- Function
developer.mozilla.org/en-US/docs/… 讲讲Map和Set?
- Map的key相比较普通对象来说更为灵活,普通对象的key只能以基础数据类型作为key值,并且所有传入的key值都会被转化成string类型,而Map的key可以是各种数据类型格式。
- Set可以讲讲它去重的特性。
WeakMap和Map之间的区别?
WeakMap只能以复杂数据类型作为key,并且key值是弱引用,对于垃圾回收更加友好。
讲讲原型链?
关于原型链,虽然现在用的不太多了,但是proto和prototype之间的关系,以及对于属性的向上查找这些还是一定要清楚的,其余不用看的太细。
讲讲this?
- this指向调用者这个关系一定要清楚
- 要知道改变this指向的几种方式(call, bind, apply)
- 箭头函数中this的特殊性要能讲清楚
浅拷贝和深拷贝的区别
- 浅拷贝:一般指的是把对象的第一层拷贝到一个新对象上去,比如
var a = { count: 1, deep: { count: 2 } }
var b = Object.assign({}, a)
// 或者
var b = {...a}
- 深拷贝:一般需要借助递归实现,如果对象的值还是个对象,要进一步的深入拷贝,完全替换掉每一个复杂类型的引用。
var deepCopy = (obj) => {
var ret = {}
for (var key in obj) {
var value = obj[key]
ret[key] = typeof value === 'object' ? deepCopy(value) : value
}
return ret
}
复制代码
对于同一个用例来说
// 浅拷贝
var a = { count: 1, deep: { count: 2 } }
var b = {...a}
a.deep.count = 5
b.deep.count // 5
var a = { count: 1, deep: { count: 2 } }
var b = deepCopy(a)
a.deep.count = 5
b.deep.count // 2
讲讲事件冒泡和事件捕获以及事件代理?
框架篇
React
React需要尽可能的保证熟练。因为作为中级工程师来说,公司可能不会让你去写框架,调性能优化,但是一定是会让你保质保量的完成开发任务的,这需要你能熟练掌握框架。
React2019高频面试题
这些题可以先过一下,如果暂时不能理解的就先跳过,不需要死磕。 有没有使用过 React Hooks?
- 常用的有哪些?都有什么作用?
- 如何使用hook在依赖改变的时候重新发送请求?
- 写过自定义hook吗?解决了哪些问题。
- 讲讲React Hooks的闭包陷阱,你是怎么解决的?
其实关于Hook的问题,把Dan的博文稍微过一遍,基本上就可以和面试官谈笑风生了。
讲讲React中的组件复用?
这篇文章从mixin到HOC到Hook,详细的讲解了React在组件复用中做的一些探索和发展,能把这个好好讲明白,面试官也会对你的React实力刮目相看。 另外这篇文章中的
高阶组件
和Hook
本身也是高频考点。
工具
webpack的基础知识
这个系列从基础到优化都有,可以自己选择深入 掘金刘小夕的webpack系列
性能优化
讲讲web各个阶段的性能优化?
这个很长,很细节,一样不要死磕其中的某一个点,对于你大概知道的点再巩固一下印象就ok。 webpack代码分割是怎么做的? webpack的代码分割(路由懒加载同理) 路由懒加载和webpack异步加载模块都是这个import()语法,值得仔细看看。
网络
讲讲http的基本结构?
说说常用的http状态码?
浏览器从输入url到渲染页面,发生了什么?
讲讲你对cookie的理解?包括SameSite属性。
这篇文章可以主要讲chrome80新增的cookie的SameSite属性,另外对于cookie整体也可以复习和回顾一遍,非常棒~
谈谈https的原理?为什么https能保证安全?
https也是一个高频考点,需要过一遍https的加密原理。
谈谈前端的安全知识?XSS、CSRF,以及如何防范。
安全问题也是很多公司必问的,毕竟谁也不希望自己的前端写的网站漏洞百出嘛。
讲讲http的缓存机制吧,强缓存,协商缓存?
浏览器缓存基本上是必问的,这篇文章非常值得一看。
手写系列
基础
手写各种原生方法
如何模拟实现一个new的效果? 如何模拟实现一个 bind 的效果? 如何实现一个 call/apply 函数? 三元-手写代码系列
说实话我不太喜欢手写代码的面试题,但是很多公司喜欢考这个,有余力的话还是过一遍吧。
进阶
精力有限的情况下,就先别背A+规范的promise手写了,但是如果有时间的话,可以大概过一遍文章,然后如果面试的时候考到了,再用简短的方式写出来。 剖析Promise内部结构,一步一步实现一个完整的、能通过所有Test case的Promise类
- JAVAScript柯里化、部分应用参数终极理解
- 翻转句子中单词的顺序
- 即将举行的全球区块链峰会强调东西方合作
- 区块链兄弟社区问答精选:关于51%攻击,你了解有多少?
- 编程小技巧
- use vue vuex vue-router, not use webpack
- 从尾到头打印链表
- Webpack+Vue如何导入Jquery和Jquery的第三方插件
- [Hadoop大数据]——Hive部署入门教程
- Vuex原来可以这样上手
- 《Hive编程指南》—— 读后总结
- Event(事件)的传播与冒泡
- [Hadoop大数据]——Hive数据的导入导出
- 区块链技术在电子游戏与博彩行业备受追捧 有望实现数字商品货币化
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Vim安装插件管理器Vundle
- Ubuntu下为vim安装YouCompleteMe插件
- 单机部署k8s
- VIM个性化配置(一)
- Django+Vue开发生鲜电商平台之6.使用Vue实现商品类别和商品数据前台显示
- 【程序源代码】基于Python开发的Markdown在线文档系统
- 深度学习Pytorch检测实战 - Notes - 第4章 两阶经典检测器:Faster RCNN
- Numpy中的两个乱序函数
- PerfDog4.0探索,支持用户自建web云
- 跨帐号访问COS资源
- 聊聊dubbo-go的DubboProtocol
- 推荐一个很牛叉的开源Flask项目
- 机器学习应用资产管理系列一:强化学习策略(附代码)
- 3分钟短文 | Laravel模型关联删除表记录,用观察者还是事件钩子
- 原理+代码|深入浅出Python随机森林预测实战