美文网首页
2020-06-18面试题

2020-06-18面试题

作者: 南方小成 | 来源:发表于2020-06-30 09:01 被阅读0次

第 1 题 在css选择器当中,优先级排序正确的是 (B)

A.id选择器>标签选择器>类选择器
B.id选择器>类选择器>标签选择器
C.类选择器>标签选择器>id选择器
D.标签选择器>类选择器>id选择器
浏览器默认属性 < 继承自父元素的属性 < 通配符选择器 < 标签选择器 < 类选择器 < 结构伪类选择器 < id选择器 < 行内样式 < !important

第 2 题sessionStorage 保存数据的方法正确的是:(D)

A.sessionStorage.setItem(“键值”,”键名”);
B.sessionStorage.saveItem(“键名”,”键值”);
C.sessionStorage.saveItem(“键值”,”键名”);
D.sessionStorage.setItem(“键名”,”键值”);
sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。而localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。
它们的用法是(key,value)或只有key

第 3 题

下面哪一个不是JavaScript的保留字?(E)
A.goto
B.abstract
C.implements
D.super
E.array

第 4 题 javascript中document.getElementById的返回值的类型为(B)

A.Array
B.Object
C.String
D.Function

  • document.getElementById的返回值是Function
  • document.getElementById(" ")的返回值是Object

第 5 题 在ECMAScript6 中,下面哪个不属于Promise的状态?(D)

A. Pending
B. Rejected
C. Resolved
D. Pause

Promise对象只有三种状态。
异步操作“未完成”(pending)
异步操作“已完成”(resolved,又称fulfilled)
异步操作“失败”(rejected)
这三种的状态的变化途径只有两种。
异步操作从“未完成”到“已完成”
异步操作从“未完成”到“失败”。

这种变化只能发生一次,一旦当前状态变为“已完成”或“失败”,就意味着不会再有新的状态变化了。因此,Promise对象的最终结果只有两种。
异步操作成功,Promise对象传回一个值,状态变为resolved。
异步操作失败,Promise对象抛出一个错误,状态变为rejected

第 6 题 下面有关JavaScript中 call和apply的描述,错误的是?(B)

A. call与apply都属于Function.prototype的一个方法,所以每个function实例都有call、apply属性
B. 两者传递的参数不同,call函数第一个参数都是要传入给当前对象的对象,apply不是
C. apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入
D. call传入的则是直接的参数列表。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。

call()方法和apply()方法的作用相同,他们的区别在于接收参数的方式不同。对于call(),第一个参数是this值没有变化,变化的是其余参数都直接传递给函数。(在使用call()方法时,传递给函数的参数必须逐个列举出来。使用apply()时,传递给函数的是参数数组)如下代码做出解释:

function add(c, d){
return this.a + this.b + c + d;
}
var o = {a:1, b:3};
add.call(o, 5, 7); // 1 + 3 + 5 + 7 = 16
add.apply(o, [10, 20]); // 1 + 3 + 10 + 20 = 34

第 7 题 在 javascript 中,用于阻止默认事件的默认操作的方法是(D)

A. stopDeafault()

B. stopPropagation()

C. preventPropagation()

D. preventDefaultEven()

E. preventDefault()
知识点链接:https://www.cnblogs.com/Essence/p/4266618.html

  • 阻止事件冒泡
    w3c用的是stopPropagation(),IE用的是cancelBubble=true。
  • 阻止默认事件的方法
    w3c用的是preventDefault(),IE用的是returnValue = false
  • 阻止所有事件的方法
    return false。javascript的return false只会阻止默认行为,而用jQuery的话则既阻止默认行为又防止对象冒泡

第 8 题 在标准的 JavaScript 中, Ajax 异步执行调用基于下面哪一个机制才能实现?(A)

A. Event和callback

B. 多线程操作

C. 多CPU核

D. Deferral和promise

第 9 题 var temp = null; alert(typeof temp);弹出的结果是什么?(C)

A、null

B、undefined

C、object

D、string

第 10 题在javascript里,下列选项中不属于数组方法的是(B)

A、sort()

B、length()

C、concat()

D、reverse()

  • length //是获取数组元素个数的属性
  • concat() //连接两个或者更多的数组,并返回结果
  • sort() //对数组元素进行排序
  • reverse() //对数组进行颠倒元素顺序

