01 2019 档案
摘要:1.var的变量提升的底层原理是什么? JS引擎的工作方式是 1)先解析代码,获取所有被声明的变量; 2)然后再执行。 也就是分为预处理和执行这两个阶段。 变量提升:所有用var声明变量的语句都会被提升到代码头部。另外function也可看作变量声明,也存在变量提升的情况。 2.垂直水平居中的方式?
阅读全文
摘要:1.实现三栏布局(左右两边固定宽度,中间自适应) 1)浮动布局 左右两边固定宽度,并分别设置float:left和float:right。(但这会带来高度塌陷的问题,所以要清除浮动。清除浮动的方式有:a.给父级盒子设置height;b.给父级盒子设置overflow:hidden;c.在父级盒子结束
阅读全文
摘要:1.CSS的盒子模型 包含元素内容content、内边距padding、边框border、外边距margin box-sizing:border-box;content-box;inherit; 1)content-box:总宽度=margin+border+padding+width,即为标准模型
阅读全文
摘要:头条2020届实习生笔试题 一卷 编程题: 输入某年某月某日,判断这一天是这一年的第几天? 寻找多数元素 设计一个方法,在一个数组中寻找占大多数的元素(如果存在的话),如果这样的元素不存在,就输出“没有元素占大多数”。 占大多数的元素的定义为:如果一个数组A的长度为n,某一个元素在数组中的数量大于n
阅读全文
摘要:1. A、B、C分别输出什么? 运行结果如下: 所以A为0,B为5,C为[a:1] 2. 解法: 这道题如果没有限定给出给定的代码,还可以根据ES6块级作用域的知识把for循环中的var改成let,或者用Promise 3.有如下代码: 运行结果是: 报错 (扩展:如果题目中typeof f 'fu
阅读全文
摘要:此次面试说来也有点匆忙,本没想过自己会那么快就想去面试大公司,并且把自己第一次面大公司的各种不足展现得一览无余。当时11月20号左右身边一位朋友给了一位人超nice的师兄的内推,并且鼓励我去投简历。最终战胜了自己的胆怯,投了一份简历给内推的师兄。一两天后hr就打电话安排面试了。 没想到面试是要连续着
阅读全文
摘要:一、冒泡排序 算法介绍: 1.比较相邻的两个元素,如果前一个比后一个大,则交换位置。 2.第一轮把最大的元素放到了最后面。 3.由于每次排序最后一个都是最大的,所以之后按照步骤1排序最后一个元素不用比较。 冒泡算法改进:1.设置一个标志,如果这一趟发生了交换,则为true。否则为false。如果这一
阅读全文
摘要:算法介绍 二分查找,也称折半查找,是一种在有序数组中查找特定元素的搜索算法。查找过程经历一下步骤: (1)从有序数组的中间的元素开始搜索,如果该元素正好是目标元素,则停止搜索并返回该元素的索引值,否则进行下一步。 (2)如果目标元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半区域查找,然
阅读全文
摘要:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。
阅读全文
摘要:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
阅读全文
摘要:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。
阅读全文
摘要:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 示例 2: 说明: 所有输入只包含小写字母 a-z 。 答案参考:
阅读全文
摘要:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4
阅读全文
摘要:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4
阅读全文
摘要:给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器,且 n 的值至少为 2。
阅读全文
摘要:给定一个字符串 (s) 和一个字符模式 (p)。实现支持 '.' 和 '*' 的正则表达式匹配。 s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。 示例 1: 示例 2: 示例 3: 示例 4: 示例 5:
阅读全文
摘要:由于HTTP协议是无状态的,服务器只会响应来自客户端的请求,但是它与客户端之间不具备持续连接。 当用户在浏览器上进行操作时,可以请求服务器上的api;但是反过来不可以:服务端发生了一件事,无法将这个事件的信息实时主动的通知客户端。只有在客户端查询服务器当前状态时,所发生事件的信息才会从服务器传递到客
阅读全文
摘要:首先了解下关系型数据库和非关系型数据库 关系型数据库 SQL关系型数据库采用了关系模式来组织数据,即关系模式为二维表格模型。 主要的数据库:SQL Server,Oracle,Mysql,PostgreSQL。 优点:容易理解,使用方便,易于维护 缺陷:对于高并发量的读写效率,高扩展性和可用性(难以
阅读全文
摘要:什么是Node.js 官方解释:Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js使用了一个事件驱动、非阻塞式I/O的模型( Node.js的特性),使其轻量级又高效。 Node.js 的包管理器 npm 是全球最大的开源库生态系统。 上图所示:
阅读全文
摘要:前端路由原理本质就是监听 URL 的变化,然后匹配路由规则,显示相应的页面,并且无须刷新。目前单页面使用的路由就只有两种实现方式 hash history www.test.com/##/ 就是 Hash URL,当 ## 后面的哈希值发生变化时,不会向服务器请求数据,可以通过 hashchange
阅读全文
摘要:MVVM由以下三个内容组成 View:视图模板 Model:数据模型 ViewModel:作为桥梁负责沟通View和Model,自动渲染模板 在JQuery时期,如果需要刷新UI时,需要先取到对应的DOM再更新UI,这样数据和业务的逻辑就和页面有强耦合。 在MVVM中,UI是挺数据驱动的,数据一旦改
阅读全文
摘要:Virtual DOM算法 把一个div元素的属性打印出来,如下: 可以看到仅仅是第一层,真正DOM的元素是非常庞大的,这也是DOM加载慢的原因。 相对于DOM对象,原生的JavaScript对象处理起来更快,而且更简单。DOM树上的结构、属性信息都可以用JavaScript对象表示出来: 上面对应
阅读全文
摘要:1.HTTP的概念 超文本传输协议(HTTP)是用于传输诸如HTML的超媒体文档的应用层协议。它被设计用于Web浏览器和Web服务器之间的通信,但它也可以用于其他目的。 HTTP遵循经典的客户端-服务端模型,客户端打开一个连接以发出请求,然后等待它收到服务器端响应。 HTTP是无状态协议,意味着服务
阅读全文
摘要:块级格式化上下文(Block Fromatting Context)是按照块级盒子布局的。 BFC是一个独立的布局环境,其中的元素布局是不受外界的影响,并且在一个BFC中,块盒与行盒(行盒由一行中所有的内联元素所组成)都会垂直的沿着其父元素的边框排列。 W3C对BFC的定义如下: 浮动元素和绝对定位
阅读全文
摘要:构造函数:function Foo() {}; 实例对象: let f1 = new Foo; let o1 = new Foo; 一般函数都有prototype属性,除了window.Math和Function.prototype.bind()(该属性指向原型)等 一般对象都有__proto__属
阅读全文
摘要:JavaScript高级程序设计中对闭包的定义:闭包是指有权访问另外一个函数作用域中变量的函数。 从概念上,闭包有两个特点: 1.函数 2.能访问另外一个函数的作用域中的变量 在ES6之前,JavaScript只有函数作用域的概念,没有块级作用域(但catch捕获的异常,只能在catch中访问)的概
阅读全文
摘要:浅拷贝:浅拷贝只是复制了内存地址,如果原地址中的对象改变了,浅拷贝出来的对象也会相应改变。 深拷贝:开辟了一块新的内存存放地址和地址指向的对象,原地址的任何对象改变了,深拷贝出来的对象不变。 浅拷贝数组(只拷贝第一级数组): 1.直接遍历 2.slice slice(start,end),slice
阅读全文
摘要:文档碎片是什么: 如果我们要在一个ul中添加100个li,如果不使用文档碎片,那么我们就需要使用append经常100次的追加,这会导致浏览器一直不停的渲染,是非常消耗资源的。但是如果我们使用文档碎片了,我们可以先将100个li添加到文档碎片中,然后直接把这个文档碎片追加到ul中即可。所以文档碎片其
阅读全文
摘要:DOM即文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口。它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式。DOM把网页和脚本以及其他的编程语言联系起来。DOM属于浏览器的,而非JavaScript语言规范里规定的核心内容。
阅读全文
摘要:this是JavaScript语言中的一个关键字 它是函数运行时,在函数体内部自动生成的一个对象,只能在函数体内部使用。 上面代码中,函数test运行时,内部会自动有一个this对象可以使用。 那么,this的值是什么呢? 函数在不同使用场合,this有不同的值。总之,this就是函数运行时所在的环
阅读全文
摘要:1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ........ 观察这样的一组数,找出规律,用控制台输出这样规律的数 规律:这是杨辉三角,每一行头尾的数都是1,其余的数是上一行对应的数字相加,考虑使用递归算法。 js代码如下:
阅读全文
摘要:区分进程和线程 进程是cpu资源分配的最小单位(系统会给它分配内存) 不同的进程之间是可以同学的,如管道、FIFO(命名管道)、消息队列 一个进程里有单个或多个线程 浏览器是多进程的,因为系统给它的进程分配了资源(cpu、内存)(打开Chrome会有一个主进程,每打开一个Tab页就有一个独立的进程)
阅读全文
摘要:ES6是什么? JavaScript的第六版,在ES5的基础上增加了许多特性:箭头函数、字符串插值、代理、生成器、结构赋值、块级作用域等等。 一、let和const 1.作用:声明变量 ES6中明确规定,如果区块中存在let和const命令,则这个区块对这些命令声明的变量从一开始就形成封闭作用域。只
阅读全文
摘要:实际工作中,通过监听某些事件,如scroll事件检测滚动位置,根据滚动位置显示返回顶部按钮;如resize事件,对某些自适应页面调整DOM的渲染;如keyup事件,监听文字输入并调用接口进行模糊匹配等等,这些事件处理函数调用的频率如果太高,会加重浏览器的负担,减弱性能,造成用户体验不好。此时需要采用
阅读全文
摘要:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 示例 2: 示例 3:
阅读全文
摘要:请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的
阅读全文
摘要:定义一个父类: 1.原型链继承 核心:将父类的实例作为子类的原型 特点: 1.非常纯粹的继承关系,实例是子类的实例,也是父类的实例 2.父类新增的原型方法、属性,子类都能访问到 3.简单,易于实现 缺点: 1.要想为子类新增属性和方法,必须要在new Animal()这样的语句之后执行(可以在cat
阅读全文
摘要:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 示例 2: 示例 3: 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
阅读全文
摘要:将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。 请你实现这个将字符串进行指定行数变换的
阅读全文
摘要:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 示例 2:
阅读全文
摘要:给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 示例 1: 示例 2:
阅读全文
摘要:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 示例 2: 示例 3:
阅读全文
摘要:首先了解页面的呈现流程 1.浏览器把获取到的HTML代码解析成一个DOM树,HTML中的每个tag都是DOM树的1个节点,根节点就是document对象(<html> tag)。用firebug或者IE Develop Toolbar等工具可看到DOM树,包括display:none隐藏,还有js动
阅读全文
摘要:面试题经典题目,简要回答如下: a.域名解析 b.发起TCP连接的三次握手 c.建立TCP连接后发起http请求 d.服务端响应http请求,返回响应报文 e.浏览器页面渲染 f.断开TCP连接 下面详细介绍: a.域名解析 DNS解析,当在浏览器中输入一个URL,如“www.baidu.com”时
阅读全文
摘要:new和instanceof的内部机制 new 代码例子 new共经过4个阶段 1.创建一个空对象 2.设置原型链 3.让Func中的this指向obj,并执行Func的函数体。 4.判断Func的返回值类型,如果是基本值类型,返回obj;如果是引用类型,就返回这个引用类型的对象。 instance
阅读全文
摘要:react中状态管理工具,用来管理应用中的数据。 核心 Action:行为的抽象,视图中的每个用户交互都是一个action。比如:点击按钮。 Reducer:行为响应的抽象,也就是:根据action行为,执行相应的逻辑操作,更新state。比如:点击按钮后,添加任务,那么,添加任务这个逻辑放到Red
阅读全文
摘要:题目一 解析 首先Promise新建后立即执行,所以会先输出1,2,而Promise.then()内部的代码在当次事件循环的结尾立即执行,所以会先输出4,最后输出3. 答案:1 2 4 3 题目二 解析 resolve函数Promise对象的状态从“未完成”变为“成功”(即从pending变为res
阅读全文
摘要:什么是Promise? MDN对Promise的定义:Promise对象用于异步操作,它表示一个尚未完成且预计在未来完成的异步操作。 在学习Promise之前得先了解同步与异步:JavaScript的执行环境是单线程。所谓单线程,是指JS引擎中负责解释和执行JavaScript代码的线程只有一个,也
阅读全文
摘要:JavaScript高级程序设计上解释:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。 通过例子类比: 有三个同事预计会在周一收到快递。为签收快递,有两种办法:一是三个人在公司门口等快递;二是委托给前台MM为签收。现实中,我们大都采用委托的方案。前台MM收到快递后,
阅读全文