初级前端面试题
一、考察 HTML 知识
1. HTML 和 XHTML 的区别是什么? 请用代码举例分析。
最主要的不同:
- XHTML 元素必须要被正确的嵌套
- XHTML 元素必须要被关闭
- 标签名必须使用小写字母
- XHTML 文档必须拥有根目录
XHTML 元素必须要被正确的嵌套
在 HTML 中,某些元素可以像这样彼此不正确的嵌套:<b><i>This is good world</b></i>
在 XHTML 中,所有的元素必须要正确的进行嵌套:<b><i>This is good world</i></b>
XHTML 元素必须要被闭合
在 HTML 中我们通常可以使用不闭合的标签,也可使这个标签正常使用,例如input标签,img标签,在使用 XHTML 后这样的写法就会产生错误,在使用input标签后,我们也要进行闭合:
XHTML 文档必须拥有一个根元素
所有的 XHTML 元素必须要被嵌套于 <html> 根元素中。 其余所有的元素均可有子元素,子元素必须是成对的且呗嵌套在其父元素之中
2. form 标签的 action 和 method 属性分别是用来做什么的?
下面是一段form的代码:
|
|
1. 其中 action 的值必须要使用 URL ,是在于规定当提交表单时向何处发送表单数据
URL可能会出现的值:
- 绝对 URL -指向其他站点的值(比如 src=’www.baidu.com/example.htm’)
- 相对 URL -指向站点内的文件(比如 src=’example.htm’)
2.其中 method 的值分为两个 get/post ,规定了发送form-data 的 HTTP 方法。
POST 还是 GET ?
<a> 标签的内容。引自:W3C school
CSS 知识考察
1.CSS 中的 position 属性有哪几个常见取值(出了 inherit 和 initial),每个取值分别是什么意思?
position的常见值:
- position = absolute
- position = relative
- position = fixed
position = absolute
生成绝对定位元素,相对于 static 定位以外的第一个父元素进行定位。
元素的位置通过left,top,right以及bottom属性进行规定
position = relative
生成相对定位元素,相对于元素本身的位置进行定位
position = fixed
生成绝对定位元素,相对于浏览器窗口进行定位,一般我们浏览网页的时候,页面右下角弹出的广告一般使用的就是fixed定位
2.两个 inline-block 元素之间的空隙是什么?如何去除?你的去除方案有什么缺点?
产生 inline-block 间距的原因是因为在两个标签之间,由于代码换行的原因,使得两个标签之间有一个空白的内容区域,这个空白的内容区域造成了inline-block的间距。
如何去除元素间隙
- 考虑到因为换行的原因,才产生的元素之间的间隙,所以我们可以将代码写在一行中,可是,连成一行会使得代码的可读性变差,所以我们可以使用下面的方式
但是这样做的缺点是影响了代码的美观,使得代码比较混乱
-使用负 margin,margin负值的大小与上下问的字体大小相关,所以在采用负margin的时候,如果标签中文字的大小不同,就会使用多个负margin,使得代码的工作量变大
-只闭合一个标签,在相同的元素中,我们只在最后一个标签上使用闭合,其他的均不闭合:
这样做的缺点是,在使用XTHML中,这样会显示错误
- 使用font-size:0,在CSS中,将设置为inline-block 的元素的字体设为0;这个方式基本可以解决大部分浏览器下inline-block元素之间的间距问题,不过在Chrome其默认字体有最小字体保护,所以考虑到兼容性还要添加-webkit-text-size-adjust:none;
不过这样做也有缺点,就是如果这个标签是子元素,就要在其中添加一个子元素,用来保护自己的字体大小不会发生改变。
JS 知识考察
1.JS 中如何将一个数组中重复的元素去除(去重)?具体来说,就是请你写一个函数 unique,这个函数接受一个数组 A,返回另一个数组 B,B 就是 A 去重后的数组。并说出你的方案的缺点。
使用indexOf()判断法
|
|
缺点:由于indexOf()是ES5的方法,IE8一下不兼容,所以他的兼容性比较差
2.JS 中如何浅拷贝一个数组?具体来说,就是请你写一个函数 copy,这个函数结构一个数组 A,返回另一个数组 B,B 就是 A 的一份复制。并说出你的方案的缺点。
|
|
这个方案,只是复刻了一个数组A,但是没有复制数组A中的方法,比如