第 11 题
var name = 'World!';
(function () {
if (typeof name === 'undefined') {
var name = 'Jack';
console.log('Goodbye ' + name);
} else {
console.log('Hello ' + name);
}
})();
请问输出的是什么(A)?

A: Goodbye Jack

B: Hello Jack

C: Hello undefined

D: Hello World

  • 解析:变量声明提升的作用
在一个函数体内声明的变量,JS解析器都会将其移动到函数体的顶部

var name = 'World!';
(function () {
    if (typeof name === 'undefined') {
        var name = 'Jack';
        console.log('Goodbye ' + name);
    } else {
        console.log('Hello ' + name);
    }
})();
等价为==>

var name = 'World!';
(function () {
    var name;    
    if (typeof name === 'undefined') {
        name = 'Jack';
        console.log('Goodbye ' + name);
    } else {
        console.log('Hello ' + name);
    }
})();
执行的时候有个变量查找的过程,如果在当前函数体内没找到,
就会到定义的函数体的外层函数中去寻找,一直向上到全局对象中寻找,还是找不到就会报TypeError错误

var name = 'World!';
(function () {
    console.log(name)
})();

第 12 题在JS中,'2333'+1的输出是什么?(C)

A. 2334

B.2331

C.23331

D.2333

第 14 题 如下代码的输出结果顺序是?(D)

const promise = new Promise((resolve, reject) => {
console.log(1)
resolve()
console.log(2)
})
promise.then(() => {
console.log(3)
})
console.log(4)
A. 1 2 3 4

B. 1 3 2 4

C. 4 1 2 3

D. 1 2 4 3

  • 首先Promise新建后立即执行,所以会先输出1,2,而Promise.then()内部的代码在当次事件循环的结尾立即执行,所以会先输出4,最后输出3.

第 15 题 如下输出的是什么?(D)

class Fun () {
  static changeColor (newColor) {
    this.color = newColor
  }

  constructor ({newColor: 'blue'}) {
    this.color = newColor
  }
}
const stm = new Fun({newColor: 'yellow'})
stm.changeColor('red')

A: blue

B: yellow

C: red

D:TypeError

  • 解析:colorChange函数是一个static函数,static函数仅作用于创建它的构造函数上,并且不能传递给任何子方法;freddie方法是一个子函数,不会继承colorChange方法,所以freddie实例会抛出一个类型错误。

第 1 题 下列属于HTML5新元素的是ABDE。

A. header

B. footer

C. viewport

D. nav

E. section

H5新增标签:

article: 标签定义外部的内容。

aside:标签定义 article 以外的内容。

audio:h5新增音频标签。没有高宽属性。

canvas:h5新增画布标签。

command: 定义命令按钮(未测试)

datalist:标签定义选项列表。

datalist 及其选项不会被想显示出来,它仅仅是合法的输入值列表。

details:标签用于描述文档或文档某个部分的细节。

figure:标签用于对元素进行组合。

figcaption:定义 figure 元素的标题。

footer:定义 section 或 document 的页脚。

header:定义 section 或 document 的页眉。

hgroup:用于对网页或区段(section)的标题进行组合。

keygen:标签规定用于表单的密钥对生成器字段

mark:标签定义带有记号的文本。

meter:通过min="0" max="20"的方式定义度量衡。仅用于已知最大和最小值的度量。

nav:定义document或section或article的导航。

output:定义不同的输出类型,比如脚本。

progress:定义任何类型的任务的进度。

rp:定义若浏览器不支持 ruby 元素显示的内容

rt:定义 ruby 注释的解释

ruby:定义 ruby 注释

section:标签定义文档中的节、区段。比如章节、页眉、页脚或文档中的其他部分。

source:audio和video的属性之一。为audio和video定义媒介源。

summary:为details定义标题。

time:定义日期或时间。

video:h5新增视频标签。具有高宽属性。

第 2 题 对HTTP描述正确的是(BCD)

A、301 状态码是临时重定向

B、get ⽅方式只能⽀支持 ASCII 字符

C、get 在从服务器上获取资源,post 重点在向服务器发送数据

D、HTTPS 就是 HTTP 加上加密处理理

  • 301 redirect: 301 代表永久性转移(Permanently Moved)

  • 302 redirect: 302 代表暂时性转移(Temporarily Moved )

