前端问答_个人页

个人头像照片 前端问答
个人头像照片 个人头像照片
1
481
0

个人介绍

前端问答小助手

擅长的技术

  • Java
  • 前端开发
获得更多能力
通用技术能力:
云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
  • 提交了问题 2019-12-01

    React的请求应该放在哪个⽣命周期中?

  • 提交了问题 2019-12-01

    React最新的⽣命周期是怎样的?

  • 提交了问题 2019-11-25

    【精品问答】前端面试手册之面试篇

  • 提交了问题 2019-11-25

    【精品问答】前端面试手册之算法/笔试题篇

  • 提交了问题 2019-11-25

    【精品问答】前端面试手册之Webpack篇

  • 提交了问题 2019-11-25

    【精品问答】前端面试手册之前端安全篇

  • 提交了问题 2019-11-25

    【精品问答】前端面试手册之Node篇

  • 提交了问题 2019-11-25

    【精品问答】前端面试手册之前端工程化篇

  • 提交了问题 2019-11-25

    【精品问答】前端面试手册之React篇

  • 提交了问题 2019-11-25

    【精品问答】前端面试手册之网络编程篇

  • 提交了问题 2019-11-25

    【精品问答】前端面试手册之CSS篇

  • 提交了问题 2019-11-25

    【精品问答】前端面试手册之HTML篇

  • 提交了问题 2019-11-24

    实现一个节流函数?

  • 提交了问题 2019-11-24

    实现一个防抖函数?

  • 提交了问题 2019-11-24

    eval函数是做什么的?

  • 提交了问题 2019-11-24

    面向对象和面向过程的区别?

  • 提交了问题 2019-11-24

    聊一聊如何在JavaScript中实现不可变对象?

  • 提交了问题 2019-11-24

    如何判断是否是数组?

  • 提交了问题 2019-11-24

    类型转换的规则有哪些?原理是什么?

  • 提交了问题 2019-11-24

    null与undefined的区别是什么?

  • 提交了问题 2019-11-24

    为什么会有BigInt(原始类型)的提案?

  • 提交了问题 2019-11-24

    ES6模块与commonJS模块有什么区别?

  • 提交了问题 2019-11-24

    JS的作用域链理解吗?

  • 提交了问题 2019-11-24

    谈谈你对垃圾回收机制的认识?

  • 提交了问题 2019-11-24

    为什么0.1+0.2!=0.3?如何解决这个问题?

  • 提交了问题 2019-11-24

    instanceof的原理是什么?

  • 提交了问题 2019-11-24

    new的原理是什么?通过new方式创建和通过字面量创建对象有什么区别?

  • 提交了问题 2019-11-24

    手写bind函数?

  • 提交了问题 2019-11-24

    手写apply函数?

  • 提交了问题 2019-11-24

    手写call函数?

  • 提交了问题 2019-11-24

    异步代码执行顺序?解释一下什么是Event Loop?

  • 提交了问题 2019-11-24

    什么是执行栈?

  • 提交了问题 2019-11-24

    进程与线程的区别?JS单线程的好处?

  • 提交了问题 2019-11-24

    实现一个promise?

  • 提交了问题 2019-11-24

    常用定时器函数各有什么特点?

  • 提交了问题 2019-11-24

    async及await的特点,优缺点?await的原理是什么?

  • 提交了问题 2019-11-24

    Promise 的特点是什么?有什么优缺点?

  • 提交了问题 2019-11-24

    你怎么理解Generator?

  • 提交了问题 2019-11-24

    什么是回调函数?有什么缺点?如何解决回调地狱问题?

  • 提交了问题 2019-11-24

    并发与并行的区别?

  • 提交了问题 2019-11-24

    map、filter、reduce各有什么作用?

  • 提交了问题 2019-11-24

    Proxy可以实现什么功能?

  • 提交了问题 2019-11-24

    为什么使用模块化?有哪几种方式?各有什么特点?

  • 提交了问题 2019-11-24

    原型如何实现继承?class如何实现继承?class本质是什么?

  • 提交了问题 2019-11-24

    解释下变量提升?var、let及const的区别?

  • 提交了问题 2019-11-24

    谈谈你对原型和原型链的认识?

  • 提交了问题 2019-11-24

    什么是浅拷贝?如何实现?什么是深拷贝?如何实现?

  • 提交了问题 2019-11-24

    谈谈你对闭包的认识?

  • 提交了问题 2019-11-24

    ==和===有什么区别?

  • 提交了问题 2019-11-24

    如何正确判断this?箭头函数的this是什么?

