• 前端需要记住的一些基础问题


    最近在面试,一些公司会有笔试题,有些自己确实做的不好,所以把它记录下来,巩固复习。

    部分没有完善,抽时间回来补充

    怎样实现a对象可以调用b对象的方法?

             考的是继承,b要有a的方法,继承有3种

    function classA(name) {
      this.name = name;
      this.showName = function() {
        alert(this.name);
      }
    }

    function classB(name) {
      classA.call(this, name);
    }

    var oB = new classB("Black Cat");
    oB.showName(); // Black Cat

    h5有哪些新标签

             header, nav, section, article, aside, footer, details, summary

    header

    定义文档或节的页眉

    nav

    定义导航链接的容器

    section

    定义文档中的节

    article

    定义独立的自包含文章

    aside

    定义内容之外的内容(比如侧栏)

    footer

    定义文档或节的页脚

    details

    定义额外的细节

    summary

    定义 details 元素的标题

    <!DOCTYPE> 的作用

    定义文档的类型,让浏览器正确地显示文档(html5: <!DOCTYPE html>)

    表单元素

    Input, textarea, option, select , button  (html5新增:datalist, keygen, output)

    Html5新增的input输入类型

    • color
    • date
    • datetime
    • datetime-local
    • email
    • month
    • number
    • range
    • search
    • tel
    • time
    • url
    • week

    html5新特性

    • 新的语义元素,比如 <header>, <footer>, <article>, and <section>。
    • 新的表单控件,比如数字、日期、时间、日历和滑块。
    • 强大的图像支持(借由 <canvas> 和 <svg>)
    • 强大的多媒体支持(借由 <video> 和 <audio>)
    • 强大的新 API,比如用webstorage(本地存储) 取代 cookie。

     

    数组去重的实现

    方法一:用是indexOf方法:

    var arr = [1, 2, 3, 4, 4, 1, 21, 3, 12, 3, 4, 5324, 234, 3, 2, 1, 3]

    function unique(res) {

        var result = [];

        for (var i = 0; i < res.length; i++) {

            if (result.indexOf(res[i]) == -1) {

                result.push(res[i])

            }

        }

        return result;

    }

    console.log(unique(arr));

    方法二:

    var arr2 = [1,2,4,5,3,2,1,3,4,2,4,5,4,234];

    var o = {};

    var resultArr = [];

    for(var i=0;i<arr2.length;i++){

        if(!o[arr2[i]]){

            resultArr.push(arr2[i]);

            o[arr2[i]] = 2

        }

    }

    console.log(resultArr)

    js实现clone方法,对5中数据类型进行复制

     

    function clone(obj) {

        var o;

        if (typeof obj == "object") {

            if (obj === null) {

                o = null;

            } else {

                if (obj instanceof Array) {

                    o = [];

                    for (var i = 0, len = obj.length; i < len; i++) {

                        o.push(clone(obj[i]));

                    }

                } else {

                    o = {};

                    for (var j in obj) {

                        o[j] = clone(obj[j]);

                    }

                }

            }

        } else {

            o = obj;

        }

        return o;

    }

     

    说说对gulp的了解

             记住5个API

             gulp.tesk()        // 定义任务

             gulp.src()          // 获取流(虚拟的文件对象流),有路径,文件名,内容等信息

             gulp.dest()        // 输出文件(写文件)

             gulp.watch()    // 监听文件变化

             gulp.run()          // 用来执行任务

             // pipe() 管道

     

    Git版本管理的常用命令

             回头来整理他们各自的作用

             git add .

             git checkout xxx

             git commit –m xxx

             git push origin master

             git pull origin master

             git branch

             git checkout –b xxx / git checkout xxx

             git merge xxx

     

    360金融笔试题

       写在前面:有些题目自己还觉得是面试官出的题目有问题呢,实际上并不是,只是都有他的目的。

    1.随便列举4个或多个BOM对象

      1、window对象 ,是JS的最顶层对象,其他的BOM对象都是window对象的属性;

      2、document对象,文档对象;

      3、location对象,浏览器当前URL信息;

      4、navigator对象,浏览器本身信息;

      5、screen对象,客户端屏幕信息;

      6、history对象,浏览器访问历史信息;

    2.img元素的alttitle的异同

          alt属性和title属性的区别是前者是在图片无法加载的时候才会显示的其值,而title是在图片正常加载鼠标划上去显示的值,虽然alt也有后者的功能,但是只是在低版本的ie浏览器才支持,高版本及标准浏览器不支持这个 功能了。

    3.Javascript有哪几种数据类型

             基本类型:String  Number  Boolean  Null  undefined

             引用类型:Object

    4.下面这段的执行结果

        <script>

            var a = 1,b = 0;

            <!--

            b = 2;

             -->

             if(a<b) alert('a is smaller');

             else slert('b is smaller')

        </script>

             结果:弹出a is smaller

    5.说出下面脚本的执行结果,并说明原因

             var a;

      if(a == undefined) alert('undefined');

      if(a == null) alert('null')

      结果:先弹出 undefined。关闭后再弹出 null。原因:这里“==”会强制类型转换,a声明了,但未定义,所以a是undefined, 而undefined == null也返回true,所以两个alert都会执行

    6.下面脚本的执行结果:

    考的是进制的问题,这块自己需要去加强

    var x = 011, y= 0x10, z= 1.2e2;

    alert(x+y+z)

      结果:145    (9+16+120)

    7.下面脚本的执行结果:

    var a=1,b=2;

    function c(){

        alert('c1')

    }

    function test(){

        alert(a);

        alert(b);

        c();

        function b(){

            return 0

        }

        var a=5,b=6;

        function c(){

            alert('c2')

        }

    }

    test();

    弹出undefined

    弹出:function b(){

            return 0

        }

    弹出:c2

     8.      下方脚本能正确alert2吗?如果不行,怎么解决?

    for (var i = 0, l = 10, obj = []; i <= l; i++) {

        obj[i] = function() {

            alert(i);

        }

    }

    obj[2]()

    结果:不能,alert的是11,解决方案是利用闭包

    for (var i = 0, l = 10, obj = []; i <= l; i++) {

        (function(i) {

            obj[i] = function() {

                alert(i);

            }

        })(i)

    }

    obj[2]()

    9.    说出下方脚本的执行结果

    var array = [1,2];

    deal(array, array);

    function deal(arrA, arrB){

        arrA = [3,4];

        console.log(array[1]);   // 2

        arrB[1] = 9;           // arrB[1] = 9, arrB为[1,9]  arrB是array引用,array为[1,9]

        console.log(array[1]);   // 9

    }

    结果:// 2     // 9

  • 相关阅读:
    将博客搬至CSDN
    NOIP2018酱油记
    CF 1039D You Are Given a Tree && CF1059E Split the Tree 的贪心解法
    最大异或子序列问题
    UVa 10615
    UVa 1057
    用树状数组代替平衡树
    [CTSC2008]图腾totem
    POI2008 题解
    简便思路的题目别人的做法
  • 原文地址:https://www.cnblogs.com/yu-709213564/p/7895425.html
Copyright © 2020-2023  润新知