自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 面试中的高级数据结构之跳表

微信公众号:算法面试题           扫码开启算法之旅总结:跳表具有如下性质:(1) 由很多层结构组成(2) 每一层都是一个有序的链表(3) 最底层(第0层)的链表包含所有元素(4) 如果一个元素出现在第i层中,则它在第0到第i-1层也都会出现 (5) 跳表是一种随机化的数据结构(通过掷硬币的过程可以看出)点评:跳表是一种应用广泛的数据结构,著名的Redis与Leve...

2019-01-13 01:20:11 574

原创 装饰者模式

设计原则:类应该对扩展开放,对修改关闭。装饰者模式动态地将责任附加到对象上。 若要扩展功能,装饰者提供了比继承更有弹性 的替代方案。class Milk { constructor(goods) { this.goods = goods; } cost() { return this.goods.cost() + 2; } getDescription() { re...

2019-01-01 17:52:33 221

原创 观察者模式

设计原则:为交互对象之间的松耦合设计而努力。观察者模式:在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。...

2018-12-29 18:05:26 216

原创 策略模式

设计原则:找出应用中需要变化之处,把它们独立出来,不要和不变的部分混在一起。把会变化的部分取出并封装起来,好让其他部分不会受到影响。 设计原则:针对接口编程,而不是针对实现编程。设计原则:多用组合,少用继承。 有一个可能比是一个更好。 『策略模式』定义了算法族,分别封装起来,让它 们之间可以互相替换,此模式让算法的变化独立于使用 算法的客户。...

2018-12-29 14:01:39 186

原创 设计模式

策略模式观察者模式装饰者模式工厂模式单件模式命令模式适配器与外观模式模板方法模式迭代器与组合模式状态模式代理模式复合模式与设计模式相处剩下的模式...

2018-12-28 20:33:28 147

原创 什么是RSA算法

详情关注公众号:算法面试题  //返回a的p次方对n取模的值function superPow(a, p, n) { let b = String(p).split("").map(item => Number(item)); function powMod(x, y) { let res = 1; for(let i = 0; i < y; i++) { ...

2018-12-25 22:43:17 398

原创 什么是洗牌算法

公众号:扫码开启算法之旅 //对数组中的元素进行随机重新排列,并返回//arr:数组function shuffle(arr) { for(let i = arr.length - 1; i >= 0; i--) { //随机从0-i中选择一个下标 let randomIndex = Math.floor(Math.random() * (i + 1)); //将...

2018-12-05 17:21:32 247

原创 如何求根号2

欢迎关注公众号:算法面试题问题 小E最近找实习的时候,被面试官问了这样一道题:如何求根号2的值? 小E没能答上来,回来后向老师请教。 思路   点评:以上介绍了二分法和牛顿迭代法来求解根号2,另外我们还可以通过泰勒公式法来求解。很多朋友可能会问,我们经常调用的Math库中sqrt(x...

2018-12-03 21:51:36 3824

原创 循环左移数组元素

//逆序函数function reverse(arr, left, right) { let temp; while(left < right) { //两数交换 temp = arr[left]; arr[left] = arr[right]; arr[right] = temp; //左下标+1,右下标-1 left++; right--; }}...

2018-11-18 20:51:03 512

原创 分数转小数

JavaScript: //a,b均为整数,b不为0//返回字符串,代表分数的小数表示function divide(a, b) { //能整除直接返回 if(a % b === 0) return a / b; //不能整除分两种情况,结果是有限小数,结果是无限循环小数 //sign,存储结果正负号 let sign = ""; if(a > 0 &&...

2018-11-12 19:28:03 1085

原创 超级次方取模问题

/** * @param {number} a * @param {number[]} b * @return {number} */var superPow = function(a, b) { if(b == null || b.length === 0) return 1; function powMod(x, y) { let res = 1; for(let i...

2018-11-02 22:25:46 502

原创 百度面试题之求数组最大值

来源公众号:算法面试题上周末作者刚到百度进行了面试,今天对面试过程中的一道算法题进行梳理讲解。希望对大家有所帮助!  点评:此题实质上是二分查找的变形题目。  代码实现 下面是作者用JavaScript实现的代码,仅供参考!(建议大家自己动手实现一遍) 1//参数a...

2018-10-22 17:52:01 1424

原创 优先级队列(头条面试题)

来源:微信公众号:算法面试题               扫码开启算法之旅 //实现一个优先级队列,此队列具有enqueue(val,prior)和dequeue()两种操作,分别代表入队和出队。//其中enqueue(val,prior)第一个参数val为为值,第二个参数prior为优先级(prior越大,优先级越高),优先级越高越先出队//dequeue()出队操作,...

2018-10-17 20:33:10 820

原创 交叉层序遍历二叉树(美团面试题)

来源公众号:算法面试题说起二叉树遍历,大家并不陌生,先序遍历、中序遍历、后序遍历、层序遍历等等,在面试过程中,二叉树是许多面试官喜欢问的一个考点,大家需要将二叉树的上述遍历牢记于心。 今天,我们将重点讨论二叉树的层序遍历。 基本的层序遍历 二叉树的层序遍历,又叫广度优先遍历,即对二叉树一层一层地进行遍历,把一层的所有结点遍历完成后,再遍历下一层,如下图的遍历结果为:...

2018-10-15 16:24:13 1288 1

原创 LRU缓存淘汰算法

 来源公众号:算法面试题简介 LRU,最近最少使用算法,即当要对数据进行淘汰时,先将最近最久未使用的数据淘汰(亦说最近最久未使用算法),是一种缓存淘汰算法。  意义:大家知道计算机的内存是有限的,当我们对一些数据一直缓存而不淘汰的话,那么内存总会被占满的,特别是服务器,造成的后果是可怕的。 应用场景:内存的页面淘汰、站内搜索关键字的缓存淘汰(详见:《如何应对...

2018-10-14 10:15:48 2681

原创 正则表达式的exec方法与字符串的match方法比较

当正则表达式有全局属性时let s = "12mm13mm14";let reg = /(\d)+/g;//全局let res1, res2;while(res1 = reg.exec(s)) { console.log(res1);}res2 = s.match(reg);console.log(res2);//[ '12', '2', index: 0, input: '...

2018-09-27 20:38:50 243

原创 Promise解析

思想: 在执行本Promise的方法(每个方法都对应着下一个Promise)的时候,将下一个Promise的方法(全部方法)加入到任务队列,其中,最后的Promise的方法为空。两个数组:成功时要执行的方法数组_doneCallbacks,失败时要执行的方法数组_failCallbacks。注:根据本Promise方法的执行情况,决定下一个Promise执行哪个数组中的方法(_doneCa...

2018-08-31 20:59:22 280

原创 弹性盒子

弹性盒子由弹性容器和弹性子元素组成弹性容器:两条轴:水平轴与竖直轴6个属性:flex-direction:row、column、row-reverse、column-reverseflex-wrap:nowrap wrap wrap-reverseflex-flow:row nowrap(flex-direction flex-wrap简写形式)justify-cont...

2018-08-24 02:25:20 199

原创 position的五种方式

任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型。大多数情况下,height和width 被设定为auto的绝对定位元素,按其内容大小调整尺寸。但是,被绝对定位的元素可以通过指定top和bottom ,保留height未指定(即auto),来填充可用的垂直空间。它们同样可以通过指定left 和 right并将width 指定为auto来填充可用的水平空间。...

2018-08-21 12:55:57 733

转载 深入响应式原理

现在是时候深入一下了!Vue 最独特的特性之一,是其非侵入性的响应式系统。数据模型仅仅是普通的 JavaScript 对象。而当你修改它们时,视图会进行更新。这使得状态管理非常简单直接,不过理解其工作原理同样重要,这样你可以回避一些常见的问题。在这个章节,我们将进入一些 Vue 响应式系统的底层的细节。如何追踪变化当你把一个普通的 JavaScript 对象传给 Vue 实例的 data ...

2018-08-19 21:44:49 329

原创 JS严格模式

严格模式主要有以下限制:变量必须声明后再使用 函数的参数不能有同名属性,否则报错 不能使用with语句 不能对只读属性赋值,否则报错 不能使用前缀 0 表示八进制数,否则报错 不能删除不可删除的属性,否则报错 不能删除变量delete prop,会报错,只能删除属性delete global[prop] eval不会在它的外层作用域引入变量 eval和arguments不能被重...

2018-08-18 03:17:55 323

原创 forEach与for-in的坑爹地方

var arrCheck = new Array(100 + 1); arrCheck[4]=undefined; for(var i in arrCheck){ arrCheck[i]=false; console.log(1);//1,只输出1次 } console.log(arrCheck);//[empty × 4, false, e...

2018-08-10 02:25:30 516

转载 HTTP 协议中 Vary 的一些研究

文章目录HTTP 内容协商 有 BUG 的缓存服务 Nginx 和 SPDY经常抓包看 HTTP 请求的同学应该对 Vary 这个响应头字段并不陌生,它有什么用?用 PageSpeed 工具检查页面时,经常看到「Specify a Vary: Accept-Encoding header(请指定一个 Vary: Accept-Encoding 标头)」这样的建议,为什么要这样做?本文记录...

2018-08-06 00:42:15 592

转载 浅谈preflight request

背景不知道大家有没有发现,有时候我们在调用后台接口的时候,会请求两次,如下图的图一.png其实第一次发送的就是preflight request(预检请求),那么这篇文章将讲一下,为什么要发预检请求,什么时候会发预检请求,预检请求都做了什么一. 为什么要发预检请求我们都知道浏览器的同源策略,就是出于安全考虑,浏览器会限制从脚本发起的跨域HTTP请求,像XMLHttpRequ...

2018-08-06 00:39:43 560

转载 面试官说] 如何面试Web前端开发工程师

 近来几个月,一直在努力寻找前端战友,未果,一路的招聘经历下来,心生不少感慨, 一直都很小心翼翼的,怕错失了高人,又更加怕失误把关不够招到不合格的同学进来公司,对公司对项目造成某些影响。面试前端工程师对我来说是一件非常有意思的事,因为面试过程很大程度上也是自我提升的过程。无论大公司还是小公司,之所以在如何招聘到真正有能力的 前端工程师方面会遇到同样的问题,就是因为负责招聘的那些人不知道自己公...

2018-08-05 23:00:18 1967 1

转载 数据结构面试 之 单链表是否有环及环入口点

1.限制与要求不允许修改链表结构。 时间复杂度O(n),空间复杂度O(1)。2.思考2.1判断是否有环如果链表有环,那么在遍历链表时则会陷入死循环,利用这个特征,我们可以设计这样的算法。使用一个slow指针,一个fast指针。 slow指针一次往后遍历以1个节点,fast指针一次往后遍历2个节点,一直做这样的操作。如果fast指针在遍历过程中,遍历到了NULL节点说明链...

2018-07-31 22:06:55 170

原创 类加载器解析

 双亲委派模型加载过程(以类A为例):1.从最底层类加载器开始,最底层类加载器判断类A是否被自己加载过,加载过直接返回,否则转2;2.将类A加载权交给父类加载器,父类加载器判断类A是否被自己加载过,加载过返回,否则继续将类A加载权交给父类,一直到启动类加载器(BootStrapClassLoader)为止;3.若启动类加载器若加载过返回,否则从jre\lib路径加载此类,若类A在此路径...

2018-07-30 14:39:34 258

转载 浅谈 js中parseInt函数的解析

alert(Number(2.5)); //2.5 alert(parseInt(2.5)); //2 alert(parseInt("-2.5dd"));//-2 alert(parseInt("+2.5dd"));//2 alert(parseInt("12kj")); //12 alert(parseInt("09",8));//0 alert(p...

2018-07-28 12:09:45 392

转载 px,em与rem的区别

PX特点1. IE无法调整那些使用px作为单位的字体大小;2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位;3. Firefox能够调整px和em,rem,但是96%以上的中国网民使用IE浏览器(或内核)。 px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。(引自CSS2.0手册) em是相对长度单位。相对于当前对象内...

2018-07-27 23:20:36 154

原创 java中如何判断对象是否相等

思路 首先,判断是否为同一对象(this==anObject);其次,判断是否为同一类型(instanceof);第三,判断长度是否相等;最后,判断具体内容是否相等。Object public boolean equals(Object obj) { return (this == obj); }String public b...

2018-07-27 01:34:11 1307

原创 合唱团

题目描述有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最大的乘积吗?输入描述:每个输入包含 1 个测试用例。每个测试数据的第一行包含一个整数 n (1 <= n <= 50),表示学生的个数,接下来的一行,包含 n 个整数,按顺序表示每...

2018-07-26 21:44:57 149

原创 顺时针打印矩阵

题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10import java.util.ArrayList;public class Solution { pub...

2018-07-26 03:18:01 154

原创 判断二叉树B是否为二叉树A的子结构

题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路:遍历A树所有结点,分别判断以A树某个结点为根节点的子结构是否与B树结构相等import java.util.Stack;class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null;...

2018-07-26 02:16:33 668

原创 Js中获取对象属性的几种方法解析

for-in枚举在使用for-in循环时,返回的是所有能够通过对象访问的、可枚举的属性,其中既包括存在于实例中的属性,也包括存在于原型中的属性,屏蔽了原型中不可枚举属性的实例属性也会在for-in循环中返回。<script type="text/javascript"> function Person(name, sex) { this.name = name;...

2018-07-23 03:49:58 5611

原创 JS中一些重要的实例与类对应关系

            alert(Object.prototype.toString.call(new Object()));//[object Object]            alert(Object.prototype.toString.call(new Object(8)));//[object Number]                        alert(JSON...

2018-07-20 23:52:44 327

原创 width:100%与width:auto的区别

width:100%width:100%代表自身Width=父contentWidth*100%其中当自身box-sizing:content-box(也是默认值)时,自身Width的含义为自身contentWidth,当box-sizing:border-box(IE盒模型,IE8及以下只支持IE盒模型)时,自身Width的含义为自身contentWidth+paddingWidth+b...

2018-07-20 16:34:10 2454

转载 BFC背后神奇原理

BFC 已经是一个耳听熟闻的词语了,网上有许多关于 BFC 的文章,介绍了如何触发 BFC 以及 BFC 的一些用处(如清浮动,防止 margin 重叠等)。虽然我知道如何利用 BFC 解决这些问题,但当别人问我 BFC 是什么,我还是不能很有底气地解释清楚。于是这两天仔细阅读了CSS2.1 spec 和许多文章来全面地理解BFC。一、BFC是什么?  在解释 BFC 是什么之前,需要先介...

2018-07-20 12:48:00 205

转载 HTML中的可选标签

要开始观察HTML元素,从其根源开始比较合理,其实只是近似根源。第1章我们讲到了doctype声明,它是HTML文档的第一个元素。然而,在doctype之后是html元素,它包含了文档里所有其他的HTML元素,也叫作根元素。根元素是大量标签可选的元素中的一个(表2-3 罗列了其他可选标签的元素)。虽然标签是可选的,但是元素并没有被忽略。可选元素如果被省略了,那么会被隐性包含(body元素是个例...

2018-07-20 12:36:24 963

转载 解释性语言和编译性语言

解释性语言和编译性语言的定义:计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。解释性语言的定义:解释性语言的程序不需要编译,在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就需要逐行翻译一次,效率比较低。现代解...

2018-07-19 21:33:41 184

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除