阿里巴巴面试题
前端面试题目
1. div和span的区别?
div是块级标签,span是行级标签
2. 在html中,position取值有哪几种,默认值是什么?
取值:static、relative、fixed、absolute
默认值:static
3. 前端页面由哪三层构成,分别是什么?作用是什么?
前端页面构成:结构层、表示层、行为层
结构层(structural layer)
由 HTML 或 XHTML之类的标记语言负责创建。标签,也就是那些出现在尖括号里的单词,对网页内容的语义含义做出了描述,但这些标签不包含任何关于如何显示有关内容的信息。例如,P标签表达了这样一种语义:“这是一个文本段。”
表示层(presentation layer)
由 CSS 负责创建。 CSS对“如何显示有关内容”的问题做出了回答。
行为层(behaviorlayer)
负责回答“内容应该如何对事件做出反应”这一问题。这是 Javascript 语言和 DOM主宰的领域。
4. 如何居中一个浮动元素?
方式1:设置容器的浮动方式为相对定位,然后确定容器的宽高比如宽500 高 300 的层,然后设置层的外边距。
div{ width: 500px; height: 300px; margin: -150px 0 0 -250px; position: absolute; left: 50%; top: 50%; background-color: yellow; } 元素居中
方式2:需要position:absolute;绝对定位。而层的定位点,使用外补丁margin负值的方法。负值的大小为层自身宽度高度除以二。
让层垂直居中于浏览器窗口
5. 请简述HTML和XHTML最重要的4点不同?
不同:
XHTML要求正确嵌套
XHTML 所有元素必须关闭
XHTML 区分大小写
XHTML 属性值要用双引号
XHTML 用 id 属性代替 name 属性
XHTML 特殊字符的处理
6. 页面布局中常听说的“结构与表现”分离,“结构”是指?“表现”是指?
“结构”:HTML
“表现”:CSS
7. 怎么样从web前端方面优化性能?至少列举5点?
1) HTML部分
u 语义化HTML:好处在于可以使代码简洁清晰,支持不同设备,利于搜索引擎,便于团队开发;
u 减少DOM节点:加速页面渲染;
u 给图片加上正确的宽高值:这可以减少页面重绘,同时防止图片缩放;
u 防止src属性和link的href属性为空:当值为空时,浏览器很可能会把当前页面当成其属性值加载;
u 正确的闭合标签:如避免使用
,浏览器会多一个将它解析成u 链接为目录或首页的地址后面加”/”,如http://www.5icool.org/;
u 用LINK而不用@import方式导入样式;
u 样式放在页头,JS放在页尾;
u 缩小favicon.ico并缓存;
2) CSS部分
u 避免使用CSS Expressions(CSS表达式):如background-color: expression( (newDate()).getHours()%2 ? “#B8D4FF” : “#F08A00″ ) ;
u 避免使用CSS Filter(CSS滤镜);
u 使用CSS缩写,减少代码量;
u 通过CSSSprites把同类图片合成一张,减少图片请求;
u 减少查询层级:如.header .logo要好过.header .top .logo;
u 减少查询范围:如.header>li要好过.header li;
u 避免TAG标签与CLASS或ID并存:如a.top、button#submit;
u 删除重复的CSS;
3) Javscript部分
u 尽量少用全局变量;
u 使用事件代理绑定事件,如将事件绑定在body上进行代理;
u 避免频繁操作DOM节点;
u 不使用EVAL;
u 减少对象查找,如a.b.c.d这种查找方式非常耗性能,尽可能把它定义在变量里;
u 类型转换:把数字转换成字符串使用”” + 1,浮点数转换成整型使用Math.floor()或者Math.round();
u 对字符串进行循环操作,譬如替换、查找,应使用正则表达式;
u 删除重复的JS;
4) 服务器部分
u 尽量合并CSS、JS文件,或将其直接写在页面上,减少HTTP请求;
u 压缩CSS、JS文件,缩短文件传输时间;
u 避免404错误:特别要避免给404指定一个停摆页面,否则所有404错误都将会加载一次页面;
u 一般要求减少DNS查询次数,如同一个页面的请求资源尽量少的使用不同的主机名,这可以减少网站并行下载的数量,但很多网站为了加速下载资源其实是特意用了多个主机名,这里要做一个权衡;
u 使用CDN加速,使用户从离自己最近的服务器下载文件;
u 减少Cookie的大小,使用无cookie的域,客户端请求静态文件的时候,减少 Cookie 的反复传输对主域名的影响;
u 为文件头指定Expires,使内容具有缓存性;
u 使用gzip压缩内容;
8. JavaScript中哪些方法获取元素?
getElementById
getElementsByClassName
getElementsByTagName
getElementsByName
9. 描述CSS hack技巧?
条件注释:仅适用于IE
特定符号:适用于能识别特定符号的浏览器
内核符号:针对不同浏览器内核
10.用JS截取字符串,asdfgh,要fgh;?
方式1: ‘asdfgh’.substr(3,3)
方式2: ’asdfgh’.substring(3,5) 或者 ‘asdfgh’.substring(3)
11.IE6的双倍边距BUG指的是什么?怎么解决?
双边距:当块级元素有浮动样式的时候,给元素添加margin-left和margin-right样式,在ie6下就会出现双倍边距。
解决方案:给当前元素添加样式,使当前元素不为块,如:display:inline;display:list-item
12. 如果制作一个访问量很大的网站,对css,js和图片应该怎么处理?
方法1:资源文件按模块进行放置,有利于团队开发
方法2:图片尽量采取聚合技术
方法3:精简压缩css和js文件,减少文件大小
方法4:类库、媒体使用CDN加速,减轻服务器压力
13.述ajax原理,什么是同步异步(主观题,答案不唯一)?
Ajax的工作原理:相当于在用户和服务器之间加了—个中间层,使用户操作与服务器响应异步化。这样把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的。
同步异步:
14. 平时有没有使用xml和json,在ajax交互中,哪一种更易于开发和维护,js中怎么序列化JSON字符串?
有,json相比xml可读性和可扩张性好、编码及解码难度较低、在数据交互中带宽占用少,并且在当下是最流行的数据交互格式。
序列化JSON字符串:eval() 或者 JSON.parse()
15. JS怎么创建一个类?
方式1 : var obj = new Object();
方式2 : var obj = {};
16.JS的typeof返回哪些数据类型?
string、number、object、boolean、function、undefined
17. HTTP请求有哪几种?
post、get
18. 完成下面布局(兼容IE6-10以及FF、谷歌、苹果浏览器)?