暂无更多信息
  • 发表了文章 2019-11-22

    test

正在加载, 请稍后...
滑动查看更多
  • 提交了问题 2020-01-06

    Js面向对象的几种方式?

  • 提交了问题 2020-01-06

    谈谈对html5的了解?

  • 提交了问题 2020-01-06

    编写一个方法去掉一个数组的重复元素?

  • 回答了问题 2020-01-06

    Js面向对象的几种方式?

    1.对象的字面量 var obj = {} 2.创建实例对象 var obj = new Object(); 3.构造函数模式 function fn(){} , new fn(); 4.工厂模式:用一个函数,通过传递参数返回对象。function fn(params){var obj =new Object();obj.params = params; return obj;},fn(params); 5.原型模式:function clock(hour){} fn.prototype.hour = 0; new clock(); 首先,每个函数都有一个prototype(原型)属性,这个指针指向的就是clock.prototype对象。而这个原型对象在默认的时候有一个属性constructor,指向clock,这个属性可读可写。而当我们在实例化一个对象的时候,实例newClock除了具有构造函数定义的属性和方法外(注意,只是构造函数中的),还有一个指向构造函数的原型的指针,ECMAScript管他叫[[prototype]],这样实例化对象的时候,原型对象的方法并没有在某个具体的实例中,因为原型没有被实例。
    踩0 评论0
  • 回答了问题 2020-01-06

    谈谈对html5的了解?

    1.良好的移动性,以移动设备为主。 2.响应式设计,以适应自动变化的屏幕尺寸 3.支持离线缓存技术,webStorage本地缓存 4.新增canvas,video,audio等新标签元素。新增特殊内容元素:article,footer,header,nav,section等,新增表单控件:calendar,date,time,email,url,search。 5.地理定位... 6.新增webSocket/webWork技术
    踩0 评论0
  • 回答了问题 2020-01-06

    编写一个方法去掉一个数组的重复元素?

    [...new Set(myArray )]
    踩0 评论0
  • 提交了问题 2020-01-02

    简述jpg,gif,png-8,png-24的区别,及其各自的使用场景?

  • 提交了问题 2020-01-02

    请写出至少20个HTML5标签?

  • 提交了问题 2020-01-02

    JavaScript实现一个链表?

  • 提交了问题 2020-01-02

    用JavaScript实现一个队列?

  • 提交了问题 2020-01-02

    用JavaScript实现一个栈结构?

  • 回答了问题 2020-01-02

    简述jpg,gif,png-8,png-24的区别,及其各自的使用场景?

    gif、jpg、png格式的图片在网站制作中的区别 Gif格式特点:   1.透明性,Gif是一种布尔透明类型,既它可以是全透明,也可以是全不透明,但是它并没有半透明(alpha透明)。   2.动画,Gif这种格式支持动画。   3.无损耗性,Gif是一种无损耗的图像格式,这也意味着你可以对gif图片做任何操作也不会使得图像质量产生损耗。   4.水平扫描,Gif是使用了一种叫作LZW的算法进行压缩的,当压缩gif的过程中,像素是由上到下水平压缩的,这也意味着同等条件下,横向的gif图片比竖向的gif图片更加小。例如50010的图片比10500的图片更加小   5.间隔渐进显示,Gif支持可选择性的间隔渐进显示   由以上特点看出只有256种颜色的gif图片不适合照片,但它适合对颜色要求不高的图形(比如说图标,图表等),它并不是最优的选择,我们会在后面中看到png是最优的选择。 Jpeg(jpg)格式特点:   1.透明性,它并不支持透明。   2.动画,它也不支持动画。   3.损耗性,除了一些比如说旋转(仅仅是90、180、270度旋转),裁切,从标准类型到先进类型,编辑图片的原数据之外,所有其它操作对jpeg图像的处理都会使得它的质量损失。所以我们在编辑过程一般用png作为过渡格式。   4.隔行渐进显示,它支持隔行渐进显示(但是ie浏览器并不支持这个属性,但是ie会在整个图像信息完全到达的时候显示)。   由上可以看出Jpeg是最适web上面的摄影图片和数字照相机中。 Png格式特点:   1.类型,Png这种图片格式包括了许多子类,但是在实践中大致可以分为256色的png和全色的png,你完成可以用256色的png代替gif,用全色的png代替jpeg   2.透明性,Png是完全支持alpha透明的(透明,半透明,不透明),尽管有两个怪异的现象在ie6(下面详细讨论)   3.动画,它不支持动画   PNG图片格式现在包含三种类型:   1.PNG8256色PNG的别名   2.PNG24全色PNG的别名   3.PNG32全色PNG的别名   基本上PNG32就是PNG24,但是附带了全alpha通道。就是说每个像素上不仅存储了24位真色彩信息还存储了8位的alpha通道信息,就如同GIF能存储透明和不透明信息一样。当我们把图片放到不太搭配的背景上的时候,透明PNG图片的边缘会显示得更加平滑。   当然,我也知道你的想法,“但是Photoshop也能生成带透明通道的PNG图片!”我也知道,它只是表面上这么说是PNG24,让我也产生困惑了。   作为一个伤感的Fireworks倡导者,我只使用PNG32支持附带alpha通道的真色彩图片。不管怎样,如果你习惯使Photoshop,你就应该知道,Photoshop在“存储为WEB格式”中只提供PNG8和PNG24两种PNG格式。   我敢肯定你经常会勾选“支持透明”选项,以获得带有透明度的PNG图片,但是这样你就获取了一张PNG32图片。——Photoshop只是觉得把PNG32这个名称给隐藏掉了。。。。 对png8的误解   Png8的在ie中的怪异表现:   半透明的png8在ie6以下的浏览器显示为全透明。   Alpha透明的全色PNG(png32)在ie6中会出现背景颜色(通常是灰色)。   由上面可以总结:   (a)全透明的png8可以在任一浏览器正常显示(就像gif一样)。半透明的png8在除了ie6及其以下的浏览器下错误的显示成全透明,其它浏览器都能正常显示半透明。这个bug并不需要特殊对待,因为在不支持半透明的浏览器下只是显示为全透明,对用户体验影响不大,它反而是透明gif的加强版。   (b)第二个bug没有什么好的方法解决,只能通过影响性能的方法AlphaImageLoader与需要加特殊标签(VML)。   因此得出结论就是:请使用PNG8。 Png8的软件问题:   Photoshop只能导出布尔透明的PNG8。   Fireworks既能导出布尔透明的PNG8,也能导出alpha透明的PNG8.
    踩0 评论0
  • 回答了问题 2020-01-02

    请写出至少20个HTML5标签?

    踩0 评论0
  • 回答了问题 2020-01-02

    JavaScript实现一个链表?

    概念 链表是一个线性结构,同时也是一个天然的递归结构。链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。 实现 单向链表 class Node { constructor(v, next) { this.value = v this.next = next } } class LinkList { constructor() { // 链表长度 this.size = 0 // 虚拟头部 this.dummyNode = new Node(null, null) } find(header, index, currentIndex) { if (index === currentIndex) return header return this.find(header.next, index, currentIndex + 1) } addNode(v, index) { this.checkIndex(index) // 当往链表末尾插入时,prev.next 为空 // 其他情况时,因为要插入节点,所以插入的节点 // 的 next 应该是 prev.next // 然后设置 prev.next 为插入的节点 let prev = this.find(this.dummyNode, index, 0) prev.next = new Node(v, prev.next) this.size++ return prev.next } insertNode(v, index) { return this.addNode(v, index) } addToFirst(v) { return this.addNode(v, 0) } addToLast(v) { return this.addNode(v, this.size) } removeNode(index, isLast) { this.checkIndex(index) index = isLast ? index - 1 : index let prev = this.find(this.dummyNode, index, 0) let node = prev.next prev.next = node.next node.next = null this.size-- return node } removeFirstNode() { return this.removeNode(0) } removeLastNode() { return this.removeNode(this.size, true) } checkIndex(index) { if (index this.size) throw Error('Index error') } getNode(index) { this.checkIndex(index) if (this.isEmpty()) return return this.find(this.dummyNode, index, 0).next } isEmpty() { return this.size === 0 } getSize() { return this.size } }
    踩0 评论0
  • 回答了问题 2020-01-02

    用JavaScript实现一个队列?

    概念 队列是一个线性结构,特点是在某一端添加数据,在另一端删除数据,遵循先进先出的原则。 实现 这里会讲解两种实现队列的方式,分别是单链队列和循环队列。 单链队列 class Queue { constructor() { this.queue = [] } enQueue(item) { this.queue.push(item) } deQueue() { return this.queue.shift() } getHeader() { return this.queue[0] } getLength() { return this.queue.length } isEmpty() { return this.getLength() === 0 } } 因为单链队列在出队操作的时候需要 O(n) 的时间复杂度,所以引入了循环队列。循环队列的出队操作平均是 O(1) 的时间复杂度。 循环队列 class SqQueue { constructor(length) { this.queue = new Array(length + 1) // 队头 this.first = 0 // 队尾 this.last = 0 // 当前队列大小 this.size = 0 } enQueue(item) { // 判断队尾 + 1 是否为队头 // 如果是就代表需要扩容数组 // % this.queue.length 是为了防止数组越界 if (this.first === (this.last + 1) % this.queue.length) { this.resize(this.getLength() * 2 + 1) } this.queue[this.last] = item this.size++ this.last = (this.last + 1) % this.queue.length } deQueue() { if (this.isEmpty()) { throw Error('Queue is empty') } let r = this.queue[this.first] this.queue[this.first] = null this.first = (this.first + 1) % this.queue.length this.size-- // 判断当前队列大小是否过小 // 为了保证不浪费空间,在队列空间等于总长度四分之一时 // 且不为 2 时缩小总长度为当前的一半 if (this.size === this.getLength() / 4 && this.getLength() / 2 !== 0) { this.resize(this.getLength() / 2) } return r } getHeader() { if (this.isEmpty()) { throw Error('Queue is empty') } return this.queue[this.first] } getLength() { return this.queue.length - 1 } isEmpty() { return this.first === this.last } resize(length) { let q = new Array(length) for (let i = 0; i
    踩0 评论0
  • 回答了问题 2020-01-02

    用JavaScript实现一个栈结构?

    每种数据结构都可以用很多种方式来实现,其实可以把栈看成是数组的一个子集,所以这里使用数组来实现 class Stack { constructor() { this.stack = [] } push(item) { this.stack.push(item) } pop() { this.stack.pop() } peek() { return this.stack[this.getCount() - 1] } getCount() { return this.stack.length } isEmpty() { return this.getCount() === 0 } }
    踩0 评论0
  • 提交了问题 2019-12-30

    JavaScript外观模式?

  • 提交了问题 2019-12-30

    JavaScript发布-订阅模式?

  • 提交了问题 2019-12-30

    JavaScript代理模式?

  • 提交了问题 2019-12-30

    JavaScript装饰模式?

正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息