美文网首页张蕾的技术博客
面试阿里、网易、滴滴前端碰到的问题3

面试阿里、网易、滴滴前端碰到的问题3

作者: cd72c1240b33 | 来源:发表于2017-06-12 18:13 被阅读299次

    继续阿里网易面试题1和2
    面试阿里、网易、滴滴前端碰到的问题1: http://www.jianshu.com/p/e593fbb36ab1
    面试阿里、网易、滴滴前端碰到的问题2: http://www.jianshu.com/p/eecb6737edc9

    js部分

    实现拖拽功能

    • 如果是我的学生,我建议用es6+面向对象+订阅发布来实现一个完整的拖拽产品
    • 上课内容,这里不我赘述

    动画:setTimeout何时执行,requestAnimationFrame的优点

    手写parseInt的实现:要求简单一些,把字符串型的数字转化为真正的数字即可,但不能使用JS原生的字符串转数字的API,比如Number()

    • 我觉得这道题考察大家的基本功,你们觉得呢?
    //这是我封装的函数,仅供参考
    function aa(n) {
            //因为下面用正则对字符串进行处理,所以,我们必须保证n是字符串
            n=n.toString();
            var reg=/^(\d+)(\.\d+)?(.*)?$/g;
            n=n.replace(reg,($1,$2)=>{
                console.log(typeof $2)
                return $2;
            });
            return +n;
        }
    

    编写分页器组件的时候,为了减少服务端查询次数,点击“下一页”怎样能确

    保还有数据可以加载(请求数据不会为空)?
    无论前端做分页还是后台做分页,我们都能拿到数据总量,根据数据总量和当前页显示的条数,求出分页总数count,所以,点击下一页,主要看页码是否超出总数count,如果超出,则不能再有点击事件,因为数据已经为空;

    ES6新增了哪些特性,使用过哪些,也有当场看代码说输出结果的

    参考以前写过的答案http://www.jianshu.com/p/536f24c6df19

    JS模块化的实践

    我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块;

    • 单例模式开发: 可以把模块写成一个对象,所有的模块成员都放到这个对象里面。进行模块化开发最简单的方式
    • 立即执行函数+单例模式的写法
    var utils=(function(){
        return {
            mod1:()=>{.....},
            mod2:()=>{.....}
        }
    })();
    
    • Javascript模块规范共有两种:CommonJSAMD
      commonJS规范:主要适用服务器端,通过exports导出,通过require导入;
      AMD规范:主要有两个js库,requirejs和sea.js
      如果require你不熟悉,参考地址http://www.jianshu.com/p/ba996cacb447

    相关文章

      网友评论

        本文标题:面试阿里、网易、滴滴前端碰到的问题3

        本文链接:https://www.haomeiwen.com/subject/vxdlqxtx.html