面试题
文章平均质量分 69
微 光
纵有疾风起,人生不言弃
展开
-
《react》前端面试题
react面试题原创 2024-03-19 19:21:20 · 1209 阅读 · 0 评论 -
《JS》前端面试题
JS相关基础~原创 2021-04-17 17:46:30 · 2094 阅读 · 1 评论 -
《webpack&打包构建&项目优化》前端面试题
前端面试题《webpack&打包构建&项目优化》~原创 2021-04-17 17:32:19 · 1839 阅读 · 0 评论 -
《网络&浏览器》前端面试题
前端面试题《网络&浏览器》~原创 2021-04-17 17:30:49 · 1391 阅读 · 0 评论 -
《手写代码》前端面试题
各种手写代码~原创 2021-03-28 17:04:27 · 1687 阅读 · 1 评论 -
《vue》前端面试题
vue相关面试题~原创 2021-04-17 17:07:53 · 2132 阅读 · 2 评论 -
《CSS》前端面试题
css相关面试题原创 2021-04-17 16:31:51 · 1281 阅读 · 1 评论 -
js格式化千分位并补零
function toThousands(num) { var num=num.toString().split("."); var znum = (num[0] || 0).toString(), result = ''; while (znum.length > 3) { result = ',' + znum.slice(-3) + result; znum = znum.slice(0, znum.length - 3); } if (znum) .原创 2021-04-15 21:15:49 · 488 阅读 · 0 评论 -
斐波那契数列
斐波那契数,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波那契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=Fn-1+Fn-2(n>=2,n∈N*),用文字来说,就是斐波那契数列由 0 和 1 开始,之后的斐波那契数列系数就由之前的两数相加。 常用的计算斐波那契数列的方法分为两大类:递归和循环。递归方法一:普通递归 代码优美逻辑清晰。但是有重复计算的问题,如:当n为5的时候要计算fibonacci(4) + fibonacci(3),当n为4的原创 2021-04-14 13:56:03 · 4023 阅读 · 1 评论 -
寻找多个数组的交集
function searchMinArr(arrList) { minArr = arrList[0]; arrList.forEach(i=>{ //找出长度最小的数组 if(i.length<minArr.length){ minArr = i; }}) let targetArr = [] for (let i = 0; i < minArr.length; i++) { let stutas = true for (let j.原创 2021-04-13 18:47:34 · 556 阅读 · 0 评论 -
三种方法解决setTimeout的循环输出问题
for (var i = 0; i < 5; i++) { setTimeout(function() { console.log(i); }, 1000);}console.log(i);结果:先打印5,一秒后打印5个5原因:由于JavaScript是单线程的,按顺序执行,setTimeout是异步函数,它会将内部函数放到任务队列中,而此时会先将循环执行完毕再执行内部函数,因此当执行内部函数时i已经等于5了,所以最终会输出5个5方案一:...原创 2021-04-11 16:52:12 · 3934 阅读 · 0 评论 -
V8的垃圾回收机制
V8内存限制在 JavaScript 中,V8 只能使用系统的一部分内存。具体来说,在 64 位系统中,V8 最多只能分配 1.4g,在 32 位系统中,最多只能分配 0.7g。在浏览器端,大内存的需求并不多,但是对于后端而已,node.js如果遇到一个 2g 多的文件,那么将无法将其全部读入内存并进行各种操作。JS 的内存分为栈内存和堆内存。栈内存很简单,当 ESP 指针下移,也就是上下文切换之后,栈顶的空间会被自动回收。但是堆内存就相对比较复杂,下面会着重分析。我们知道,所有原创 2021-03-26 15:53:18 · 193 阅读 · 0 评论 -
前端面试题
前端面试遇到所有的面试题总结,更新中~原创 2018-10-30 22:26:30 · 10856 阅读 · 1 评论 -
JS中的this
对this指向大致的定义this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象1.普通函数调用,此时 this 指向 window例一:function test(){ var name = "翊枫"; console.log(this.name); //undefined console.log(this); //Window}test();上面说过this最终指向的是..原创 2021-03-15 21:59:47 · 177 阅读 · 0 评论 -
JS数组排序
一、冒泡排序1、比较相邻的两个元素,如果前一个比后一个大,则交换位置。2、比较完第一轮的时候,最后一个元素是最大的元素。3、这时候最后一个元素是最大的,所以最后一个元素就不需要参与比较大小。function sort(arr) { let len = arr.leghth for (let i = 0; i < len-1; i++) { //解释下为什么要减1,假如数组的长度为8.所以i最大是6.当i等于6的时候,j只能等于0.所以最后比较的是arr[6]和arr[7]原创 2021-03-15 16:44:51 · 210 阅读 · 0 评论 -
继承
继承:子类继承父类中的属性和方法(目的是让子类的实例能够调取父类中的属性和方法)一、原型链继承:让父类中的属性和方法在子类实例的原型链上(实例想调用这些方法,是基于__proto__原型链查找机制完成的)子类.prototype = new 父类() 子类.prototype.constructor = 父类 -->保证原型重定向后的完整性 function A(x) { this.x=x } A.prototype.getX=function(){ .原创 2021-03-14 23:07:15 · 195 阅读 · 0 评论 -
JS事件循环和经典异步面试题
关于JS这个标题下,我们只需要牢记一句话:JavaScript 是单线程语言既然JavaScript是单线程语言,那么就会存在一个问题,所有的代码都得一句一句的来执行。就像我们在食堂排队打饭,必须一个一个排队点菜结账。那些没有排到的,就得等着~事件循环(Event Loop)JavaScript有一个主线程main thread,和调用栈call-stack也称之为执行栈。所有的任务都会放到调用栈中等待主线程来执行。JavaScript的Event Loop是伴...原创 2021-03-14 15:20:08 · 738 阅读 · 0 评论 -
JavaScript常见的数组去重
一、利用ES6 Set去重(ES6中最常用)let arr=[1,'1',1,2,3,4,4,5][...new Set(arr)]//也可用Array.from(new Set(arr) 这种方法还无法去掉“{}”空对象二、利用双层for循环,然后splice去重(ES5中最常用)双层循环,外层循环元素,内层循环时比较值。值相同时,则删去这个值。var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,u原创 2021-03-08 17:16:25 · 254 阅读 · 4 评论 -
域名收敛是什么
PC 时代为了突破浏览器的域名并发限制。有了域名发散。 浏览器有并发限制,是为了防止DDOS攻击。 域名收敛:就是将静态资源放在一个域名下。减少DNS解析的开销。 域名发散:是将静态资源放在多个子域名下,就可以多线程下载,提高并行度,使客户端加载静态资源更加迅速。 域名发散是pc端为了利用浏览器的多线程并行下载能力。而域名收敛多用与移动端,提高性能,因为dns解析是是从后向前迭代解析,如果域名过多性能会下降,增加DNS的解析开销。...原创 2021-01-28 16:07:15 · 550 阅读 · 0 评论 -
一个 TCP 连接可以发多少个 HTTP 请求?
你猜一个 TCP 连接上面能发多少个 HTTP 请求 - 知乎 (zhihu.com)原创 2020-12-01 15:54:58 · 131 阅读 · 0 评论 -
关于原型链的面试题
Function.prototype.a = 'a';Object.prototype.b = 'b';function Person(){};var p = new Person();console.log('p.a: '+ p.a);console.log('p.b: '+ p.b);console.log('Person.a: '+ Person.a);console.log('Person.b: '+ Person.b);原创 2020-07-29 11:40:53 · 1051 阅读 · 0 评论 -
“1 2 3“.replace(/\d/g, parseInt)
答案:"1 NaN 3"解析:replace() 回调函数的四个参数:1、匹配项2、与模式中的子表达式匹配的字符串3、出现的位置4、stringObject 本身 。如果没有与子表达式匹配的项,第二参数为出现的位置.所以第一个参数是匹配项,第二个参数是位置parseInt('1', 0)parseInt('2', 2) //2进制中不可能有2parseInt('3', 4)...原创 2020-07-23 16:05:20 · 2039 阅读 · 0 评论 -
[ [3,2,1].reduce(Math.pow), [].reduce(Math.pow) ]
答案:Error解析:Math.pow (x , y) x 的 y 次幂的值reduce(fn,total) fn (total, currentValue, currentIndex, arr)如果一个函数不传初始值,数组第一个组默认为初始值.[3,2,1].reduce(Math.pow)Math.pow(3,2) //9Math.pow(9,1) //9[].reduce(Math.pow) //空数组会报TypeError[1].reduce(Math.pow).原创 2020-07-22 19:57:36 · 984 阅读 · 0 评论 -
数组比较大小
var a = [1, 2, 3], b = [1, 2, 3], c = [1, 2, 4]a == ba === ba > ca < c这段代码的执行结果?答案:false, false, false, true解析:相等(==)和全等(===)还是比较引用地址 引用类型间比较大小是按照字典序比较,就是先比第一项谁大,相同再去比第二项。...原创 2020-07-22 17:00:04 · 4659 阅读 · 0 评论 -
%运算符
function isOdd(num) { return num % 2 == 1;}function isEven(num) { return num % 2 == 0;}function isSane(num) { return isEven(num) || isOdd(num);}var values = [7, 4, '13', -9, Infinity];values.map(isSane);运行的结果如何呢?答案:[true, true, true.原创 2020-07-22 16:28:31 · 1005 阅读 · 0 评论 -
浮点运算
var two = 0.2var one = 0.1var eight = 0.8var six = 0.6[two - one == one, eight - six == two]你认为结果是多少呢?面试遇到这个问题,应该怎么回答呢?[true,false]这里0.2-0.1===0.1之所以成立,是因为0.2是0.1的2倍,在二进制中只需要小数点向右移动一位即可,所以0.2-0.1===0.1,类似的,0,4-0.2===0.2,0.6-0.3===0.3也成立.原创 2020-07-22 15:59:36 · 651 阅读 · 0 评论 -
稀疏数组与密数组
var ary = [0,1,2];ary[10] = 10;ary.filter(function(x) { return x === undefined;});执行结果如何呢?做这个题目,你需要了解稀疏数组和密集数组 译 JavaScript中的稀疏数组与密集数组 Array/filter 看过源码的同学应该知道,filter源码中,会去判断数组的这个索引值是不是数组的一个属性,从详细操作js数组到浅析v8中array.js0 in ary; => true.原创 2020-07-22 15:26:41 · 217 阅读 · 0 评论 -
最大整数
var END = Math.pow(2, 53);var START = END - 100;var count = 0;for (var i = START; i <= END; i++) { count++;}console.log(count);温馨提示:不要试图去控制台运行哟。在 JS 里, Math.pow(2, 53) == 9007199254740992 是可以表示的最大值. 最大值加一还是最大值. 所以循环不会停....原创 2020-07-22 15:01:58 · 415 阅读 · 0 评论 -
var name = ‘World!‘; (function () {if (typeof name === ‘undefined‘) {...一道关于变量提升的面试题
ar name = 'World!';(function () { if (typeof name === 'undefined') { var name = 'Jack'; console.log('Goodbye ' + name); } else { console.log('Hello ' + name); }})();在 JavaScript中, Fun 和 var 会被提升相当于var name = '.原创 2020-07-22 11:31:17 · 5073 阅读 · 0 评论 -
非匿名自执行函数
var b = 10; (function b(){ // 'use strict' b = 20 console.log(b) })()输出的结果是什么?Function b- 如标题一样,非匿名自执行函数,函数名不可以修改,严格模式下会TypeError,- 非严格模式下,不报错,修改也没有用。- 查找变量b时,立即执行函数会有内部作用域,会先去查找是否有b变量的声明,有的话,直接.原创 2020-07-22 11:21:39 · 386 阅读 · 0 评论 -
var a = 0, b = 0; function A(a) {A = function (b)...一道关于作用域的面试题
var a = 0;b = 0;function A(a) { A = function (b) { console.log(a + b++) }console.log(a++)}A(1)A(2)JavaScript特性:闭包机制:闭包创建后,可以保存创建时的活动对象。自加操作符:++,当++作为后缀操作符时,调用++的表达式的值为自加前的自加对象的值。此处说明 ++操作符的特性。var i = 0;var eg = i+...原创 2020-07-21 16:18:39 · 3389 阅读 · 1 评论 -
let a = {n : 1};let b = a;a.x = a = {n: 2};console.log(a.x) console.log(b.x)
let a = {n : 1}; let b = a; a.x = a = {n: 2}; console.log(a.x) console.log(b.x)解题思路:a指向了一个对象{n:1} a浅拷贝给了b,此时b也指向了对象{n:1} 图解 “.”的优先级高于“=”,所以先计算a.x,也就是在a中添加属性x(此时这个x是undefined).a-->{n:1,x:undefined} a--...原创 2020-07-21 11:40:22 · 2812 阅读 · 0 评论