gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1377
阅读:3062回复:4

『面试题』WEB前端常见面试题汇总:(一)程序题

楼主#
更多 发布于:2022-06-17 17:08
文章目录


gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1377
沙发#
发布于:2022-06-17 17:15


1.JS找字符串中出现最多的字符


例如:求字符串'nininihaoa'中出现次数最多字符
方法一:
var str = "nininihaoa";
    var o = {};
    for (var i = 0, length = str.length; i < length; i++) {
        var char = str.charAt(i);
        if (o[char]) {
            o[char]++;  //次数加1
        } else {
            o[char] = 1;    //若第一次出现,次数记为1
        }
    }
              console.log(o);   //输出的是完整的对象,记录着每一个字符及其出现的次数
    //遍历对象,找到出现次数最多的字符的次数
    var max = 0;
    for (var key in o) {
        if (max < o[key]) {
            max = o[key];   //max始终储存次数最大的那个
        }
    }


    for (var key in o) {
        if (o[key] == max) {
            //console.log(key);
            console.log("最多的字符是" + key);
            console.log("出现的次数是" + max);
        }
    }





结果如图所示:



方法二,当然还可以使用reduce方法来实现:

var arrString = 'abcdaabc';
arrString.split('').reduce(function(res, cur) {
    res[cur] ? res[cur] ++ : res[cur] = 1
    return res;
}, {})
gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1377
板凳#
发布于:2022-06-17 22:08

2.JS实现九九乘法表


var sum=0;
var wite;
for (var i = 1; i < 10; i++){
        var div=$('<div class="class'+i+'"></div>');
        $("body").append(div);
        for(var j = i; j > 0; j--){
                sum = j * i;
                wite = (j+"X"+i+"="+sum);
                div.prepend($('<span style="padding-right:10px">'+wite+'</span>'));
        }
        
}

css代码:


html,body,ul,li {
    padding: 0;
    margin: 0;
    border: 0;
}
ul {
    width: 900px;
    overflow: hidden;
    margin-top: 4px;
    font-size: 12px;
    line-height: 36px;
}
li {
    float: left;
    width: 90px;
    margin: 0 4px;
    display: inline-block;
    text-align: center;
    border: 1px solid #333;
    background:yellowgreen;
}

原生js实现方式:

for(var i = 1; i <= 9; i++){
    var myUl = document.createElement('ul');
    for(var j = 1; j <= i; j++){
        var myLi = document.createElement('li');
        var myText = document.createTextNode(j + " × " + i + " = " + i*j);
        myLi.appendChild(myText);
        myUl.appendChild(myLi);
    }
    document.getElementsByTagName('body')[0].appendChild(myUl);
}
gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1377
地板#
发布于:2022-06-17 22:41


3.前端面试:这几道前端面试题很绕吗?做对了几道?



var fun = function(){
    this.name = 'peter';
    return {
    name: 'jack'
    };
}


var p = new fun();
//请问p.name是:


每个函数都有返回值,如果使用了return语句,则返回return后跟的值,如果没有使用return,则默认返回undefined.
特别的,如果这个函数是构造函数,则默认返回this对象,如果构造函数内使用了return语句,并且return后跟的是一个对象,则这个构造函数返回的是这个对象,否则返回this.
所以1题中的p = {name: 'jack'}




第二题



var fun = function(){
    this.name = 'peter';


    return 'jack';    
 }


var p = new fun();
//请问p.name是:
答案:
2题中的p = {name: 'peter'}.




第三题


var fun = function(){}
fun.prototype = {    info : {    name : 'peter',    age : 25    }}
var a = new fun();var b = new fun();
a.info.name = 'jack';b.info.name = 'tom';
//请问a.info.name和b.info.name分别是:答案:
3.两个都输出tom。首先你要知道原型模式的执行流程:
1.先查找构造函数实例里的属性或方法,如果有,就立即返回。
2.如果构造函数的实例没有,就去它的原型对象里找,如果有,就立即返回




第四题


var fun = function(){
    this.info = {
    name : 'peter',
    age : 25
    }
}
var a = new fun();
var b = new fun();

a.info.name = 'jack';
b.info.name = 'tom';
//请问a.info.name和b.info.name分别是:

答案:

4 .a.info.namejackb.info.nametom。原因我想你从第三题已经得出来了。




第五题


var fun = function(){}

fun.prototype = {    
    name : 'peter',    
    age : 25    
}

var a = new fun();
var b = new fun();

a.name = 'jack';
b.name = 'tom';
//请问a.name和b.name分别是:
gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1377
4楼#
发布于:2022-06-17 22:41
游客


返回顶部