前端笔试题汇总

作者:于三
链接:https://www.nowcoder.com/discuss/68831
来源:牛客网

单选题

1.如果a===a为false,则说明a是:B
A.Infinity
B.NaN
C.Undefined
D.Null

//NaN与任何值都不相等,包括NaN本身。

2.页面文档完全加载并解析完毕之后会触发的事件是:C

A.ready
B.load
C.DOMContentLoaded
D.DOMContentReady

//

  1. 解析HTML结构。
  2. 加载并解析外部脚本。
  3. DOM树构建完成,执行脚本。//DOMInteractive –> DOMContentLoaded
  4. 加载图片、样式表文件等外部文件。
  5. 页面加载完毕。//window.onload

3.‘string’instanceof String的结果是:B

A.true
B.false

//'string'基本数据类型 使用typeof判断数据类型;instanceof用于判断对象类型;

4.下面哪条语句可以获取元素e相邻的下一个元素:A

A.e.nextSibling()
B.e,nextElement()
C.e.nextElementSibling()
D.e.next()

多选题

5.以下会触发reflow的操作有?(ACD)
A.改变任意元素height/width
B.改变background-color 
C.改变浏览器窗口大小
D.改变font-size

background的修改,经过浏览器厂家的优化,部分background的修改只触发repaint

6.以下哪些可以作为media queries的条件?(ABCD)

A.设备宽度
B.设备高度
C.设备类型
D.设备像素比

7.下列说法正确的是:(AB)

A.样式文件的加载会阻塞脚本的执行
B.iframe会阻塞主页面的load事件
C.window.location.href = ‘http://ele.me’和
D.window.location.replace(“http://ele.me”)的效果是等价的
E.<audio>、<img>中的资源下载会阻塞页面解析

//location.replace(url):url不会写入浏览器记录。

8.以下几组标签中全部符合HTML5标准的是:(A)

A.<section><audio><video>
B.<address><svg><aside>
C.<nav><image><footer>
D.<fieldset><canvas><pre>

9.下面说法错误的是:(BCD)

A.window.alert是一个同步方法,会阻塞脚本的执行
B.setTimeout(foo, 0)这行代码可以等价替换为foo()
C.在addEventListener的处理方法中使用e.preventDefault()可以阻止事件冒泡
D.String(‘abc’)和new String(‘abc’)是等价的

//DOM:stopPropagation()阻止冒泡;preventDefault()阻止默认行为。 

//IE:cancelBubble属性为true:阻止冒泡; returnValue属性为false:阻止默认行为。

10.以下代码的运行结果是:(D)

var foo = ‘string’
foo.substring(2,1)
console.log(foo)
A.‘t’
B.‘r’
C.‘’
D.‘string’

//与concat()方法一样,slice(),substr(),substring(),也不会修改字符串本身的值,他们只是返回一个基本类型的字符串值,对原始字符串没有任何影响。

11.下列属于块级元素的是:(AC)

A.<p>
B.<span>
C.<h3>
D.<a>

12.以下关于CSS的描述,错误的是:(BC)

A.内联样式声明拥有最高优先级
B.缺省情况下都是块级元素
C.position:absolute的元素总是相对于position:relative的元素定位
D.cm em px pt均属于CSS尺寸单位

 

填空题

13.告诉HTTP客户端需与服务端保持长连接的header是(Connection: Keep-Alive)
14.设置一个元素浮动之后,该元素的display值自动变成了(block)。
15.HTTP协议中属于safe method的method(是GET、HEAD)。

 

简答题

16.如何实现一个实时的“消息提醒”功能?
17.补全下面的代码,实现一个四分之一圆:

<div class=”quarter”></div>
.quarter{
width: 100px;
height:100px;
background-color:blue;
border-radius: 100px 0 0 0;
}
18.以下递归函数存在栈溢出的风险,请问如何优化?
function factorial(n){
return n*factorial(n-1)
}

//function factorial(n,total=1){//参数total有默认值1,所以调用时不用提供这个值
            if(n===1){
                return total;
            }else{
                return factorial(n-1,n*total);
            }
        }

尾递归往往需要改写递归函数,确保最后一步只调用自身,做到这一点的方法,就是把所有用到内部变量的方法改写为函数的参数,比如total
19.请实现一个计算最大公约数的函数:
function greatestCommonDivisor(a,b){
 if(b==0){
                return a;
            }else{
                return greatestCommonDivisor(b,a%b);
            }
}
greatestCommonDivisor(8, 12) //4
greatestCommonDivisor(8, 16) //8
greatestCommonDivisor(8, 17) //1

猜你喜欢

转载自blog.csdn.net/weixin_42424660/article/details/82864291