2021前端最常见的面试题---持续更新中

Javascript+jQuery+ajax(js全阶段面试题)

1. js的数据类型(难度:★)

` Number ` `String` `Boolean` `Undefind`  `Null` `Object` `Symbol`

2. 如何判断变量的数据类型,有几种方法(难度:★)

  console.log(typeof "John" );             // 返回 string
  console.log(typeof 3.14  )                // 返回 number
  console.log(typeof undefined )            // 返回 undefined
  console.log(typeof null)                // 返回 object
  console.log(typeof false )              // 返回 boolean
  console.log(typeof [1,2,3,4]   )          // 返回 object
  console.log(typeof {name:'John', age:34}) // 返回 object

至于为什么null会返回Object可以看一下 博文为什么typeof null 会返回object

3. 关于js中的Dom,说一下你的理解(难度:★)

  • 标题面试回复第一段就差不多了吧??
    DOM是网页中用来表示文档中对象的标准模型,通过JavaScript可以对网页中的所有DOM对象进行操作,是由万维网联盟W3C组织制定的标准编程接口。文档对象模型(Document Object Mobel,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口。在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示文档中对象的标准模型就称为DOM.
    浏览器首先将收到的html代码,通过html解析器解析构建为一颗DOM树。数据结构中有许多的树。
    而DOM树就像是一颗倒长着的大树,这样的对象模型决定了节点之间都有一定的关联它们关系可能有父子、有兄弟,我们可以顺着这颗树做出许多操作。
    接着将接收到的css代码,通过css解析器构建出样式表规则将这些规则分别放到对应的DOM树节点上,得到一颗带有样式属性的DOM树。
  • DOM:Document Object Model(文本对象模型)
    D:文档-html文档或xml文档
    O:对象-document对象的属性和方法
    M:模型

4. 数组中常用的一些方法(难度:★)

一共有二十二中,这里只是简单说明有哪些数组方法
具体用法请看此处 22种数组方法的使用及演示

  • 简单数组方法
    push pop shift unshift slice splice toString join sort reverse indexOf lastIndexOf includes
  • 复杂数组方法
    forEach filter map sort的复杂使用 find findIndex every some

5. 数组去重的几种方法(难度:★★★)

[JavaScript数组去重(12种方法,史上最全)](https://blog.csdn.net/weixin_55195734/article/details/119001495)

6. 请说出下面代码的执行结果,解释一下(难度:★★★)

可以自己复制一下,到浏览器运行一下,很简单的!!
js function foo() { var i = 0 return function(){ console.log(i++) } } var f1 = foo() var f2 = foo() f1(), f1(), f2() // 下面这个比较难 能力好的可以讲解一下 知识点还是浏览器的执行机制 console.log (1) setTimeout(function(){ console.log(2) },0) new Promise((resolve)=>{ console.log(3) resolve() }).then(function(){ console.log(4) }).then(function(){ console.log(5) }) console.log(6)

7. 手写冒泡排序(难度:★★)

  var list = [1, 44, 2165, 132, 1, 2, 5, 4, 4, 94, 8]
        for (var i = 0; i < list.length; i++) {
            for (var l = i + 1; l < list.length; l++) {
                var ls = ''
                if (list[i] > list[l]) {
                    js++
                    ls = list[i]
                    list[i] = list[l]
                    list[l] = ls
                }
            }
        }
        console.log(list);

8. 说几条JavaScript的基本规范(难度:★)

1.不要在同一行声明多个变量。

2.请使用 ===/!==来比较true/false或者数值

3.使用对象字面量替代new Array这种形 式

4.不要使用全局函数。

5.Switch语句必须带有default分支

6.函数不应该有时候有返回值,有时候没有返回值。

7.For循环必须使用大括号

8.If语句必须使用大括号

9.for-in循环中的变量 应该使用var关键字明确限定作用域,从而 避免作用域污染。

10.命名规则中构造器函数首字母大写,如function Person(){}

11.写注释。
  1. js中 0.1 + 0.2 为什么不等于0.3?怎么才能等于0.3?(难度:★★)
    在JavaScript中的二进制的浮点数0.1和0.2并不是十分精确,在他们相加的结果并非正好等于0.3
    解决办法:0.1+0.2 => (0.110+0.210)/10 最简单的方法

  2. undefined和null有什么区别(难度:★★)
  3. js中的 == 和 === 有什么区别(难度:★)

  4. 举例3种强制类型转换和2种隐式类型的转换(难度:★★)

  5. split( ) 和 join( )的区别(难度:★★)

  6. 如何组织事件冒泡事件(难度:★★)

  7. 获取dom节点的方法,知道几种说几种(难度:★)

  8. 关于this指向的问题(难度:★★★)

  9. JavaScript中添加 删除 替换 插入到某个节点的方法?

  10. $(document).ready() 是个什么函数?为什么要用它?
  11. 什么是闭包函数,关于闭包的一些使用场景,有什么缺点(难度:★★)

  12. 请写出这道题的答案并解释(难度:★★)

    var x,y =1
    x + y = ???
    
  13. 说一下什么是内存泄露?(难度:★★)

  14. 说一下对原型链的理解(难度:★★)

  15. js的设计模式,你知道哪几种,详细说一下(难度:★★)

  16. 数组遍历的方法 for ,foreach ,for in ,for of的使用和区别(难度:★★)还有map方法

  17. 给定的代码中存在全局变量,请修复(难度:★★)

    function globals() {
        myObject = {
          name : 'Jory'
        };
    
        return myObject;
    }
    //在js中,没有使用关键字声明的变量,该变量会成为全局变量,解决该问题就是在变量前面加var/let关键字
    function globals() {
        var myObject = {
          name : 'Jory'
        };
    
        return myObject;
    } 
    
  18. 简述同步和异步的区别(难度:★★)

  19. event loop浏览器代码执行机制(难度:★★★)

    // 说一下以下代码的执行结果么,解释一下
    const promise = new Promise((resolve, reject) => {
      console.log(1)
      resolve()
      console.log(2)
    })
    promise.then(() => {
      console.log(3)
    })
    console.log(4)
    // 
    
  20. 手写一个深拷贝,或者说一下思路 知道几种方法说几种(难度:★★★)

  21. Localstorage sessionstorage,cookie的区别(难度:★★★

  22. js中实现继承的方法,说一下这几种方法的区别(难度:★★)

  23. new操作符都做了些什么(难度:★★)

  24. 说一下对promise的理解(难度:★★★★)

  25. Es6新增的属性(难度:★★)

  26. 说一下什么是节流和防抖(难度:★★)

  27. const的值可以改变吗(难度:★★)

  28. var let const三个的区别(难度:★)

  29. 对箭头函数的理解(难度:★★)

  30. 去除字符串中首尾的空格(难度:★★)

  31. async和await具体该怎么用(难度:★★)

  32. get请求和post请求的区别(难度:★)

  33. 什么是ajax?ajax的作用是什么?(难度:★)

  34. 原生的ajax请求有几个步骤(难度:★)

  35. ajax的get请求和post请求的区别(难度:★)

  36. 什么情况下会造成跨域,怎么去解决跨域(难度:★★★)

  37. http常见的状态码有哪些?(难度:★)

  38. git常用的命令有哪些(难度:★)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值