前端校招面试题分享-2

385 阅读8分钟

前言


同样的与之前一样一套校招面试题目的分享,同时小编自身也做一个记录,整理了每一题的详细解析,篇幅比较大但是是比较全面的在写,前面考察的都是一些HTML属性之类的后面有一些js相关题目也挺不错的。题目来源牛客网该题库地址

题目及解析

第一题:HTML基础

下面关于 HTML 的描述正确的一项是()

A. HTML5 中的所有标签都必须写结束标签
B. DOCTYPE 的设置不会影响页面的展示效果
C. HTML5 中的属性名对大小写敏感
D. HTML5 中可以使用 data-* 自定义属性

正解:D

A、C 考察HTML与XHTML的区别,所有标签闭合是后者的一个硬性标准,同样对大小写敏感也是XHTML的标准。在HTML中,你可以不需要给属性值加引号,但是在XHTML中,它们必须被加引号。

B 这边补充一下,DOCTYPE声明用来告知浏览器的解析器用什么文档标准解析这个文档,DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。

D 考察HTML5中data自定义属性,是有的这边小编简单介绍一下他的用法

<!--我们自定义data-属性可以在js中获取到执行一些操作-->
<div id="test" class="box" data-id="myId" data-class="myClass"></div>
<script>
    var div = document.getElementById("test");
    
    var attr = div.attributes; // attributes获取NamedNodeMap对象
    var data = div.dataset;
    var id = div.id;
    var myId = div.dataset.id;
    
    console.log(attr);      //NamedNodeMap对象
    console.log(data);      //DOMStringMap对象
    console.log(id);
    console.log(myId);
</script>

输出结果如下,可以对应着看一下这边就不多做解释

同样的data-*同样的可以使用在属性选择器里面

/* 选择含有属性值data-class的div */
div[data-class] {
    width: 100px;
    height: 100px;
    background: red;
}
/* 选择属性值data-class的值为myClass的div */
div[data-class="myClass"] {
    width: 100px;
    height: 100px;
}

第二题 HTML5表单类型

下面哪个类型不是 HTML5 新增的表单类型()

A. color
B. data
C. password
D. email

正解:C

color类型:用来选取颜色的,它提供一个颜色选取器用来选取。 date类型:以日历的形式方便用户输入 email类型:该类型会自动要求输入的地址格式正确,否则浏览器不允许提交,并且有一个错误的信息提示email类型的文本框具有一个multiple属性,该属性允许在文本框中输入使用逗号分隔有效的E-mail地址的一个列表。


第三题 HTML标签属性考察

关于无障碍性(Accessibility)的说法中,错误的是()

A. role 属性用来指定一个元素在页面中的作用
B. alt 属性用来为图片提供文字性说明
C. 正确地使用语义化标签有助于提高页面的无障碍性
D. tabindex 属性用来指定使用键盘访问该元素的快捷键

正解:D

role属性用来增强标签的语义的

D选项,我们在网页中可以用tab键去切换焦点位置,tabindex 指示其元素是否可以聚焦,以及它是否/在何处参与顺序键盘导航。


第四题 from表单属性

为了实现表单文件上传,需要将 form 元素的 enctype 属性设置为()

A. application/json
B. text/plain
C. multipart/form-data
D. application/x-www-form-urlencoded

正解:D


第五题 Canvas性能优化

下面有关 HTML5 Canvas 性能优化的做法,哪项是错误的(D)

A. 使用多个分层的 Canvas 绘制复杂场景
B. 不在动画中使用 putImageData 方法
C. 使用 Web Worker 运行时间复杂度高的代码
D. 将计算阶段的开销转嫁到 Canvas 绘制阶段

第六题 CSS权重

页面中包含如下代码,请问页面中 h1 中的文字颜色是 ()

<article id="post" class="content">
    <h1 class="title">360公司简介</h1>
</article>
<style>
    #post { 
        color: blue
    }
    h1.title { color: black }
    .content .title { color: red }
    article h1 { color: green }
 </style>

正解:红色

权重问题相信大家都懂,这边主要是要注意的是继承<权重


第七题 文本溢出

下面哪种方法可以让一个元素内的文字永远在一行内显示(文字很长时也不会换行)()

A. word-break: normal
B. word-wrap: nowrap
C. white-space: nowrap
D. word-spacing: 0

正解:C

解决单行文字溢出:

whitespace:nowrap;  /*这边是阻止文字换行*/
 
overflow:hidden;    /*隐藏溢出部分*/
 
test-overflow:ellipsis;  /*用点代替被切断文字*/


第八题 display属性值

下面哪不是 display 属性的合法值()

A. table
B. flex
C. inline-block
D. hidden

正解:D

这边主要可能table用得比较少一点,设置后盒子表格形式展现


