首页 > 代码库 > 前端工程师面(笔)试题部分汇总
前端工程师面(笔)试题部分汇总
HTML 部分
1)DOCTYPE 是什么,有什么作用,为什么要用 html5 标准的 DOCTYPE(初级)
<!DOCTYPE> 声明位于文档的最前面(处于 <html> 标签之前)。告知浏览器以何种模式来渲染文档。
<!DOCTYPE html>让浏览器以自身的最高模式来渲染,尽量匹配 web 标准。
DOCTYPE 不存在或格式不正确会导致文档以混杂模式呈现。
2)请分别列举至少 3 个 html 中默认的块级元素和行内元素(初级)
块级元素:div、table、ul、p、ol、form、h1~h6、dl
行内元素:span、a、em、strong、img、label
3)请列举出至少 3 个 html5 中新增的语义化标签(初级)
main、nav、aside、article、header、footer、section 等
4)要实现一组单选框 radio,属性上需要满足什么条件(初级)
name 属性必须一样
5)从 SEO 角度,请给出至少 2 条 html 书写上的注意点(中级)
a 标签一定要写 title 属性
img 标签一定要写 alt、title 属性
选用语义化的 html 标签
6)请列举出至少 3 个 html5 中新增的表单控件(中级)
email、url、number、range、Date pickers、search、color、datalist
7)谈下对 html 语义化的理解(中级)
去掉或者丢失样式的时候能够让页面呈现出清晰的结构
有利于 SEO:和搜索引擎建立良好沟通,有助于爬虫抓取更多的有效信息:爬虫依赖于标签来确定上下文和各个关键字的权重;
方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意义的方式来渲染网页;
便于团队开发和维护,语义化更具可读性,遵循 W3C 标准减少差异化。
CSS 部分
1)请列举出至少 5 个具有继承特性的 css 属性(初级)
font-size font-family color line-height text-align text-indent list-style 等,4 个即可
2)请阐述下 display:none 和 visibility:hidden 的区别(初级)
display:none 隐藏对应的元素,在文档布局中不再给它分配空间 visibility:hidden 隐藏对应的元素,但是在文档布局中仍保留原来的空间。
3)请简述(或者图示)下 w3c 标准的盒模型(初级)
标准和模型包含:内容(content)、内边距(padding)、边框(border),外边距(margin)
4)请列出 display 属性除了 none 以外的其他 3 个常用值,并分别说明每个值的作用(初级)
display: inline|block|inline-block
inline 布局特点转为行内元素
block 布局特点转为块级元素
inline-block 布局上同时具有行内、块级元素的特征
5)在页面重构时,为什么要先重置 css 样式,你自己是如何处理的?(初级)
6)请对下面的一段 css 属性定义的写法进行简化(初级)
padding-left: 10px;padding-right: 10px;
padding-top: 4px; padding-bottom: 8px;
padding: 4px 10px 8px
7)请列举出至少 4 个 css3 属性(初级)
border-raduis box-shadow text-shadow transform transition 等
8)请列举出至少 6 种 css 选择器(初级)
id 选择器(#id)
类选择器(.clazzname)
标签选择器(div、h1、p)
后代选择器(li a)
属性选择器(a[ref=”external”])
孩子选择器(ul > li)
9)position 属性的 3 个值:relative、absolute、fixed 分别是相对什么进行定位(初级)
relative:无 top、left 设置时,元素自身在文档流中的位置
absolute:相对于上级元素中第一个 position 属性非 static 的元素
fixed:相对于浏览器视窗
10)css3 中哪个属性可以对 DOM 元素的盒模型进行调整,该属性有哪些值,请分别阐述(或者图示)下不同值对盒模型的影响(中级)
box-sizing: content-box|border-box
context-box 即 w3c 标准盒模型
border-box 使得 content 包含了 padding、border
11)请简述下 CSS sprites 的原理,代码层面涉及哪个 css 属性(中级)
CSS Sprites 其实就是把网页中一些背景图片整合到一张图片文件中。这样可以减少很多图片请求的开销,因为请求耗时比较长;请求虽然可以并发,但是也有限
制,一般浏览器都是 6 个。再利用 CSS 的 background-image、background-repeat、background-position 的组合进行背景定位,background-position 可以用数字能精确的定位出背景图片的位置。
对于未来而言,http2 协议应用的话,就不需要这样做了。
12)css 中@import 指令的作用,它有何缺陷(中级)
在 css 文件中引入外部的 css 代码块缺陷:不利于多个 css 文件的并行下载,会造成阻塞,对页面渲染不利。
13)为什么对元素使用了 float 浮动,一定要有清除浮动(中级)
浮动的框可以左右移动,直至它的外边缘遇到包含框或者另一个浮动框的边缘。浮动框不属于文档中的普通流,当一个元素浮动之后,不会影响到块级框的布局而只会影响内联框(通常是文本)的排列,文档中的普通流就会表现得和浮动框不存在一样,当浮动框高度超出包含框的时候,也就会出现包含框不会自动伸高来闭合浮动元素(“高度塌陷”现象)。
正是因为浮动的这种特性,导致本属于普通流中的元素浮动之后,包含框内部由于不存在其他普通流元素了,也就表现出高度为 0(高度塌陷)。在实际布局中,往往这并不是我们所希望的,所以需要闭合浮动元素,使其包含框表现出正常的高度。
14)请列举 3 种常用的清除浮动的方式(中级)
用空标签:通过一个内容为空的标签,并为其定义 CSS 代码:clear:both 来清除浮动
使用 overflow 属性:在需要清除浮动的元素中定义 CSS 属性:”overflow:hidden”,为了兼容 IE6 同时要加上”zoom:1″
使用 after 伪类清除浮动
15)请列举至少 2 个 IE7 中的常见 bug,以及解决方案(中级)
1,百分比布局时,IE7 的计算精度没有其他浏览器高,1 行 5 列,每列 width20%的浮动布局,在 IE7 会出现错位。
解决方案为,为 IE7 写 hack,*width:19.99%
2,IE7 不支持 opcity 属性。
解决办法:filter: alpha(opacity=60); opacity:0.6;
3,overflow:hidden 属性在 IE7 中不起作用,如果 overflow:hidden 父元素里面的子元素采用了绝对定位的方式布局,父元素上的 overflow: hidden 会失效。
解决方案:在 overflow:hidden 属性的元素上添加 position: relative; 4,IE7 浏览器对绝对定位的元素设置了很高的 z-index 确不能显示在上层。原因是 IE7 中层级的比较先比较绝对定位元素的相对定位点元素的 z-index。所以,
解决方案:给相对定位点的元素设置较高的 z-index,如果祖先元素中有很多 position:relative 的元素,则比较的是第一个祖先元素 position:relative
的层级,给第一个祖先元素设定较高的层级即可。
16)页面重构过程中,从 ps 中导出图片素材时,如何选取合适的导出格式(中级)
当图片色彩丰富且无透明要求时,建议保存 JPG 格式并且选择合适的品质。
当图片色彩不太丰富(单一颜色的小图标)无论有没有透明度的要求,请保存为 png-8 格式当图片有半透明要求时,请保存为 png-24 格式
17)请简述下对渐进增强、优雅降级的理解(中级)
渐进增强 progressive enhancement:针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。
优雅降级 graceful degradation:一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。
优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带。
18)什么是 BFC,请谈谈对此概念的理解(高级)
BFC,块级格式化上下文,一个创建了新的 BFC 的盒子是独立布局的,盒子里面的子元素的样式不会影响到外面的元素。在同一个 BFC 中的两个毗邻的块级盒在垂直方向(和布局方向有关系)的 margin 会发生折叠。(W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行布局,以及与其他元素的关系和相互作用。)
19)请简述下低版本 IE(6,7)中下特有的 hasLayout 属性(高级)
“Layout”是一个 Internet Explorer for Windows 的私有概念,它决定了一个元素如何显示以及约束其包含的内容、如何与其他元素交互和建立联系、如何响应和传递应用程序事件、用户事件等。这种渲染特性可以通过某些 CSS 属性被不可逆转地触发。而有些 HTML 元素则默认就具有”layout”。
IE6-7 使用布局的概念来控制元素的尺寸和定位,那些拥有布局(have layout)的元素负责本身及其子元素的尺寸设置和定位。如果一个元素的 hasLayout 为false,那么它的尺寸和位置由最近拥有布局的祖先元素控制。
JavaScript 部分
1)JavaScript 有哪几种数据类型(初级)
简单:Number,Boolean,String,Null,Undefined
复合:Object,Array,Function
2)请编写一个 JavaScript 函数 parseQueryString,它的用途是把 URL 参数解析为一个对象,如:(初级)
var url = “枫芸志″;function parseQueryString(url) { var params = {};var arr = url.split("?"); if (arr.length <= 1){return params;}arr = arr[1].split("&");for (var i = 0, l = arr.length; i < l; i++) { var a = arr[i].split("=");params[a[0]] = a[1];}return params;}
3)js 中 split()和 join() 方法的区别(初级)
前者是将字符串切割成数组的形式,后者是将数组转换成字符串
4)已知有字符串 foo=”get-element-by-id”,写一个 function 将其转化成驼峰表示法”getElementById”。(初级)
function combo(str) {var arr = str.split(‘-‘);for(var i = 0; i< arr.length; i++){arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substr(1, arr[i].length - 1);}str = arr.join(‘‘); return str;}
5)请计算下面变量的值(初级)
var a= (Math.PI++);var b = (Math.PI++);alert(a);alert(b);
答案: 3.141592653589793,3.141592653589793
6)请写出以下 js 表达式的值(初级)
4+"3"3+"a"var a="4"; a+33+null3+true3+“a”-3undefined==null1===true
答案:"43","3a","43",3,4,NaN,true,false
7)有如下 html,如何用 js 获得被选中的 option 的 text 描述(非 value)(初级)
<select id="select_id"><option vlue="1">text1</option> <option vlue="2">text2</option> <option vlue="3">text3</option> <option vlue="4">text4</option></select>
答案:
var s = document.getElementById("select_id"), index = s.options.selectedIndex;var text = s.options[index].text; alert(text);
8)js 怎样添加、移除、移动、复制、创建和查找节点(初级)
<1>创建新节点
createDocumentFragment() //创建一个 DOM 片段
createElement() //创建一个具体的元素
createTextNode() //创建一个文本节点
<2>添加、移除、替换、插入
appendChild() //添加
removeChild() //移除
replaceChild() //替换
insertBefore() //插入
<3>查找
getElementsByTagName() //通过标签名称
getElementsByName() //通过元素的 Name 属性的值
getElementById() //通过元素 Id,唯一性
9)看下面代码,给出输出结果。(初级)
for(var i = 1; i < 3; i++){setTimeout(function(){console.log(i);}, 10);}
答案:3,3
10)按顺序写出 alert 弹出窗口的内容。(中级)
var name ="The Window";var object = {name : "My Object",getNameFunc : function() {alert(‘1.‘ + this.name);return function() {return this.name;};}};var func = object.getNameFunc();alert(‘2.‘ + func());alert(‘3.‘ + func.call(object)); alert(‘4.‘ + func.apply(object));
答案: 1.My Object,2.The Window, 3.My Object, 4.My Object
11)简述创建 ajax 过程(中级)
1. 创建`XMLHttpRequest`对象,也就是创建一个异步调用对象.
2. 创建一个新的`HTTP`请求,并指定该`HTTP`请求的方法、`URL`及验证信息.
3. 设置响应`HTTP`请求状态变化的函数.
4. 发送`HTTP`请求.
5. 获取异步调用返回的数据.
6. 使用 JavaScript 和 DOM 实现局部刷新.
var xmlHttp = new XMLHttpRequest();xmlHttp.open(‘GET‘,‘demo.php‘,‘true‘);xmlHttp.send() xmlHttp.onreadystatechange = function(){if(xmlHttp.readyState === 4 & xmlHttp.status === 200){}}
12)说说你对作用域链的理解(中级)
作用域链的作用是保证执行环境里有权访问的变量和函数是有序的,作用域链的变量只能向上访问,变量访问到 window 对象即被终止,作用域链向下访问变量是
不被允许的。
13)说说你对闭包的理解(中级)
使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。
闭包有三个特性:
1. 函数嵌套函数
2. 函数内部可以引用外部的参数和变量
3. 参数和变量不会被垃圾回收机制回收
14)null 和 undefined 的区别?(中级)
null 是一个表示"无"的对象,转为数值时为 0;undefined 是一个表示"无"的原始值,转为数值时为 NaN。
当声明的变量还未被初始化时,变量的默认值为 undefined。
null 用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。
undefined 表示"缺少值",就是此处应该有一个值,但是还没有定义
前端工程师面(笔)试题部分汇总