前端问题

来源:互联网 发布:淘宝号为什么会被监控 编辑:程序博客网 时间:2024/06/11 21:23
        1.你常使用的HTML标签有哪些?
span  p  a   div   img   ul  li    ol li    dl  dt  dd  br等
        2.说下你对标签语义化的理解。
“语义化”是指在人为更少的干预下让机器更好的理解和收集信息网页信息;标签的语义化可以让人们更直观认识标签和属性的作用。特别是HTML5规范以后,
新出现的许多标签如header、footer、article等,使html正在朝着更加健壮的语义化的HTML结构发展。
标签语义化的好处有:
(1)能让页面呈现清晰的结构;
(2)有利于SEO的优化,搜索引擎的爬虫也依赖于标记来确定上下文和各个关键字的权重.;
(3)便于团队开发和维护,提高开发效率,甚至 实现模块化开发;
(4)屏幕阅读器(如果访客有视障)会完全根据你的标记来“读”你的网页  。        
         3.你知道的html 行级元素和块级元素标签分别有哪些?
块级元素会从新的一行出现,行内元素在一行并排显示;行级元素不能设置width与height.
块级元素有:h1~h6、ul 、li、ol 、dl 、dt、dd、p、div、form、tr、td、table、thead、tbody、tfoot等
行内元素有:a、b、br、img、input、span等
          4..你对Ajax的理解。
AJAX 是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术;
通过Ajax你的 JavaScript 可在不重载页面的情况与 Web 服务器交换数据;
AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面;
AJAX 可使因特网应用程序更小、更快,更友好;
AJAX 是一种独立于 Web 服务器软件的浏览器技术。
         5.get与post两种方式的优缺点。
get是从服务器上获取数据,post是向服务器传送数据;
get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB;
get安全性非常低,post安全性较高。但是执行效率却比Post方法好;
get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到;
post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址,用户看不到这个过程;
所以:包含机密信息的话,建议用Post数据提交方式;在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式。
          6.css hack知道哪些?
由于不同的浏览器,甚至同一浏览器的不同版本对CSS的解析认识不一样,导致生成的页面效果不一致,写出针对不同浏览器CSS code就称为CSS hack。
一些css hack如下图所示:css hack
          7.浏览器调试快捷键是什么?
F12  或者     Ctrl+Shift+J两种方法。
         8.jQuery从哪个版本开始不兼容IE低版本,你项目中用的哪个版本,为什么用这个版本,其它版本的jQuery与你用的版本有什么区别?
版本1.12将成为针对指定的微软Windows默认浏览器版本的最后一个官方支持,就是说版本1.13将只会支持IE8及其之后的版本,丢弃了IE6余IE7。
例如1.9版本丢弃了live()方法。其它可以去官网查看。
         9.你对css盒模型的理解。
盒模型有两种:标准盒模型(w3c标准)和IE盒模型。
标准盒模型中width和height指的是内容区域的宽度和高度,增加内边距、边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸;
但在IE6浏览器的width不是内容的宽度,而是内容、内边距和边框的宽度总和。
两种盒模型如图所示:盒模型
          10.数组怎么去重?
这里说两种方法:
1)先将原数组进行排序;检查原数组中的第i个元素 与 结果数组中的最后一个元素是否相同,因为已经排序,所以重复元素会在相邻位置;如果不相同,则将该元素存入结果数组中。
利用对象的原型方法,代码为:




2)创建一个新的数组存放结果;创建一个空对象;for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中;说明一下:说明:至于如何对比,就是每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复。
代码如下:



这两种方法为百度结果,尊重作者版权。
         11.数组排序。
对数组排序,可以适用.sort()方法。
如果数组中存放的是number类型:arr.sort(function(a,b){return a-b;})这种方法是从小到大排序,arr.sort(function(a,b){return b-a;}),这种方法是从大到小排序。
如果数组中存放的是string类型:arr.sort(function(a,b){return a.localeCompare(b)}),
数组排序方法还有冒泡排序:



还有快速排序法等方法自行扩充。
          12.有哪些方式可以显示图片?
我知道的好像就img 、 background:url()  、background-image.
          13.为什么要清除浮动,有哪些方式?
一个块级元素的高度如果没有设置height,那么其高度就是由里面的子元素来撑开的,如果子元素使用浮动,脱离了标准的文档流,那么父元素的高度会将其忽略,如果不清除浮动,父元素会出现高度不够,那样如果设置border或者background都得不到正确的解析。
如何清理浮动呢,可以加在父元素和子元素两种方法:
1)在浮动元素下加子元素<div class="clear"></div>然后设置样式.clear{ height:0px;font-size:0;clear:both;};
2)在浮动元素下面(与浮动元素同级)加<br clear="all"/>
3)给浮动元素的父级也加浮动(这种情况当父级margin:0 auto时不居中)
4)给父级加display:inline-block;(同方法2,不居中,只有IE6,7居中)
5)给浮动元素父级加overflow:auto;

          14.你的DOM元素命名原则
匈牙利命名:开头字母用变量类型的缩写,其余部分用变量的英文或英文的缩写,要求单词第一个字母大写
小驼峰式:(little camel-case):第一个单词首字母小写,后面其他单词首字母大写
大驼峰式:(big camel-case):每个单词的第一个字母都大写;
         15.js中定义对象的方式有哪些?




         16.call和apply的区别