第九题 考察浮动

页面中有如下代码:
 <div class="profile">
     <img src="a.jpg" alt="avatar" class="avatar">
     <p class="desc">Some description</p>
 </div>
 <article>
     <h2>Posts</h2>
 </article>
 <style>
     .profile .avatar { float: left }
 </style>
如果想让 article 不受浮动影响,哪种做法是错误的 (C)

A. article { clear: both }
B. .profile::after { content: ''; display: block; clear: both }
C. .profile { clear: both }
D. .profile { overflow: hidden }

正解:C

清除浮动的几种方法

  • 父级div定义height
  • 结尾处加空div标签clear:both
  • 父级div定义伪类:after和zoom
  • 父级div定义overflow:hidden
  • 父级div也浮动,需要定义宽度
  • 结尾处加br标签clear:both

第十题 C3属性考察

如果要将一个元素旋转 90°,可以使用 CSS 中的哪个属性实现(B)

A. translate
B. transform
C. transition
D. animation

第十题 for in循环考察

以下代码的输出结果是(B)

 let obj = {
     a: 1,
     b: 2
 };
 Object.prototype.c = 3;
 Object.defineProperty(obj, 'd', {
     enumerable: false
 });
 for (let key in obj) {
     console.log(key);
 }
 
A. a b
B. a b c
C. a b c d
D. a b d

for ... in 循环可以遍历自身和继承上所有可以枚举的属性,所以这边对象原型上的所有属性索引都可以访问到


第十一题 阻止冒泡

在 W3C DOM 事件的回调函数中,如何阻止事件冒泡()
A. preventDefault()  // 阻止事件
B. stopPropagation() // 阻止冒泡
C. cancelBubble()
D. return false

第十二题

下面哪一个不是 JavaScript 模块化规范(C)

A. AMD
B. CommonJS
C. RequireJS
D. ES Modules

这边直接附上截图解析:


第十三题 http缓存

以下列举的 HTTP 响应头中,哪项与 HTTP 缓存无关(B)

A. Last-Modified
B. Connection
C. Cache-Control
D. Etag

const关键字

有关 ES6 的 const 关键字,以下说法哪项是正确的(A)

A. const 只在声明所在的块级作用域内有效
B. const 存在与 var 类似的变量提升机制
C. const 可以用来阻止对象的属性被无意修改
D. const 声明的全局变量,也属于顶层对象的属性 

const 用于声明常量,其值一旦被设定不能再被修改,否则会报错,他与let两者都没有变量提升机制。C选项注意,const定义对象,对象属性值任然可以被改变


第十五题 const声明对象

以下代码执行后,obj 的值是(C)
const obj = {x: 1, y: 2};
function foo(obj){
    obj.x++;
    obj.y--;
}
foo(obj);

A. {x:1, y:2}
B. {x:1, y:1}
C. {x:2, y:1}
D. 报错

该题目考察就是const定义对象对象值任然可以被更改


第十六题 事件处理

要让下面的代码能正常工作,在 ________ 处应当填写?

const link = document.querySelector('a.preview');
link.addEventListener('click', function(e){
    previewImage(e.target.href);
    _____________________________
});

A. e.preventDefault();
B. e.stopPropagation();
C. return false
D. e.cancelBubble = true;

A选项取消默认事件


第十七题 map函数考察

以下代码执行后控制台的输出是(A)

[...[1,,3,,5]].map((_, n) => n);

A. [0,1,2,3,4]
B. [1,2,3,4,5]
C. [1,undefined,3,undefined,5]
D. [0,undefined,2,undefined,4]

这个题目在写的时候就比较坑了当时都没注意数组里面有五位。

[...[1,,3,,5]] => [1, undefined, 3, undefined, 5]然后map函数第一个参数_代表空取第二个参数那么就是取数组索引值。


第十八题 HTML基础知识

以下对 HTML 描述错误的是(B、C)

A. HTML5 是 HTML 的第 5 个 版本
B. HTML 的标签区分大小写,故 `<a>` 和 `<A>` 是不同的标签
C. 页面上的 JS 只有在图片资源都加载完成后才能开始工作
D. 同步加载外链 CSS 会阻塞后续内联 JS 的执行

第十九题

以下表达式值为 false 的是(B、C、D)

A. "abc" === "abc"
B. {x:1} === {x:1}
C. Symbol(1) === Symbol(1) 
D. NaN === NaN

B选项对象内容一样但对象指针是不同的,C选项那就不用说了Symbol函数返回独一无二。D选项也是常见的false


总结

整体考察也比较“杂”,其实不管是什么重要的还是积累,小编后续几天会整理一下Vue面试题的几个常见问题,自己也好好地复习结合源码好好弄懂一下。 ending...