第 3 题 在默认的W3C盒模型中,默认的CSS布局,哪项是正确的(ABCD)?

A.块级元素实际占用的宽度与它的padding属性有关

B.块级元素实际占用的宽度与它的width属性有关

C.块级元素实际占用的宽度与它的margin属性有关

D.块级元素实际占用的宽度与它的border属性有关

第 4 题 下面哪些是浏览器缓存相关功能(ABCDF)?

A、indexDB

B、localStorage

C、sessionStorage

D、applicationCache

E、File System API

F、Cache API

  1. http缓存是基于HTTP协议的浏览器文件级缓存机制。
  2. websql这种方式只有较新的chrome浏览器支持,并以一个独立规范形式出现
  3. indexDB 是一个为了能够在客户端存储可观数量的结构化数据,并且在这些数据上使用索引进行高性能检索的 API
  4. Cookie一般网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)
  5. Localstoragehtml5的一种新的本地缓存方案,目前用的比较多,一般用来存储ajax返回的数据,加快下次页面打开时的渲染速度
  6. Sessionstorage和localstorage类似,但是浏览器关闭则会全部删除,api和localstorage相同,实际项目中使用较少。
  7. application cache 是将大部分图片资源、js、css等静态资源放在manifest文件配置中
  8. cacheStorage是在ServiceWorker的规范中定义的,可以保存每个serverWorker申明的cache对象
  9. flash缓存 这种方式基本不用,这一方法主要基于flash有读写浏览器端本地目录的功能

第 5 题 以下关于Array数组对象的说法不正确的是(CD)?

A.对数组里数据的排序可以用 sort 函数,如果排序效果非预期,可以给 sort 函数加一个排序函数的参数;

B.reverse 用于对数组数据的倒序排列;

C.向数组的最后位置加一个新元素,可以用 pop 方法;

D.unshift 方法用于向数组删除第一个元素;

第 1 题 【 填空题 】收藏标记

请看如下代码:

var fun = function(){}

fun.prototype = {
    info : {
        name : 'alice'
    }
}

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

a.info.name = 'jerry';
b.info.name = 'tom';
请问a.info.name和b.info.name分别输出的是什么?

  • 例题
    .分别对实例的name赋值,并没有涉及到原型的name属性
var fun = function(){}
fun.prototype.name='peter';
var a = new fun();
var b = new fun();
a.name = 'jack';
b.name = 'tom';
console.log(a.name);   //jack
console.log(b.name);   //tom
  

2.第一步在实例没有找到info属性,根据原型链往上找到了原型的info属性,然后给原型的info的name属性赋值

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';
console.log(a.info.name);    //tom
console.log(b.info.name);    //tom

第 2 题 【 填空题 】收藏标记

如下代码结构中:

<style type="text/css">
html { font-size: 20px; }
.father { font-size: 12px; }
.c1 { font-size: 1rem; }
.c2 { font-size: 2em; }
</style>

<html>
  <body>
    <div class="father">
       <div class="c1">&nbsp;</div>
       <div class="c2">&nbsp;</div>
    </div>
  </body>
</html>

请问c1的内的字体大小为(),c2的字体大小为(),请将单位转化为px

  • em会继承父级元素的字体大小 ----c2 font-size:12px
  • rem是相对于根元素<html> ----c1 font-size:20px

第 3 题 【 问答题 】收藏标记

【编程题】

请写一个函数,获取如下URL的query的参数和值,存放到一个对象中

url:

https://exam.uweb.cn.com/index.php?id=245&token=dwer212dfsd

第 4 题 简述var、let、const的区别

  1. var声明的变量会挂载在window上,而let和const声明的变量不会

  2. var声明变量存在变量提升,let和const不存在变量提升

  3. let和const声明形成块作用域

  4. 同一作用域下let和const不能声明同名变量,而var可以

  5. const一旦声明必须赋值,不能使用null占位;声明后不能再修改 ;如果声明的是复合类型数据,可以修改其属性

问了那个项目具有代表性,哪方面难点,怎么解决

相关文章

网友评论

      本文标题:2020-06-18面试题

      本文链接:https://www.haomeiwen.com/subject/mmnoxktx.html