Javascript面试题

面试题 专栏收录该内容
3 篇文章 0 订阅

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 . 函数和方法区别

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

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

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借用函数外部代码块的this
  • arguments,不能使用
    由于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?有何用?

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

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

<p> </p> 课程目标 <p style="color:#333333;"> <span style="color:#333333;"><strong>1.了解初级JS到中级JS,必须学习的核心内容</strong></span> </p> <p style="color:#333333;"> <span style="color:#333333;"><strong>2. 掌握javascript面试中,常见的面试题</strong></span> </p> <span style="color:#333333;"><strong></strong></span><span style="color:#333333;"><strong>在面试前端工程师岗位时,javascript面试的核心部分,具有广度、深度并存的特点。《javascript面试攻略》总结了初级前端js的面试经验以及常见的面试题,大幅降低了面试的准备成本。</strong></span> <p style="color:#333333;"> <span style="color:#333333;"><strong>此外,本次课程也可以作为javascript进阶的学习指导。</strong></span> </p> <p> <span style="font-size:16px;"><strong> 课程特点 </strong></span></p><p style="color:#333333;"><strong> <span style="font-size:12px;color:#333333;background-color:#FFFFFF;">1. 3小时搞定面试常问的问题</span> </strong></p><strong> </strong><p style="color:#333333;"><strong> <span style="font-size:12px;color:#333333;background-color:#FFFFFF;">2. 课程内容精炼,只讲干货</span> </strong></p><strong> </strong><p style="color:#333333;"><strong> <span style="font-size:12px;color:#333333;background-color:#FFFFFF;">3. 定制性讲解</span> </strong></p><strong> </strong><p style="color:#333333;"><strong> <span style="font-size:12px;color:#333333;background-color:#FFFFFF;">4. 学习门槛低</span> </strong></p><strong> </strong><p style="color:#333333;"><strong> <span style="font-size:12px;color:#333333;background-color:#FFFFFF;">5. 采用基础内容+动态内容方式</span> </strong></p><strong> </strong>
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页

打赏作者

Jar-bui~~

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值