前端问答_个人页

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

个人介绍

前端问答小助手

擅长的技术

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

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

阿里云技能认证

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

    如何实现跨域?了解预检请求嘛?

  • 提交了问题 2019-12-12

    什么是浏览器同源策略?

  • 提交了问题 2019-12-12

    前端如何实现即时通讯?

  • 提交了问题 2019-12-12

    如何避免重绘或者重排?

  • 提交了问题 2019-12-12

    如何触发重排和重绘?

  • 提交了问题 2019-12-12

    浏览器重绘与重排的区别?

  • 提交了问题 2019-12-12

    DOM Tree是如何构建的?

  • 提交了问题 2019-12-12

    浏览器如何解析css选择器?

  • 提交了问题 2019-12-12

    浏览器是如何渲染UI的?

  • 提交了问题 2019-12-12

    浏览器的主要组成部分是什么?

  • 提交了问题 2019-12-12

    常⻅的浏览器内核有哪些?

  • 提交了问题 2019-12-11

    什么是事件委托?

  • 提交了问题 2019-12-11

    DOM的事件流是什么?事件的触发过程是怎么样的?

  • 提交了问题 2019-12-11

    DOM的事件模型是什么?

  • 提交了问题 2019-12-11

    讲⼀下四次握⼿?✨

  • 提交了问题 2019-12-11

    讲⼀下三次握⼿?✨

  • 提交了问题 2019-12-11

    说⼀说OSI七层模型?

  • 提交了问题 2019-12-10

    常⽤端⼝号与对应的服务?

  • 提交了问题 2019-12-10

    如何理解 TCP backlog?

  • 提交了问题 2019-12-10

    为什么udp不会粘包?

  • 提交了问题 2019-12-10

    TCP粘包是怎么回事,如何处理? ✨

  • 提交了问题 2019-12-10

    请简述TCP\UDP的区别?

  • 提交了问题 2019-12-10

    TCP的认识?TCP 的特性?

  • 提交了问题 2019-12-10

    什么时候会触发强缓存或者协商缓存?

  • 提交了问题 2019-12-10

    HTTP的缓存的过程是怎样的?

  • 提交了问题 2019-12-10

    HTTP2相对于HTTP1.x有什么优势和特点?

  • 提交了问题 2019-12-09

    HTTPS是如何保证安全的?

  • 提交了问题 2019-12-09

    为什么有了HTTP为什么还要HTTPS?

  • 提交了问题 2019-12-09

    HTTP的keep-alive是⼲什么的?

  • 提交了问题 2019-12-09

    同样是重定向307,303,302的区别?

  • 提交了问题 2019-12-09

    聊⼀聊HTTP的状态码有哪些?

  • 提交了问题 2019-12-09

    聊⼀聊HTTP的部首有哪些?

  • 提交了问题 2019-12-08

    http的响应报⽂是什么样的?

  • 提交了问题 2019-12-08

    http的请求报⽂是什么样的?

  • 提交了问题 2019-12-08

    PUT和PATCH都是给服务器发送修改资源,有什么区别?

  • 提交了问题 2019-12-08

    PUT和POST都是给服务器发送新增资源,有什么区别?

  • 提交了问题 2019-12-08

    GET和POST有什么区别?

  • 提交了问题 2019-12-08

    HTTP有哪些方法?这些⽅法的具体作用是什么?

  • 提交了问题 2019-12-01

    redux异步中间件之间的优劣?

  • 提交了问题 2019-12-01

    redux中如何进⾏异步操作?

  • 提交了问题 2019-12-01

    redux与mobx的区别?

  • 提交了问题 2019-12-01

    react-redux是如何⼯作的?

  • 提交了问题 2019-12-01

    redux的⼯作流程?

  • 提交了问题 2019-12-01

    你对 Time Slice的理解?

  • 提交了问题 2019-12-01

    你是如何理解fiber的?

  • 提交了问题 2019-12-01

    mixin、hoc、render props、react-hooks的优劣如何?

  • 提交了问题 2019-12-01

    React如何进⾏组件/逻辑复⽤?

  • 提交了问题 2019-12-01

    React有哪些优化性能的⼿段?

  • 提交了问题 2019-12-01

    React组件通信如何实现?

  • 提交了问题 2019-12-01

    setState到底是异步还是同步?

暂无更多信息
  • 发表了文章 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装饰模式?

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