call和apply,这两个方法基本上是一个意思,区别在于 call 的第二个参数可以是任意类型,而apply的第二个参数必须是数组,也可以是arguments。
          17.什么是闭包,在js中的作用是什么?
闭包就是讲函数内部生成的变量保存到内存中,进行下次调用;也可以说函数外部可以调用函数内部的变量;
当函数内部返回一个函数时,闭包搭建了方法内部与方法外部的桥梁,使得外部也可以任意的获取到方法内部的资源,但是闭包会造成变量在内存中持久占用,因此会有一定的性能问题,不要轻易使用,即便使用,也要在恰当的时机进行释放。
          18.一次完整的HTTP事务是怎样一个过程?
a.域名解析
b.发起TCP的三次握手
c.建立TCP连接后发起http请求
d.服务器端响应http请求,浏览器得到html码
e.浏览器解析html代码,并请求html代码中的资源
f.浏览器对页面进行渲染并呈现给客户
          19.在javascript中什么是伪数组,如何将一个伪数组转化为标准数组?
伪数组(类数组)无法直接调用数组方法;但仍可以用真正的数组遍历方法,典型的就是函数的aruguments参数,还有像调用getElementsByTagName,   document.childNodes之类,
它们都返回NodeList对象都属于伪数组。可以使用Array.prototype.slice.call(makeArray)将数组转化为真正的Array对象。
在jq的方法中也有这样一个方法,将伪数组转化为真正的数组:$.makeArray(l类数组)。
          20.请描述一下cookies、sessionStorage与localStorage的区别。(百度搜索)
共同点:都是保存在浏览器端,且同源的。
区别:cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递。而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。Web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者。Web Storage 的 api 接口使用更方便。
         21.CORS是什么?对于跨域请求,如何将附带凭证(HTTP Cookie及HTTP认证信息)的请求发送至服务器?
跨域请求一直是网页编程中的一个难题,在过去,绝大多数人都倾向于使用JSONP来解决这一问题。不过现在,我们可以考虑一下W3C中一项新的特性——CORS(Cross-Origin Resource Sharing)了。CORS是现代浏览器支持跨域资源请求的一种方式。
更多跨域请求可以参考:   http://www.cnblogs.com/dojo-lzz/p/4265637.html 。
同源策略
         22.DOM元素Attributte与Property的区别。
1)attribute是一个特性节点,每个DOM元素都有一个对应的attributes属性来存放所有的attribute节点,
attributes的每个数字索引以名值对(name=”value”)的形式存放了一个attribute节点
获取一个attribute节点直接用getAttribute方法
要设置一个attribute节点使用setAttribute方法,
要删除就用removeAttribute
attributes是会随着添加或删除attribute节点动态更新的。
2)property就是一个属性,如果把DOM元素看成是一个普通的Object对象,那么property就是一个以名值对(name=”value”)的形式存放在Object中的属性。
要添加和删除property也简单多了,和普通的对象没啥分别
最后为了更好的区分attribute和property,基本可以总结为attribute节点都是在HTML代码中可见的,而property只是一个普通的名值对属性
         23.JavaScript的数据类型都有什么?
基本数据类型:
字符串 String    数字 Number    布尔Boolean
复合数据类型:
数组 Array    对象 Object
特殊数据类型:
Null 空对象     Undefined 未定义
          24.什么是Ajax和JSON,它们的优缺点。
对于JSON,首先要明白JSON和XML一样也是一种简单文本格式。
JSON来自于javascript,但是应用上面远远不止是javascript的json,它相当于xml,是一种比较流行的标准格式,是数据的载体
javascript json 是用于javascript程序的,它可以支持对象引用以及函数;ajax json只是最简单的字符串和数字,它不可能完全支持javascript里面的数据类型。
相对于XML,JSON更加易读、更便于肉眼检查。在语法的层面上,JSON与其他格式的区别是在于分隔数据的字符;JSON的另一个优点是它的非冗长性
          25.浅谈一下怎么处理浏览器的兼容性问题。
合理化HTML结构,简洁化css属性:html结构合理规范了,很大程度上避免了兼容问题,css要尽量写的简单有效,特效用JavaScript来做,很多时候别用css伪类实现,针对比较特殊的用css hack 处理。

          26.浅谈一下如何避免用户多次点击造成的多次请求。
我们在访问有的网站,输入表单完成以后,单击提交按钮进行提交以后,提交按钮就会变为灰色,用户不能再单击第二次,直到重新加载页面或者跳转。这样,可以一定程度上防止用户重复提交导致应用程序上逻辑错误。
还有很多其他的方式进行防止重复点击提交,如
1> 定义标志位:
 点击触发请求后,标志位为false量;请求(或者包括请求后具体的业务流程处理)后,标志位为true量。通过标志位来判断用户点击是否具备应有的响应。
2> 卸载及重载绑定事件:
   点击触发请求后,卸载点击事件;请求(或者包括请求后具体的业务流程处理)后,重新载入绑定事件。
3> 替换(移除)按钮DOM
   点击触发请求后,将按钮DOM对象替换掉(或者将之移除),自然而然此时不在具备点击事件;请求(或者包括请求后具体的业务流程处理)后,给新的按钮DOM定义点击事件
0 0
原创粉丝点击