
前端面试
杏子 |职业生涯规划师
1、职业生涯规划师;
2、1000+小时职业辅导咨询时长(职业转型、简历诊断/优化、1v1职业规划咨询、求职全流程陪跑);
3、8年前端开发经验,前科大讯飞研发负责人;
4、著有书籍《Web全栈项目开发入门与实战》。
展开
-
微信笔试 - 闭包问题解析
今天逛技术公众号的时候看到一个大佬分享的关于闭包的微信笔试题,自己尝试做了一下,发现还挺有趣的,在此记录一下。原创 2020-05-13 11:22:30 · 763 阅读 · 0 评论 -
两个对象数组去重的3种方法
本文要讲的数组元素是对象,也就是引用类型。引用类型与基本类型最大的区别是引用类型赋值的是指针,而不是真正的值。原创 2019-10-28 22:07:31 · 13428 阅读 · 0 评论 -
判断数组的方法以及优劣势
三种判断是否为数组的方法。一、instanceof Array ,方法二:Array.isArray(),方法三:Object.prototype.toString.call()。原创 2019-10-31 22:17:05 · 1271 阅读 · 0 评论 -
MVC 模型、MVP模型 和 MVVM 模型介绍(附案例说明)
为了解决图形界面程序的复杂性,提高可维护性,MVC 模型、MVP模型 及 MVVM 模型应运而生。它们的本质都是将数据层、逻辑层、视图层分层管理。本文将分别介绍这三种模型的概念、特点及通信方式。并通过一个 todoList 案例来说明这三种模型。原创 2020-04-28 23:10:42 · 3311 阅读 · 0 评论 -
面试题 - (0.1+0.2=0.3)?
面试题 - 0.1+0.2=0.3?原创 2020-03-30 17:38:52 · 1109 阅读 · 0 评论 -
一文理解 CSS 中的 BFC
可能对于很多前端而言,BFC 都是神秘的存在。大多数人停留在只知其一,不知其二的状态。本文就来揭秘一下 CSS 中的 BFC。其实你不需要去纠结它的定义。你只需要知道 BFC 是一个独立的渲染区域,清楚它的布局规则及应用即可。原创 2020-03-21 17:40:26 · 278 阅读 · 0 评论 -
面试题 - 5 道 Promise 笔试题
面试题 - 精选20道 Promise 笔试题原创 2020-03-17 22:45:51 · 2715 阅读 · 4 评论 -
面试题 - 实现一个 call/apply 方法
面试题 - 实现一个 call/apply 方法原创 2020-03-13 22:09:13 · 502 阅读 · 1 评论 -
面试题 - 说说 var、let、const 区别
请描述一下 var、let 、const 三者的区别。原创 2020-03-09 22:18:42 · 1394 阅读 · 4 评论 -
面试题 - 如何让 (a == 1 && a == 2 && a==3) 结果为 true
如何让一个变量 a = = 1 && a = = 2 && a = = 3 结果为 true。原创 2020-03-07 21:32:54 · 1067 阅读 · 0 评论 -
面试题(算法题) - 百钱买百鸡
条件:现有 100 钱,一共要买公鸡、母鸡、小鸡三种鸡,已知公鸡 5 钱一只,母鸡 3 钱一只,1 钱可以买三只小鸡。要求:公鸡、母鸡、小鸡都要有,一共买 100 只鸡。有哪几种买法,公鸡、母鸡、小鸡分别是多少只?原创 2019-12-22 19:45:59 · 6044 阅读 · 3 评论 -
面试题(算法题)- 找出最快的4匹马
现有 64 匹马,8 个赛道,在不计时的情况下,怎么(或者说需要比多少场次)才能找出最快的4匹马?原创 2019-12-22 18:41:41 · 1386 阅读 · 1 评论 -
面试题 - JavaScript 中 this 指向
面试题 - JavaScript 中 this 指向原创 2019-12-16 17:00:35 · 2031 阅读 · 1 评论 -
面试题 - JavaScript 中原型及原型链
JavaScript 中的继承主要是通过原型来实现。而原型继承少不了两个重要的属性 __proto__ 和 prototype。今天整理一下前端面试题中的原型和原型链题目。原创 2019-12-15 22:47:24 · 826 阅读 · 0 评论 -
面试题 - JavaScript 中对象的考察
在前端面试中,对 JavaScript 的对象考察有很多种。比如对象传参是按引用传递还是按值传递;比如对象的 key 如果不是字符串该如何解析;比如对象连续赋值等等问题。今天通过以下几道笔试题来考察对象的这些特点。原创 2019-12-15 22:30:05 · 376 阅读 · 0 评论 -
面试题 - 求两个数组的并集、交集、差集
1. 求并集的思路就是对合并的两个数组去重,去重最简单的办法就是使用 Set 集合;2. 求交集的思路就是轮询一个数组在另一个数组中是否出现,可通过 indexOf 或者 incloud 判断;3. 求差集的思路是取并集中的非交集。原创 2019-11-30 16:19:02 · 3693 阅读 · 0 评论 -
观察者模式和发布/订阅模式
观察者模式和发布/订阅模式很像,其区别主要在于,发布/订阅模式中发布者与订阅者双方没有感知。两者的区别可以抽象地理解租房子。观察者模式是自己找房东,两个人协商好生意就达成了。发布/订阅模式则是房东将租房信息挂在中介方,租房者也可以把自己的租房需求告知中介方。交易由中介方来促成。原创 2019-11-24 15:53:19 · 289 阅读 · 0 评论 -
深度优先遍历与广度优先遍历
如果要对 DOM 树或者其他树形结构的数据进行遍历,可以有两种方式。一种是深度优先遍历,另一种是广度优先遍历。原创 2019-11-23 19:40:00 · 5080 阅读 · 0 评论 -
JavaScript 防抖与节流
DOM 事件中有很多高频操作,比如 onscroll 滚动监听,input 输入值监听,获取屏幕尺寸 resize 等。在实际应用场景中还有防止按钮多次点击。那么怎么减少高频事件的执行和阻止按钮多次点击昵?最好的方案就是防抖与节流。原创 2019-11-22 15:48:03 · 227 阅读 · 1 评论 -
前端面试题之多维数组去重排序
多维数组去重排序原创 2019-10-31 13:24:53 · 1047 阅读 · 0 评论 -
30行代码封装一个链式调用简易 promise 异步函数
前端开发工程师对 Promise 函数肯定不会陌生,它是 JavaScript 中处理异步场景的利器,但是好多人对 Promise 只知其然,不知其所以然。简单说一下 Promise 主要是为了解决回调地狱以及优雅的处理异步而生。今天通过 30 行代码封装了一个链式调用的简易 Promise 函数,分享给大家。原创 2019-08-23 21:46:27 · 971 阅读 · 0 评论 -
从输完 URL 到页面内容展现做了哪些事情
一、DNS(Domain Name System) 域名解析根据输入的 URL 域名找到真实 IP地址,在查找的过程中,首先 DNS 会查询是否有缓存。1. 从浏览器中查找,不同浏览器设置的缓存时间不同,一般在2-30分钟;2. 从操作系统中查找;3. 从路由器中查找;4. 从 ISP 中查找;5. 域名服务器递归查询,首先从顶级域名(一般顶级域名已经在缓存中了),再到二...原创 2019-05-15 13:28:27 · 291 阅读 · 0 评论 -
JavaScript 中数组与字符串常用方法与区别
JavaScript 中为数组和字符串提供了很多方法,有时候有些方法极容易混淆。比如截取数组或者字符串的方法有 splice 和 slice及 split。今天给大家分享一下数组和字符串的常用方法。原创 2019-08-31 19:31:37 · 1615 阅读 · 0 评论 -
跨域解决方案(一)详细篇
一、前言跨域问题在前端已经是老生常谈了,本文围绕着为什么产生跨域以及几种解决方案详细说明。二、跨域起源说到跨域不得不提到浏览器的同源策略(1995年,Netscape公司提出的,现在适用于所有浏览器),所谓同源策略,即协议相同、域名相同、端口相同。如果三者之一有所不同就认为是跨域。三、跨域示例域名: https://www.hao123.com/index.html(默认...原创 2019-03-28 12:12:02 · 11462 阅读 · 0 评论 -
[‘1‘,‘2‘,‘3‘].map(parseInt)结果讲解
一、前言这是一道前端面试题,先说结果:[1, NaN, NaN]二、为什么会是这个结果1. map函数将数组的每个元素传递给指定的函数处理,并返回处理后的数组,所以 ['1','2','3'].map(parseInt) 就是将字符串1,2,3作为元素;0,1,2作为下标分别调用 parseInt 函数。即分别求出 parseInt('1',0), parseInt('2',1),...原创 2019-03-01 11:45:51 · 25620 阅读 · 6 评论 -
对象的深浅复制
一、概念ECMAScript 中一共有 7 种数据类型,其中基本数据类型有 6 种,分别为:Undefined、Null、Boolean、Number、String、Symbol( ES6 新增),而 Object 为复杂数据类型。基本数据类型是按值访问,引用数据类型的值是按引用访问(JS 不允许直接操作对象内存空间。在操作对象时,实际上是在操作对象的引用,而不是实际的对象)。如:...原创 2019-03-30 15:16:30 · 350 阅读 · 0 评论 -
实现 ES6 的 extends
一、ES6 继承通过 ES6 语法很容易实现继承,如下代码所示:class B{ constructor(name){ this.name = name; }};class A extends B{ constructor(name,age){ super(name) this.age = age; }};let a = n...原创 2019-04-13 00:49:17 · 2277 阅读 · 0 评论 -
JavaScript 中 new 操作符做了什么事情
一、前言在构造函数中,通常使用 new 操作符进行实例化,那么 new 操作符到底有什么作用,可以使用其他方案代替吗?二、new 操作符做了什么事情function Person(name){ this.name = name ;};var jack = new Person('jack');var jack1 = new Person('jack');console...原创 2019-05-02 10:11:55 · 1797 阅读 · 0 评论 -
Javascript 创建对象的五种方式
一、最简单的方式,创建一个Object实例var obj = new Object();obj.name = 'zhangsan';obj.sayName = function(){console.log(this.name);};二、最方便的方式,对象字面量var obj = {name:'zhangsan',sayName:function(){console.l...原创 2019-02-24 22:49:39 · 344 阅读 · 0 评论 -
HTTP 状态码详解
一、基本概念 HTTP状态码是客户端向服务端发起请求后,服务端返回的状态码及状态信息,状态码一般由三位数字组成,状态码的首字母一共有5种,分别是1-5,代表着5种不同的类型信息。以下是类型信息与具体的状态码信息。二、状态码类别1xx:通知信息,http服务器接收到请求,等待客户端的进一步消息发送。100("Continue"):继续发送请求(服务端已经接收到一部分,继续...原创 2019-04-27 22:16:48 · 1365 阅读 · 0 评论 -
让元素水平垂直居中的四种方法
让元素水平垂直居中的3种方法前言一、使用弹性布局二、使用 transform三、使用绝对定位四、总结前言让元素水平居中有很多方法,比如设置 text-align:center;比如设置margin:auto再比如使用弹性布局,display:flex,justify-content:center。但是让元素垂直居中,或者是水平垂直居中却不是那么容易,今天就给大家分享一下3种让元素水平垂直居中的...原创 2019-06-12 09:09:11 · 22636 阅读 · 6 评论 -
函数柯里化
一、概念函数柯里化就是将一个需要传入多个参数的函数改写成只传入一个参数,然后返回需要传入第二个参数的函数,以此类推。二、案例很一个很简单的例子就明白了。//没有柯里化function reduce(a,b,c){ return a-b-c;};console.log(reduce(3,2,1))// 0//函数柯里化function reduce(a){ ...原创 2019-04-29 22:38:49 · 369 阅读 · 0 评论 -
点击每个兄弟节点获取对应节点下标的六种方案详解
在 DOM 节点中,或者在循环引用中,如何点击每个兄弟节点获取对应节点下标,比如 ul 下有 3个 li,要求实现点击每个 li 获取其对应的下标。原创 2019-05-20 17:59:59 · 1691 阅读 · 0 评论 -
webpack 常用配置
一、前言webpack是目前前端开发中最流行的打包工具,不仅能实现 JS 打包,还能将 CSS 文件,图片文件,甚至是 LESS 文件打包,每一个文件都是一个独立的模块,并且实现按需加载。使用时需要安装 webpack 、webpack-cli 、webpack-dev-server三个基础模块。二、常用 webpack 配置如下module.exports = { ...原创 2019-05-06 09:06:25 · 13413 阅读 · 2 评论 -
HTTP 请求头与响应头详解
一、概念HTTP是超文本传输协议(HyperText Transfer Protocol),HTTP 请求头与响应头是指客户端与服务端在传输过程中对所传输资源的参数描述。二、报文头说明HTTP请求头说明(客户端提供的资源描述信息)1. Accept概念:浏览器可接受的哪种MIME(Multipurpose Internet Mail Extensions)类型的信息。...原创 2019-04-12 11:56:11 · 5363 阅读 · 0 评论 -
HTTP 9 种请求方式
HTTP 9 种请求方式原创 2019-08-24 08:51:58 · 9713 阅读 · 0 评论 -
JavaScript 6 种循环的使用与比较
JavaScript 中用来写循环的一种有 6 种方法。最常见的 for 循环,while 循环,map 循环,forEach 循环,以及 for in 与 for of 循环。今天就来分享一下这 6 种循环的用法及异同。在开始之前先介绍一下谷歌浏览器的工具之一 Profile,这个工具可以查看每个方法的执行时间。文中将使用该工具对比每个循环的执行时间,以此来判断性能差异。原创 2019-08-24 23:49:17 · 924 阅读 · 0 评论 -
JavaScript数组去重最简单的 4 种方案
JavaScript 数组去重是前端很容易碰到的笔试题,而且在前端开发中应用也非常广泛,今天给大家分享4种数组去重方案,分别使用 ES6 新语法 Set,indexOf,includes 以及数组的 filter 方法。原创 2019-08-22 22:36:14 · 1637 阅读 · 0 评论 -
异步(async/Promise/setTimeout)面试题解析
以下是一篇异步 (async/Promise/setTimeout) 面试题。看到网上不少解答,有的非常详细,同时也很啰嗦。有的分析得太简单,不免过于粗糙。本文试图以通俗易懂的语言来剖析一下这道面试题。原创 2019-08-28 15:33:39 · 2765 阅读 · 3 评论 -
跨域解决方案(二)对比篇
上一篇跨域解决方案(一)说明篇中对跨域有了详细说明,这一篇将每一种方案罗列出来总结对比。跨域解决方案一览表 序号 解决方案 简述 优点 缺点 1 document.domain 将子域和父域的domain都设置成父域地址 设置简单 仅限于子域名与父域名不同的情况 2 window.location.hash A与B通信...原创 2019-03-30 13:06:56 · 382 阅读 · 0 评论