js

1. JS由哪三部分组成?

  • ECMAScript:核心语法和规则
  • DOM(文档对象模型):操作HTML文档的接口
  • BOM(浏览器对象模型):与浏览器交互的接口

2. JS有哪些内置对象?

  • 基本对象:Object、Function、Array、String、Number、Boolean、Date、RegExp
  • 错误对象:Error、EvalError、RangeError等
  • 全局对象:Math、JSON
  • 其他:Symbol、Map、Set、Promise等

3. 操作数组的方法有哪些?

  • 修改原数组:push、pop、shift、unshift、splice、sort、reverse
  • 不修改原数组:concat、slice、map、filter、reduce、forEach
  • 查找:indexOf、lastIndexOf、find、findIndex

4. JS对数据类型的检测方式有哪些?

  • typeof:检测基本数据类型
  • instanceof:检测对象类型
  • constructor:通过构造函数判断
  • Object.prototype.toString.call():最准确的检测方法

5. 说一下闭包,闭包有什么特点?

  • 定义:函数可以访问并操作其外部作用域中的变量
  • 特点
    • 可以访问外部函数的变量
    • 变量不会被垃圾回收
    • 可以创建私有变量

6. 前端的内存泄漏怎么理解?

  • 定义:程序中已动态分配的堆内存由于某种原因未释放或无法释放
  • 常见原因
    • 意外的全局变量
    • 被遗忘的定时器
    • 未清理的DOM引用
    • 闭包使用不当

7. 事件委托是什么?

  • 概念:利用事件冒泡机制,将事件监听器添加到父元素上,通过事件冒泡来处理子元素的事件
  • 优点:减少内存占用、动态绑定事件

8. 基本数据类型和引用数据类型的区别?

  • 基本类型:存储在栈中,值不可变,赋值时拷贝值
  • 引用类型:存储在堆中,赋值时拷贝引用地址

9. 说一下原型链。

  • 概念:每个对象都有一个内部属性[[Prototype]],指向其原型对象,形成链式结构
  • 作用:实现属性和方法的继承

10. new操作符具体做了什么?

  1. 创建一个空对象
  2. 设置原型链
  3. 执行构造函数
  4. 返回对象

11. JS是如何实现继承的?

  • 原型链继承
  • 构造函数继承
  • 组合继承
  • 寄生组合继承
  • ES6 Class继承

12. JS的设计原理是什么?

  • 基于原型的面向对象
  • 单线程事件循环
  • 动态类型
  • 函数是一等公民

13. JS中关于this指向的问题

  • 全局环境:指向全局对象
  • 函数调用:非严格模式指向全局对象,严格模式为undefined
  • 对象方法:指向调用对象
  • 构造函数:指向实例对象
  • 箭头函数:继承外层作用域的this

14. script标签里的async和defer有什么区别?

  • async:异步加载,加载完立即执行
  • defer:异步加载,等待DOM解析完成后执行

15. setTimeout最小执行时间是多少?

  • HTML5标准规定为4ms,但实际浏览器实现可能不同

16. ES6和ES5有什么区别?

  • ES6引入了let/const、箭头函数、类、模块等新特性
  • 语法更简洁,功能更强大

17. ES6的新特性有哪些?

  • let/const
  • 箭头函数
  • 模板字符串
  • 解构赋值
  • Promise
  • Class
  • Module

18. call, apply, bind三者有什么区别?

  • call:立即执行,参数逐个传递
  • apply:立即执行,参数以数组形式传递
  • bind:返回新函数,不立即执行

19. 用递归的时候有没有遇到什么问题?

  • 栈溢出
  • 重复计算
  • 性能问题

20. 如何实现一个深拷贝?

// 使用JSON.parse(JSON.stringify())
// 使用递归实现
// 使用lodash的cloneDeep

21. 说一下事件循环。

  • 概念:JavaScript处理异步任务的机制
  • 流程:执行栈 → 微任务队列 → 宏任务队列

22. ajax是什么?怎么实现的?

  • 定义:异步JavaScript和XML,用于在后台与服务器交换数据
  • 实现:XMLHttpRequest或fetch API

23. get和post有什么区别?

  • GET:参数在URL中,长度限制,可缓存
  • POST:参数在请求体中,无长度限制,不可缓存

24. promise的内部原理是什么?它的优缺点是什么?

  • 原理:状态机(pending、fulfilled、rejected)
  • 优点:解决回调地狱
  • 缺点:无法取消,错误处理复杂

25. promise和async await的区别是什么?

  • Promise:链式调用
  • async/await:同步写法,更易读

26. 浏览器的存储方式有哪些?

  • localStorage
  • sessionStorage
  • cookie
  • indexedDB

27. token存在sessionstorage还是localstorage?

  • 通常存在localStorage中,但需考虑安全因素

28. token的登录流程。

  1. 用户登录
  2. 服务器验证并返回token
  3. 客户端存储token
  4. 后续请求携带token

29. 页面渲染的过程是怎样的?

  1. 解析HTML构建DOM树
  2. 解析CSS构建样式树
  3. 合并DOM树和样式树构建渲染树
  4. 布局计算
  5. 绘制

30. DOM树和渲染树有什么区别?

  • DOM树:完整的HTML结构
  • 渲染树:只包含可见元素,包含样式信息

31. 精灵图和base64的区别是什么?

  • 精灵图:将多个小图合并为一张大图
  • base64:将图片转换为文本编码

32. svg格式了解多少?

  • 矢量图形格式
  • 基于XML
  • 可缩放不失真
  • 支持动画和交互

33. 了解过JWT吗?

  • 定义:JSON Web Token,用于身份验证
  • 结构:头部.载荷.签名

34. npm的底层环境是什么?

  • 基于Node.js的包管理器

35. HTTP协议规定的协议头和请求头有什么?

  • 请求头:User-Agent、Content-Type等
  • 响应头:Content-Type、Cache-Control等

36. 说一下浏览器的缓存策略。

  • 强缓存:Expires、Cache-Control
  • 协商缓存:Last-Modified/If-Modified-Since、ETag/If-None-Match

37. 说一下什么是"同源策略"?

  • 定义:协议、域名、端口都相同才允许通信
  • 目的:防止恶意网站窃取数据

38. 防抖和节流是什么?

  • 防抖:事件触发后延迟执行,新事件会重置延迟
  • 节流:固定时间间隔内只执行一次

39. 解释一下什么是json?

  • 定义:JavaScript对象表示法,轻量级数据交换格式
  • 特点:易于人阅读和编写,机器解析和生成

40. 当数据没有请求过来的时候,该怎么做?

  • 显示loading状态
  • 提供默认值
  • 错误处理和重试机制

41. 有没有做过无感登录?

  • 通过token自动刷新实现
  • 利用localStorage存储用户信息

42. 大文件上传是怎么做的?

  • 分片上传
  • 断点续传
  • 并行上传多个分片
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容