前端面试题(12)答案版

112 阅读2分钟
  1. H5的新特性?

    1. 更加语义化的标签,如

      、、等,便于网页结构的表达。

    2. 新的多媒体标签,如和,支持本地视频和音频的播放。

    3. 本地存储API,如localStorage和sessionStorage,用于在客户端保存数据。

    4. 离线web应用程序缓存,允许网页在断网情况下继续访问。

    5. 地理位置API,可以获取用户的地理位置信息。

    6. 拖放API,支持在网页中进行拖放操作。

    7. Canvas 2D绘图API,可以在网页中动态绘制图形。

  2. 事件循环(EventLoop)?

    1. 检查宏任务队列(如setTimeout)中是否有可执行的任务,如果有则执行。

    2. 执行完所有宏任务后,检查微任务队列(如Promise.then)是否有待执行的任务,依次执行。

    3. 执行完微任务后,如果有需要重新渲染的DOM变化,则进行页面重新渲染。

    4. 重复上述步骤,进入下一个事件循环。

  3. setTimeout和setImmediate?

    • setTimeout是宏任务,会被添加到宏任务队列中,在事件循环的宏任务阶段执行。

    • setImmediate是Node.js中的特有API,属于微任务,会被添加到微任务队列中,在事件循环的微任务阶段执行。

    -所以在Node.js环境中,setImmediate会先于setTimeout执行。

  4. 环境变量配置?

    可以通过process.env来访问和设置环境变量。在不同的操作系统上,设置环境变量的方式有所不同,比如在Windows上使用set命令,在Unix/Linux上使用export命令。在前端开发中,通常会在构建过程中注入一些环境变量,比如API接口地址、版本号等。

  5. Git工作流?

    1. 主干开发模型(Git Flow):使用master/develop/feature等分支。

    2. GitHub Flow:以master分支为主,每个功能单元一个分支,pull request合并。

    3. GitLab Flow:在GitHub Flow的基础上,增加了环境分支。

    4)具体流程包括:创建分支 -> 提交修改 -> 推送分支 -> 发起合并请求 -> 代码审查 -> 合并到主干。

  6. 登录工作流?

    1. 传统的表单提交方式,后端返回session ID,前端保存。

    2. 基于token的认证,前端获取token并保存在cookie或localStorage中。

    3. 单点登录(SSO),通过第三方认证服务完成登录。

    4. 基于OAuth2.0的认证授权,如微信登录、Github登录等。

  7. JavaScript中的堆栈?

    • 1)值类型包括number、string、boolean、null、undefined、symbol,存储在栈内存中。

    • 2)引用类型如object、array、function,存储在堆内存中,变量只是保存了对象的引用。

    • 3)这种区别会影响到变量的赋值和比较行为。在前端面试中,考察这些基本概念是非常常见的。