Javascript面试题

    科技2022-07-12  109

    JavaScript面试题

    2.js的基本数据类型?

    Number Object string null undifend function symbol

    已知DOM节点,怎么获得其父节点

    parentNode $("#test1").parent()

    7.闭包是什么 应用场景 常驻内存如何释放。

    全局变量污染的问题解决了 内部函数调用外部函数的参数 页面解构的时候执行

    8.promise.all是用来干啥的

    promise.all 主要是等所有的接口都调完,再进行下一步操作

    9.var let const 区别

    1、let关键字,用来代替 var的关键字,特点: 1、变量不允许被重复定义 2、不会进行变量声明提升 3、保留块级作用域中i的

    2、const定义常量,特点:1、常量值不允许被改变 2、不会进行变量声明提升

    3、var 可以声明提升 提升至作用区顶端 变量允许被重复定义

    10.关于继承的问题(这个题很长忘记了 ,反正他给我说要在开始加上super)

    super es6继承属性

    class Worker extends Person。es6继承方法

    *//*继承属性 我们们使用构造函数去实现类的存在。

    Person.call(this, name, sex);

    *//*继承方法

    Object.create(Person.prototype);

    2.你用到的遍历的方法都有哪些?

    Forin for while for each https://blog.csdn.net/weixin_46419373/article/details/107007546

    4 . ES6 新增数组方法

    reduce some every filter map forEach

    6 . jqery 使用过吗?

    使用过

    7 . 用jqery 实现过什么效果 及步骤

    拖拽,轮播图

    8 . 使用过什么ui组件库

    sui mui vant mint

    10 . 跨域请求有多少种方法 项目中如何使用

    1、JSONP跨域

    2、cors Access-Control-Allow-Origin 是由后台去操作

    3、反向代理/正向代理

    https://www.cnblogs.com/gitnull/p/9817405.html

    11 . Jsonp 在项目中使用场景 方法

    解决跨越请求。通过src属性来支持

    12 . 用过svn吗 用过

    window的软件,和github一样

    13 . 项目从需求到测试上线 过程

    20 . 函数和方法区别

    函数和方法是一段代码,通过名方法字来进行调用,但跟一个对象相关联。方法和函数大致上是相同的,但有两个主要的不同之处:

    方法中的数据是隐式传递的;方法可以操作类内部的数据(请记住,对象是类的实例化–类定义了一个数据类型,而对象是该数据类型的一个实例化)

    13.用es6语法查找数组中的某一项

    find indexOf

    14.深拷贝,浅拷贝

    Object.assgin

    不管在对象或者数组中嵌套多少层,如果只拷贝地址,不拷贝数据。叫做浅拷贝。

    ​ 不管在对象或者数组中嵌套多少层,直接生成新数据拷贝数据。叫做深拷贝。

    15.js对象拷贝

    Object.assgin

    11.简述观察者模式

    5.let,var,const区别

    Let变量声明 1 不允许变量名重复声明 2 没有声明提升 3只在声明所在的块级作用域内有效 4在声明前无法使用

    Const常量声明。1 声明必须赋值。2 赋值不允许更改 3只在声明所在的块级作用域内有效。

    Var 声明变量 1 允许重复声明 2 作用域提升 3 var定义的变量是全局变量或者函数变量 4声明之前回报undefeated

    6.ES6之前的继承方式

    ​ 但是在ES6之前没有类 我们使用构造函数去实现类的存在。

    ​ 继承属性。。通过call

    ​ 继承方法通过 Object。created

    7.ES6里面有有没有类的概念

    有 class类

    7.为什么要跨域?

    当前端请求服务器后台数据时候由于浏览器有安全沙箱 会进行跨越拦截 导致请求失败

    同源策略: *1*、同协议 *2*、同域名*/*主机 *3*、同端口号

    8.怎么解决跨域?

    Jsonp

    后端代理

    cors

    9.JSONP的缺点?

    2.1它只支持GET请求而不支持POST等其它类型的HTTP请求

    ​ 2.2它只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间如何进行JavaScript调用的问题。

    ​ 2.3 jsonp在调用失败的时候不会返回各种HTTP状态码

    ​ 2.4缺点是安全性。万一假如提供jsonp的服务存在页面注入漏洞,即它返回的javascript的内容被人控制的。那么结果是什么?所有调用这个 jsonp的网站都会存在漏洞。于是无法把危险控制在一个域名下…所以在使 用jsonp的时候必须要保证使用的jsonp服务必须是安全可信的。

    es6新增

    https://blog.csdn.net/wsymcxy/article/details/82913756

    原型链

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mZ4K8aiH-1601726919346)(/Users/momo/Desktop/三阶段资料/原生js面试题/img/截屏2020-10-01 下午8.39.32.png)]

    bind call apply区别

    1 bind会产生新的函数

    2call和apply传参不同

    箭头函数

    *function()中this是指向调用这个函数的对象

    箭头函数中,本身没有this借用函数外部代码块的thisarguments,不能使用 由于this在箭头函数中已经按照词法作用域绑定了,所以,用call()或者apply()调用箭头函数时,无法对this进行绑定,即传入的第一个参数被忽略

    for of循环

    for of可以循环数组,但是不能循环json,因为它是为了与map配合使用

    1.手写数组去重

    var a = [1,2,3,5,65,65,6,56,5,65,6,56,5,3,2,3,2,32,3,2,32,3,23,2,3] for(var i = 0; i < a.length; i++){ for(var k = 1 + i; k < a.length; k++){ if(a[i] == a[k]){ a.splice(k,1) k-- } } } console.log(a)

    2.手写一个生成10到100随机数 并排序

    var a = [] for (var i = 10; i <= 100; i++) { var d = parseInt(Math.random() * 100) a.push(d) a.sort() } console.log(a)

    cookies和localstorage及sessionstorage的区别

    谈谈对json的看法

    1- 每个数据,必须对应一个 key 2- 只能使用双引号 3-key 必须是双引号包裹 " "

    JSON对象是 javascript 的原生对象,用来处理JSON格式数据,有两个方法:

    JSON.parse(string):接受一个 JSON字符串 将期转化为 javascript 对象JSON.stringify(obj): 接受一个 javascript 对象 转化为一个 JSON字符串

    JSON 的标准写法:   只能用双引号   所有的key都必须用双引号包起来

    说一些数组有哪些方法

    Push unshift shift pop concat splice map filter join slice

    三个点用来干什么的

    展开运算符

    8.深拷贝与浅拷贝区别,通过什么方式拷贝

    Object.assign

    ​ 不管在对象或者数组中嵌套多少层,如果只拷贝地址,不拷贝数据。叫做浅拷贝。

    ​ 不管在对象或者数组中嵌套多少层,直接生成新数据拷贝数据。叫做深拷贝。

    12.创建对象有哪几种方式 函数

    第一种(函数声明): 第二种(函数表达式):匿名函数:第三种(构造函数):

    https://www.jb51.net/article/107012.htm

    代码管理git

    git是一种分布式的版本管理系统,Linux的创造者Linus写的。

    GitHub是基于git的代码库托管站,也算是程序员的SMS(以码会友),其中一个主要的开源代码发布或托管站

    ES6新增特性

    1、let关键字,用来代替 var的关键字,特点: 1、变量不允许被重复定义 2、不会进行变量声明提升 3、保留块级作用域中i的

    2、const定义常量,特点:1、常量值不允许被改变 2、不会进行变量声明提升

    3、箭头函数

    与普通函数的区别:1、书写上用=>代替了function

    2、普通函数的this指向window 而ES6箭头函数里面的this指向定义时的那个对象 而不是运行时的那个对象

    4、字符串模板``

    5、ES6中字符串和数组新增了那些方法

    ​ 字符串

    ​ 1、字符串模板

    ​ 2、includes

    ​ 3、startswith

    ​ 4、endsWith 等

    ​ 数组

    ​ 1、Array.of //将一组数值转化为数组

    ​ 2、Array.from 等

    ​ 将伪数组转为数组: var list = Array.from(document.getElementsByTagName("li”));、

    6、第七种数据类型Symbol

    7、ES6中set集合和Map集合

    set:

    set是ES6提供的一种新的数据结构,类似于数组,但是成员的值是唯一的没有重复的,接受的参数是一个数组方法有:

    add():添加

    delete():删除

    size:长度

    has():查找

    clear:清除所有

    map:

    map类似于对象,也是键值对的集合, 但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键方法有:

    set():设置

    get():获取

    delete():删除

    has():查找

    clear():清除所有

    8、Promise规范

    1、什么是promise?

    异步操作的同步代码

    2、promise的基本使用

    通过new promise创建一个promise对象,里面有一个参数,参数是一个回调函数,回调函数中有2个参数,resolve,reject resolve()当

    异步执行成功的时候调用的方法,reject()当异步失败的时候调用的方法。

    除此之外promise有一个then方法,当成功的时候执行第一个回调函数,当失败的时候执行第二个回调函数。第二个回调函数也可以通过

    promise对象.catch调用

    3、Promise.all():当所有的异步代码都执行完毕以后才会执行.then中的操作

    4、Promise.race():只要有一个promise执行完毕后就会执行.then操作

    5、如何实现多个异步同步执行

    var p1 = new Promise(function(resolve,reject){

    setTimeout(function(){

    console.log(‘1’);

    resolve()

    },3000)

    })

    function p2(){

    return new Promise(function(resolve,reject){

    setTimeout(function(){

    console.log(“2”);

    resolve();

    },2000)

    })

    }

    function p3(){

    return new Promise(function(resolve,reject){

    setTimeout(function(){

    console.log(“3”);

    resolve();

    },1000)

    })

    }

    function p4(){

    return new Promise(function(resolve,reject){

    setTimeout(function(){

    console.log(“4”);

    resolve();

    },500)

    })

    }

    p1.then(function(){

    return p2()

    })

    .then(function(){

    return p3();

    })

    .then(function(){

    return p4();

    })

    9、类的支持

    数组去重

    什么是事件冒泡,在哪儿用,怎么阻止

    cancelBubble=true

    ​ stopPropagation()

    回调函数在哪儿用

    一**.** 回调函数的作用

    js代码会至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作,这时候就需要用到回调函数。

    二**.** 回调函数的解释

    因为函数实际上是一种对象,它可以存储在变量中,通过参数传递给另一个函数,在函数内部创建,从函数中返回结果值”,因为函数是内置对象,我们可以将它作为参数传递给另一个函数,到函数中执行,甚至执行后将它返回,它一直被“专业的程序员”看作是一种难懂的技术。

    localStorage和sessionStory区别

    永久储存和一次对话储存

    localStorage有多大,最多可以存储多少数据

    localStorage

    ​ 1、永久存储

    ​ 2、最大5MB

    你在项目中哪里用的localstory

    存储用户登陆状态

    rem自适应怎么配置,在项目的什么地方写的(window.onresize)

    //动态计算rem

    ​ document.documentElement.style.fontSize =

    ​ document.documentElement.clientWidth / 7.5 + “px”

    ​ window.onresize = function(){

    ​ document.documentElement.style.fontSize =

    ​ document.documentElement.clientWidth / 7.5 + “px”

    ​ }

    在项目入口文件里面写啊

    node.js+MongoDB

    用过 mongodb是一个非关系型数据库 Node.js 就是运行在服务端的 JavaScript。非关系型数据库,又叫nosql

    • promise是用来做什么的?

    它是一个对象,用来传递异步操作的信息。

    promise三个状态?

    Pending:进行中,Resolved:已完成,Reject:已失败

    promise优缺点

    优点:可以通过.then解决回调地狱的问题,通过try-catch解决问题捕获

    请求数据的时候默认请求头有哪些?

    JSONP和JSON区别

    1、JSON:是一种轻量级的数据交换格式。 2、JSONP:是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。

    是否了解ES6中的athec和await?有何用?

    • 去重,深拷贝,拖拽最好能自己写出来

    Processed: 0.013, SQL: 8