最近面试js部分试题总结

二,JavaScript面试题总结

1,首先是数组去重算法:给一个数组,去掉重复值

(function() {
        var arr = [1, 2, 3, 3, 4, ];

        function unique() {
            var result = [];
            var tem = {};
            for (var i = 0; i < arr.length; i++) {
                if (!tem[arr[i]]) {
                    result.push(arr[i]);
                    tem[arr[i]] = 1;
                }
            }
            return result;
        }
    })();

2,多维数组,至少3层的遍历,将数组整合一维数组,网上给出的方案

 //遍历多维数组
var arr = [1, 2, 3, [4, [5, [6]]]]; // arr.length                                          

Array.prototype.each = function(fn) {
    try {
        //1 目的: 遍历数组的每一项 //计数器 记录当前遍历的元素位置
        this.i || (this.i = 0); //var i = 0 ;
        //2 严谨的判断什么时候去走each核心方法
        // 当数组的长度大于0的时候 && 传递的参数必须为函数
        if (this.length > 0 && fn.constructor == Function) {
            // 循环遍历数组的每一项
            while (this.i < this.length) { //while循环的范围
                //获取数组的每一项
                var e = this[this.i];
                //如果当前元素获取到了 并且当前元素是一个数组
                if (e && e.constructor == Array) {
                    // 直接做递归操作
                    e.each(fn);
                } else {
                    //如果不是数组 (那就是一个单个元素)
                    // 这的目的就是为了把数组的当前元素传递给fn函数 并让函数执行
                    //fn.apply(e,[e]);
                    fn.call(e, e);
                }
                this.i++;
            }
            this.i = null; // 释放内存 垃圾回收机制回收变量
        }

    } catch (ex) {
        // do something
    }
    return this;
}

3,获得url查询参数方案

1)一个是用正则表达式方法

//获取url参数
function GetQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    //js match返回的是一数组
    var r = location.search.substr(1).match(reg);
    if (r != null) {
        return r[2];
    } else {
        return null;
    }

}

2)另外一种就是利用split结合数组遍历实现,这个比较容易实现就不贴代码了

4,正则表达式去掉空格

/**去掉字符串前后所有空格*/
function trim(str){
return str.replace(/(^\s*)|(\s*$)/g, "");
}

5,闭包的概念考察

6,原型继承如何实现,原型继承有两种方案

1)第一种是利用prototype

 var obj={name:‘seven‘};
      var a=function(){};
      a.prototype=obj;

      var  aa=new a();
      alert(aa.name);

2)第二种是利用apply或者call

function people(name,age){
            //属性
            this.name=name;
            this.age=age;
            //方法
            this.show=function(){
                console.log("my name is"+this.name+" and I am "+this.age+" years old");
            };
        }

        function student(name,age,school){
            people.apply(this,arguments);
            this.school=school;
            this.showYourself=function(){
                console.log("my name is"+this.name+" and I am "+this.age+" years old"+" my school is"+ this.school);
            };
        }

        var tom=new student(‘tom‘,‘19‘,‘xtu‘);
        tom.showYourself();

7,ES6常用知识点考察

JavaScript部分就到这。

时间: 2024-11-07 02:31:15

最近面试js部分试题总结的相关文章

2017、2018面试分享(js面试题记录)记得点赞分享哦;让更多的人看到~~

2017面试分享(js面试题记录) 1. 最简单的一道题 '11' * 2 'a8' * 3 var a = 2, b = 3; var c = a+++b; // c = 5 2. 一道this的问题 var num = 10; var obj = { num:8, inner: { num: 6, print: function () { console.log(this.num); } } } num = 888; obj.inner.print(); // 6 var fn = obj.

10个常见的Node.js面试题

如果你希望找一份有关Node.js的工作,但又不知道从哪里入手评测自己对Node.js的掌握程度. 本文就为你罗列了10个常见的Node.js面试题,分别考察了Node.js编程相关的几个主要方面. 在进入正文之前,需要提前声明两点: 这些问题只是Node.js知识体系的一个局部,并不能完全考察被面试者的实际开发能力. 对现实世界开发中遇到的问题,需要的是随机应变与团队合作,所以你可以尝试结对编程. Node.js面试题列表 什么是错误优先的回调函数? 如何避免回调地狱? 如何用Node来监听8

容易答错的JS笔试题

1,考察this var length = 10 function fn(){     alert(this.length) } var obj = {     length: 5,     method: function(fn) {         fn() // ?         arguments[0]() // ?     } } obj.method(fn) 这里的坑主要是arguments,我们知道取对象属于除了点操作符还可以用中括号,这里fn的scope是arguments,即

JS笔试题

1,考察this var length = 10function fn(){ alert(this.length)}var obj = { length: 5, method: function(fn) { fn() // ? arguments[0]() // ? }}obj.method(fn)这里的坑主要是arguments,我们知道取对象属于除了点操作符还可以用中括号,这里fn的scope是arguments,即fn内的this===arguments,调用时仅传了一个参数fn,因此le

最近面试前端面试题整理(css部分)

对最近面试的面试题坐下总结: 一,css部分 1,html元素的垂直居中 答案: <div id="box"> <div> 测试 </div> </div> #box{ width: 200px; height: 200px; text-align:center; vertical-align: middle; display: table-cell; } 2,css考的最多是flex: <!DOCTYPE html> <

前端js面试题

以下都是网上整理出来的JS面试题,答案仅供参考. /2,截取字符串abcdefg的efg//alert('abcdefg'.substring(4)); //3,判断一个字符串中出现次数最多的字符,统计这个次数/*var str = 'asdfssaaasasasasaa';var json = {}; for (var i = 0; i < str.length; i++) {        if(!json[str.charAt(i)]){                json[str.c

网上整理的JS面试题

以下都是网上整理出来的JS面试题,答案仅供参考. /2,截取字符串abcdefg的efg//alert('abcdefg'.substring(4)); //3,判断一个字符串中出现次数最多的字符,统计这个次数/*var str = 'asdfssaaasasasasaa';var json = {}; for (var i = 0; i < str.length; i++) {        if(!json[str.charAt(i)]){                json[str.c

一个简单的js面试题

在js群里看到有人发问,于是抱着练手的心态写了答了几个面试题,题目虽然不是太难,却很考验人的编程思维.汗颜,看了别人的答案后才发现自己好像笨了很多. 废话不说了 ,上代码. 1 要求 给一个数组的最后一个元素加1 结果大于10则给前一个元素加1 并设置当前元素值=0:前一个元素亦是如此,例如 var a=new Array(3,9); a[1]+1; a=[3,9]; 此题看似很简单,只要最后一个元素等于10 就给钱一个元素加1,设置当前元素为0就是了,但还有一种特殊一点的情况,就是当数组的所有

【前端芝士树】Vue.js面试题整理 / 知识点梳理

[前端芝士树] Vue.js 面试题整理 MVVM是什么? MVVM 是 Model-View-ViewModel 的缩写. Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑. View 代表UI 组件,它负责将数据模型转化成UI 展现出来. ViewModel 监听模型数据的改变和控制视图行为.处理用户交互,简单理解就是一个同步View 和 Model的对象,连接Model和View. 在MVVM架构下,View 和 Model 之间并没有直接的联系,而是通过ViewM