Skip to content

Latest commit

 

History

History
164 lines (140 loc) · 5.96 KB

试题自检.md

File metadata and controls

164 lines (140 loc) · 5.96 KB
  • 数组去重的方法有哪些?

  • 如何判断左右小括号是否全部匹配。如 ( ( ))()((((()))))

  • JS 的事件机制

  • 如何劫持 XMLHttpRequest 的 send() 方法,调用他的时候,把参数输出到控制台。

  • git 和svn 的区别,git 的本地仓库有什么用呢?

  • react 和 vue 的区别

  • 为什么简单的项目选择使用 jQuery 而不用 vue 。

  • 跨域解决方案有哪些?jsonp 的原理及缺点?及如何判断 JS 加载完成了?IE7不支持 script.onload 事件怎么办?

  • 浏览器的渲染机制?

  • 浏览器最大并发量限制是多少个?及如何去突破这个限制?

  • 缓存机制?

  • 内存泄漏,及如何主动的去发现是否存在内存泄漏?

  • 你们平时项目的 JS 异常有做上报处理吗?是什么实现的?

  • xss 攻击的原理和预防?

  • eslint 是怎么使用的?

  • webpac打包性能优化,如何分块打包,及 HMR 的实现原理。

  • React的虚拟dom是什么?及 diff 算法原理?

  • SSR(服务端渲染)的作用,及它有什么缺点???

  • HTTP和HTTPS的握手过程,是否了解HTTP2的特点,以及怎么理解它的多路复用

  • MVVW是什么,有什么优缺点

  • 怎么实现记住登录功能(很强的整体性)

  • 怎么实现统一登录,或者授权登录需要考虑什么(更强的整体性)

  • JS手写二分搜索算法

  • 用JS代码求出页面上一个元素的最终的background-color,不考虑IE浏览器,不考虑元素float情况。(window.getComputedStyle、当这个元素的背景色为透明时,它最终的背景色应该为其父元素的背景色。)

  • html和CSS绘制柱状图,用CSS和JS动画在刚才那个柱状图中表现出快排的整个过程

  • HTML5新特性(新增的标签, API等),如localstorage的用法以及与cookie的区别,如何理解web语义化

  • CSS3新特性,如动画等

  • CSS特性,如position的用法,如何实现居中,bootstrap源代码的理解,盒模型(W3C和IE),flex的使用

  • 前端兼容性处理(CSS hack技术)

  • JS基础,如this用法,new关键字的过程,call与apply的区别,闭包,原型以及JS如何实现继承

  • 前端基础,浏览器缓存,跨域,从输入url到渲染的整个过程,事件(W3C和IE),TCP三次握手过程,如何实现懒加载(跟预加载的区别)

  • 之前有看过你做的一个移动页简历,请问如何实现?我主要是使用REM+Media Query,根据不同尺寸的设备进行不同的font-size设置。然后问我REM和EM的区别,如果父元素的font-size也是采用em表示,那么子元素的font-size怎么计算等。

  • 有没有遇到过margin重叠的现象,如何解决?BFC

  • 常见的清除浮动的方法有哪些?bootstrap是怎么做的?bootstrap是怎么实现grid系统的?

  • 怎么理解JS模块化?有没有使用过webpack?

  • 什么是浅复制和深复制?有什么区别?如何实现Object的深复制?

  • Jquery的源代码怎么进行Object的深复制的

  • 数据类型判断(https://juejin.im/post/5b0554c86fb9a07acb3d3ddc)

  • set和map的区别

  • 浏览器解析javascript的词法是怎样的

框架

  • vue的虚拟dom优点(diff、渲染速度、同构)

webpack

阿里

  1. 是否能接受杭州工作
  2. 简单做下自我介绍
  3. es5继承和es6的继承有那些方式及区别
  4. js处理异步的所有方式以及优缺点
  5. 浏览器缓存机制及原理
  6. js事件循环机制
  7. 图片懒加载的方式及其原理
  8. 移动端的适配以及原理
  9. js为什么是单线程
  10. 什么是精灵图,优化原理
  11. http协议和三次握手,四次挥手
  12. 聊天websocket 长链接等 原理
  13. 什么是防抖和截流,及区别,应用场景
  14. vue和react的区别
  15. 什么是微前端及其优缺点?
  16. 前端代码规范 以及eslint相关配置?
  17. 你以前的项目有什么缺点?改如何优化?
  18. 怎么处理同事之间的矛盾?

头条

  • LRU cache 描述信息 实现一个LRU过期算法的KV cache, 所有KV过期间隔相同, 满足如下性质: 1. 最多存储n对KV; 2. 如果大于n个, 则随意剔除一个已经过期的KV; 3. 如果没有过期的KV, 则按照LRU的规则剔除一个KV; 4. 查询时如果已经过期, 则返回空;

  • 实现一个类,可以监听对象属性的值变化。加分项:考虑对象存在值为数组或对象的属性。

class Observe {
        constructor(data: Object) {

        }
        // 监听属性变更
          $on() {

        }
        // 触发属性变更事件
          $emit() {
        }
    }
    const data = new Observer({a: 1});
        
      
    coonsole.log(data.a) // console: 1
      data.$on('a', (newValue, oldValue) => {
        // this === data
          console.log(newValue, oldValue);
    });
    data.a = 2 // console: 2 1
  • 实现一个 GodMan, 要求如下 GodMan("jack") 输出: I am jack

GodMan("jack").rest(10).learn("computer") 输出 I am jack //等待10秒 Start learning after 10 seconds Learning computer

GodMan("jack").restFirst(5).learn("chinese").rest(5).learn('english') 输出 //等待5秒 Start learning after 5 seconds I am jack Learning chinese //等待5秒 Start learning after 5 seconds Learning english

console.log('begin');
setTimeout(() => {
    console.log('setTimeout 1');
    Promise.resolve().then(() => {
        console.log('promise 1');
        setTimeout(() => {
            console.log('setTimeout2 between promise1&2');
        })
    }).then(() => {
        console.log('promise 2');
    });
}, 0); console.log('end');

动手题

function sum(...args){
  function currySum(...rest){
    args.push(...rest)
    return currySum
  }
  currySum.toString= function(){ 
    return args.reduce((result,cur)=>{
      return result + cur
    })
  }
  currySum.toNumber= function(){ 
    return args.reduce((result,cur)=>{
      return result + cur
    })
  }
  return currySum
}