前端面试题(一)

做开发的同学往往在面试找工作过程中会面临一个问题,在公司中做项目开发可以根据业务需求实现程序开发功能,这都没什么大问题,但是面试的时候,面试官提问或是在做笔试,一问一些无论基本的还是难一点的技术问题就答不上来,很多问题感觉就像是在学校进行考试。其实呢,有些问题在工作中遇到过,也常常使用到,但是到了面试时候换一种问法就不知道说的是啥了、晕了.....han  其实个人有时候也很烦做笔试,被面试官问一些跟开发过程中根本用不着的问题,但是这些问题确实也很基础,就是涉及点深浅度方方面面大大小小太多了,哪能都死机硬背下来呢,再说这么多东西也记不住啊,再说现在互联网这么发达,资源共享这么多,平时开发遇到问题就去找百度解决,也没影响什么。但对于这些问题了解一下,还是没什么坏处,可以打好一下自己综合基础水平,过程肯定要费费脑子思考是必须的了。 为了避免以往看完东西就扔一边忘了,这两天闲来就把以往的知道的、淡忘的、不知道的面试过程中的问题整理一下,就当是再做个复习了,亦或是留个纪念。其实是从网上其他地方转的啦。

转载:

HTML+CSS
1. 对WEB标准以及W3C的理解与认识
标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率、使用外 链css和js脚本、结构行为表现的分离、文件下载与页面速度更快、内容能被更多的用户所访问、内容能被更广泛的设备所访问、更少的代码和组件,容易维 护、改版方便,不需要变动页面内容、提供打印版本而不需要复制内容、提高网站易用性;

2. xhtml和html有什么区别
HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言
最主要的不同:
XHTML 元素必须被正确地嵌套。
XHTML 元素必须被关闭。
标签名必须用小写字母。
XHTML 文档必须拥有根元素。

3. Doctype? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义? 
用于声明文档使用哪种规范(html/Xhtml)一般为 严格 过度 基于框架的html文档
加入XMl声明可触发,解析方式更改为IE5.5 拥有IE5.5的bug

4. 行内元素有哪些? 块级元素有哪些? CSS的盒模型?
块级元素:div、p、h1、h2、h3、h4、form、ul
行内元素: a、b、br、i、span、input、select
Css 盒模型:内容,border ,margin,padding

5. CSS引入的方式有哪些? link和@import的区别是?
内联、内嵌、外链、导入
区别 :同时加载
前者无兼容性,后者CSS2.1以下浏览器不支持
Link 支持使用javascript改变样式,后者不可

6. CSS选择符有哪些? 哪些属性可以继承? 优先级算法如何计算? 内联和 important 哪个优先级高?

