JavaScript面试问题集锦

2014-02-28 11:18

以下是我自己整理的JavaScript相关的面试题, 大部分出自 <JavaScript高级程序设计第3版>这本书, 放在这里, 供大家参考...

1 历史

  1. JavaScript诞生的时间, 动机, 发明者
  2. JavaScript和ECMAScrpit的关系, 和JScript的关系
  3. 简单介绍下 ECMAScript 3, ECMAScript 4, ECMAScript 5, ECMAScript 6各有什么改进

2 基础

  1. 简单介绍下 严格模式
  2. js里的关键字和保留字
  3. js里有几种数据类型, 分别是?
  4. typeof 的返回值有几种?
  5. 简单介绍下 null 和 undefined 有什么区别?
  6. new Boolean(false) 是true还是false, 为什么
  7. 简单介绍下NaN
  8. 简答介绍下 parseInt 函数
  9. (10).toString(2)的结果是? 为什么?
  10. toString 方法和 valueOf 方法的区别?
  11. 2 * "12" 的结果是?
  12. 简单介绍下 arguments 对象
  13. js里有函数重载吗?
  14. js里函数调用是值传递还是引用传递?
  15. 介绍下js里的作用域链?
  16. js里有什么方法可以延长作用域链?
  17. 怎么理解js里的 预编译 这个过程?
  18. js里 查找一个变量的过程?
  19. js有垃圾自动收集机制吗?
  20. js中有块级作用域吗?
  21. 为什么建议使用 === 而不是 == ?
  22. !!x 这种语法有什么用?
  23. js代码中可以省略最后的分号吗? 有什么坏处吗?

3 引用类型相关

  1. 如何检查一个变量是不是数组, 你能想到几种方法?
  2. 如何用js里的数组模拟栈和队列, 有哪些相关的方法?
  3. [1, 2, 10, 12].sort() 的结果是?
  4. 如何删除一个数组的第3个元素?
  5. 简单介绍下es5中给数组新增的 every, filter, forEach, map, some, reduce 方法
  6. js中如何知道今天是星期几, 如何知道今天的年份?
  7. js中正则表达式的 g, i, m标志分别是什么意思?
  8. Function 是一个对象还是一个函数? 为什么?
  9. 函数声明和函数表达式有什么区别?
  10. 为什么说 js 有一点函数式编程语言的特性?
  11. 简单介绍下函数调用时的 this 代表什么
  12. apply 方法和 call 方法有什么区别, 有什么用途?
  13. 每个函数都有prototype这个属性吗? 简单介绍下这个属性
  14. js的字符串有3个类似的方法, slice, substr, substring, 这三个方法有什么区别?
  15. encodeURI方法和 encodeURIComponent方法有什么区别?
  16. js中常见的异常有哪些?
  17. 如何找到一个数组的最大值, 比如[1, 9, 2, 4], 可以只用Math对象的方法做到吗?
  18. 如何删除对象的属性?
  19. 一个对象的属性查找的过程?
  20. hasOwnProperty 有什么用?

4 面向对象相关

  1. 什么是面向对象? 常见的面向对象语言有哪些? js是面向对象语言吗?
  2. 面向对象 有哪些基本特征?
  3. js中如何创建一个对象?
  4. 简单介绍下原型和原型链?
  5. __proto__ 这个属性有什么用?
  6. 数组的sort方法是存在哪里的?, toString方法呢?
  7. Function instanceOf Object的结果, Object instanceof Function?
  8. 简单介绍下 Object.create 这个方法?
  9. 如何在js中实现继承? 有几种方法?

5 函数表达式

  1. 简单介绍下匿名函数?
  2. 简单介绍下闭包?
  3. 实现一个简单的闭包?
  4. 如何在js中模拟私有变量?

6 BOM

  1. 什么是BOM, 和js有什么关系?
  2. 浏览器通过哪几个方法可以调用系统对话框?
  3. window.location.protocol 的值一般是?
  4. window.location.search 这个值有什么用?
  5. 如何获取屏幕的宽和高各有多少个像素?
  6. js中如何区分不同的浏览器?
  7. 常见的浏览器有哪几款, 最新的版本号分别是多少?
  8. 手机上的移动浏览器的内核一般是?

7 DOM

  1. 什么是DOM, 和js有什么关系?
  2. 查找DOM元素一般有哪些方法?
  3. 如何创建一个文本节点, 如何创建一个DOM元素?
  4. 如何知道某个元素的子节点的数目?
  5. 元素和标签有什么区别?
  6. 常见的标签有哪些?
  7. 什么是块元素和行内元素? 如何在两者之间转换?