标签选择符(body、p)、类选择符(.content1)、id选择符(#id2)、包含选择符(h2 span)。
CLASS属性,伪类A标签,列表ul、li、dl、dd、dt 可以继承。
优先级算法为:优先级就近原则。
后者优先级高

7. 前端页面有哪三层构成,分别是什么? 作用是什么?
结构层 Html、表示层 CSS、行为层JS

8. css的基本语句构成是?
选择器{属性1:值1; 属性2:值2; ……}

9. 你做的页面在哪些流览器测试过? 这些浏览器的内核分别是什么?
Ie(Ie内核) 火狐(Gecko) 谷歌(webkit) opear(Presto)

10. 写出几种 IE6 BUG的解决方法
1. 双边距BUG float引起的 使用display
2. 3像素问题 使用float引起的 使用dislpay:inline -3px
3. 超链接hover 点击后失效 使用正确的书写顺序 link visited hover active
4. Ie z-index问题 给父级添加position:relative
5. Png 透明 使用js代码 改
6. Min-height 最小高度 !Important 解决’
7. select 在ie6下遮盖 使用iframe嵌套
8. 为什么没有办法定义1px左右的宽度容器(IE6默认的行高造成的,使用over:hidden,zoom:0.08 line-height:1px)

11. 标签上title与alt属性的区别是什么?

Alt 当图片不显示是 用文字代表。
Title 为该属性提供信息

12 .描述css reset的作用和用途。
Reset 重置浏览器的css默认属性, 浏览器的品种不同,样式不同,然后重置,让他们统一。

13 .解释css sprites,如何使用。
Css 精灵 把一堆小的图片整合到一张大的图片上,减轻服务器对图片的请求数量。

14. 浏览器标准模式和怪异模式之间的区别是什么?
盒子模型 渲染模式的不同
使用 window.top.document.compatMode  可区分是标准模式还是怪异模式,BackCompat 表示怪异模式,CSS1Compat 表示标准模式。

15. 你如何对网站的文件和资源进行优化? 期待的解决方案包括:
文件合并、文件最小化/文件压缩、使用CDN托管、缓存的使用

16. 什么是语义化的HTML?
直观的认识标签,对于搜索引擎的抓取有好处。

17. 清除浮动的几种方式,各自的优缺点
1. 使用空标签清除浮动 clear:both(理论上能清除任何标签,增加无意义的标签)
2. 使用 overflow:auto(空标签元素清除浮动而不得不增加无意代码的弊端,,使用zoom:1用于兼容IE)
3. 是用afert伪元素清除浮动(用于非IE浏览器)

JavaScript
1. javascript的 typeof 返回哪些数据类型?
Object、number、function、boolean、underfind

2. 例举3种强制类型转换和2种隐式类型转换?
强制(parseInt、parseFloat、number)
隐式(== – ===)

3. split() 与 join() 的区别?
前者是切割成数组的形式,后者是将数组转换成字符串。

4. 数组方法 pop() 、push()、unshift()、shift()?
Push() 尾部添加;pop() 尾部删除;Unshift() 头部添加; shift() 头部删除

5. 事件绑定和普通事件有什么区别?
普通事件只支持单个事件,而事件绑定可以添加多个事件。参考:http://blog.csdn.net/qq_33988065/article/details/51351287

6. IE 和DOM事件流的区别
1. 执行顺序不一样;2. 参数不一样; 3. 事件加不加 on; 4. this指向问题

7. IE和标准下有哪些兼容性的写法
Var ev = ev || window.event
document.documentElement.clientWidth || document.body.clientWidth
Var target = ev.srcElement||ev.target

8. ajax请求的时候get 和post方式的区别
一个在url后面 一个放在虚拟载体里面
有大小限制
安全问题
应用不同 一个是论坛等只需要请求的,一个是类似修改密码的 

9. call 和 apply 的区别
Object.call(this,obj1,obj2,obj3)
Object.apply(this,arguments)

10. ajax请求时,如何解释json数据
使用 eval、parse,鉴于安全性考虑 使用parse更靠谱

11. b继承a的方法

参考:http://blog.csdn.net/xuanjiewu/article/details/53333608

12. 写一个获取非行间样式的函数

function getStyle(obj,attr,value){
 if(!value){
    if(obj.currentStyle){
        return obj.currentStyle(attr)
    }else{
        obj.getComputedStyle(attr,false)
    }
  }else{
      obj.style[attr]=value
  }
}
13. 事件委托是什么

让利用事件冒泡的原理,让自己的所触发的事件,让他的父元素代替执行! 参考:http://blog.csdn.net/xuanjiewu/article/details/53376577

http://www.webasily.com/?p=78 例子可见此链接
14. 闭包是什么,有什么特性,对页面有什么影响
闭包就是能够读取其他函数内部变量的函数。
http://blog.csdn.net/gaoshanwudi/article/details/7355794 此链接可查看(问这个问题的不是一个公司)

15. 如何阻止事件冒泡和默认事件
canceBubble return false

16. 添加、删除、替换、插入到某个接点的方法
obj.appendChidl()
obj.innersetBefore
obj.replaceChild
obj.removeChild

17. 解释jsonp的原理,以及为什么不是真正的ajax
动态创建script标签,回调函数
Ajax是页面无刷新请求数据操作

18. javascript的本地对象,内置对象和宿主对象
本地对象为 array、obj、regexp 等可以new实例化
内置对象为gload、Math 等不可以实例化的
宿主为浏览器自带的 document、window 等
19. document load 和document ready的区别
Document.onload 是在结构和样式加载完才执行js
Document.ready 原生种没有这个方法,jquery中有 $().ready(function)

20. ”==”和“===”的不同
前者会自动转换类型
后者不会

21. javascript的同源策略
一段脚本只能读取来自于同一来源的窗口和文档的属性,这里的同一来源指的是主机名、协议和端口号的组合。

22. 编写一个数组去重的方法

转自:http://www.jb51.net/article/46154.htm

js 数组去重的三种方法:

第一种是比较常规的方法,思路:
1. 构建一个新的数组存放结果
2. for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比
3. 若结果数组中没有该元素,则存到结果数组中

第二种方法比上面的方法效率要高

思路:

1. 先将原数组进行排序

2. 检查原数组中的第i个元素 与 结果数组中的最后一个元素是否相同,因为已经排序,所以重复元素会在相邻位置

3. 如果不相同,则将该元素存入结果数组中

第二种方法也会有一定的局限性,因为在去重前进行了排序,所以最后返回的去重结果也是排序后的。如果要求不改变数组的顺序去重,那这种方法便不可取了。

第三种方法(推荐使用)

思路:

1. 创建一个新的数组存放结果

2. 创建一个空对象

3. for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。

说明:至于如何对比,就是每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复。

代码示例:

<script>
//第一种方式
Array.prototype.unique1 = function(){
 var res = [this[0]];
 for(var i = 1; i < this.length; i++){
  var repeat = false;
  for(var j = 0; j < res.length; j++){
   if(this[i] == res[j]){
    repeat = true;
    break;
   }
  }
  if(!repeat){
   res.push(this[i]);
  }
 }
 return res;
}
var arr = [1, 5, 6, 6, 5, 7, 8, 0, 0];
console.log("原数组:"+arr);
console.log("去重后:"+arr.unique1());

//第二种方式
Array.prototype.unique2 = function(){
 this.sort(); //先排序
 var res = [this[0]];
 for(var i = 1; i < this.length; i++){
  if(this[i] !== res[res.length - 1]){
   res.push(this[i]);
  }
 }
 return res;
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
console.log("原数组:"+arr);
console.log("去重后:"+arr.unique2());

//第三种方式
Array.prototype.unique3 = function(){
 var res = [];
 var json = {};
 for(var i = 0; i < this.length; i++){
  if(!json[this[i]]){
   res.push(this[i]);
   json[this[i]] = 1;
  }
 }
 return res;
}

var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];
console.log("原数组:"+arr);
console.log("去重后:"+arr.unique3());

</script>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值