8 事件

  1. IE中的事件流和其他浏览器的事件流有什么区别? W3C是怎么解决这个问题的?
  2. 给一个元素绑定一个事件, 有哪几种方法?
  3. 事件处理程序中, 如何阻止事件进一步冒泡或捕获? 如何取消事件的默认行为?
  4. 事件对象中的 this, target, currentTarget有什么区别?
  5. load事件可以在哪些元素上触发?
  6. 简单介绍下resize事件?
  7. 鼠标事件有哪些?
  8. 简单介绍下鼠标滚轮事件?
  9. keydown, keypress, keyup事件有什么区别?
  10. hashchange事件有什么用?
  11. 简单介绍下触摸事件?
  12. 简单介绍下事件委托?
  13. 富文本编辑器的原理?
  14. console对象有哪些常用方法?
  15. 如何调试js代码?

9 JSON和Ajax

  1. 什么是JSON? JSON只支持JavaScript吗?
  2. JSON中有哪几种类型的值?
  3. 如何解析和序列化 JSON对象?
  4. 如何在序列化时过滤 JSON对象中的值?
  5. toJSON方法有什么用?
  6. 什么是Ajax? 何时诞生, 有什么用?
  7. XHR可以发送同步请求吗?
  8. Ajax可以用来发送文件吗?
  9. Ajax可以处理超时吗?
  10. Ajax如何实现跨域?
  11. 有哪些跨域的方法?
  12. 什么是JSONP?
  13. 服务器可以主动发送数据到客户端吗?
  14. 简单介绍下 web sockets?

10 一些进阶问题

  1. Function.prototype.bind函数有什么用? 如何自己实现?
  2. 简单介绍下 函数柯里化
  3. setTimeout和 setInterval 有什么区别?
  4. 简单介绍下 函数节流? 实现一个简单的函数节流
  5. js的模块化开发怎么做, 有哪些常见的规范和实现? 简单介绍下原理?
  6. js里的 异步 怎么理解?
  7. 什么是高阶函数? 实现一个简单的高阶函数?

11 网络相关

  1. 请简单描述一下一个HTTP请求的过程
  2. 假如现在需要你建一个网站,域名是xxx.com 你打算如何去做
  3. 如果现在有一个页面打不开, 你打算如何解决这个问题
  4. 请简单描述一下制作一个HTML页面的过程
  5. 请简单介绍一下什么是渐进增强和优雅降级
  6. 请简单介绍下HTML5相比HTML4有哪些区别
  7. 如何优化网站的性能
  8. HTTP基于TCP还是UDP? 为什么?
  9. HTTPS 和 HTTP有什么区别?
  10. 常见的HTTP请求头和HTTP相应头有哪些?
  11. 简单介绍下 web 缓存?
  12. 为什么有时候都是一个图片url, 有的会直接在浏览器显示, 有的却是弹出下载框?
  13. 简单介绍下什么是DNS
  14. 什么是cookie, 有什么用? 什么是session, 和cookie相比有什么区别?
  15. 常见的 HTTP 状态码 有哪些?
  16. 常见的 HTTP方法有哪些? PUT和POST有什么区别?
  17. 什么是 RESTful web service? 和其他的 web service有什么区别?
  18. HTTP 1.1 相对于 HTTP 1.0 有什么改进?
  19. HTTP 2.0 相对于 HTTP 1.1 有什么改进?
  20. 常见的 web 服务器有哪些?
  21. 简单介绍一下 web 服务器的工作流程?
  22. 简单介绍一下 什么是 web 代理?
  23. 什么是 VPN, 什么是 GFW
  24. 有哪些 HTTP响应头和 缓存有关, 并且有什么关系?
  25. 知道什么是 爬虫吗? 知道 robots.txt文件吗?
  26. 什么是 CDN, 什么是反向代理, 什么是 负载均衡?

12 类库相关

  1. 用过哪些js的库? 分别是什么用途?
  2. 有遇到类库的bug吗? 怎么解决的?
  3. jQuery最新版 版本号是多少? 最新版中新增了哪些新功能或者修改了哪些bug?
  4. 前端 mvc 有了解吗? 用过哪些类库?
  5. MVVM 听说过吗? 和 mvc相比有什么优点? 有什么缺点?
  6. 前端项目构建一般有哪些过程, 用过哪些工具?
  7. 什么是 single page web app, 用到了哪些技术?
  8. jQuery支持哪些选择器?
  9. jQuery的 $ 函数可以接受哪几种参数, 分别有什么用途?
  10. 如何使用 jQuery修改HTML元素的属性, 如何修改元素的CSS属性?
  11. 使用 jQuery 向HTML中插入元素有哪几种方法, 删除元素有哪几种方法?

13 小项目

  1. 实现一个简单的事件订阅库?
  2. 实现一个简单的promise?
  3. 实现 [].map, [].filter, [].reduce, [].some
  4. 写一个简单的 jQuery插件, 插件的作用是当点击一个button, 3秒钟后, 弹出button的文字
  5. 写一个简单的 遮罩层, 包含html, css和简单的js
  6. 写一个模拟的select控件
  7. 写一个简单的富文本编辑器