自问
- 什么是闭包?有什么作用?
- 什么是原型链?如何实现继承?
- 什么是事件循环?如何理解异步编程?
- 什么是跨域?如何解决跨域问题?
- 什么是虚拟 DOM?如何实现?
- 什么是 webpack?如何使用 webpack 进行打包?
- 什么是 MVVM?如何理解 Vue.js 的响应式原理?
- 什么是 XSS 攻击?如何防范?
- 什么是 CSRF 攻击?如何防范?
- 什么是 WebAssembly?如何使用?
回答
- 闭包是指函数可以访问其外部作用域中的变量,即使函数在外部作用域之外被调用。闭包可以用于封装变量和方法,以及实现模块化和私有变量等功能。
- 原型链是 JavaScript 中实现继承的机制,每个对象都有一个原型对象,可以通过原型链访问其原型对象的属性和方法。实现继承可以通过将子类的原型对象指向父类的实例来实现。
- 事件循环是 JavaScript 中实现异步编程的机制,通过将任务分为同步任务和异步任务,将异步任务放入任务队列中,在主线程执行完同步任务后,从任务队列中取出异步任务执行。异步编程可以提高程序的性能和用户体验。
- 跨域是指在浏览器中,一个网页的脚本试图访问另一个网页的资源时,由于浏览器的同源策略,会被阻止。跨域问题可以通过 JSONP、CORS、代理服务器等方式解决。
- 虚拟 DOM 是指通过 JavaScript 对象模拟真实 DOM,通过比较新旧虚拟 DOM 的差异,最小化 DOM 操作,提高页面渲染性能。实现虚拟 DOM 可以通过手写或使用第三方库如 React 等。
- webpack 是一个模块打包工具,可以将多个模块打包成一个文件,提高页面加载速度。使用 webpack 可以通过配置文件指定入口文件、输出文件、加载器、插件等。
- MVVM 是指 Model-View-ViewModel 的架构模式,将视图和数据分离,通过 ViewModel 实现双向绑定,当数据发生变化时,视图自动更新。Vue.js响应式原理是指 Vue.js 中通过 Object.defineProperty() 方法实现数据劫持,当数据发生变化时,自动触发视图更新。
- XSS 攻击是指攻击者通过注入恶意脚本,获取用户的敏感信息或控制用户的浏览器。防范 XSS 攻击可以通过对用户输入进行过滤和转义,以及使用 CSP 等方式。
- CSRF 攻击是指攻击者通过伪造用户请求,实现对用户账户的操作。防范 CSRF 攻击可以通过使用 token、验证码、Referer 检查等方式。
- WebAssembly 是一种新的二进制格式,可以在浏览器中运行高性能的编译语言,如 C、C++、Rust 等。使用 WebAssembly 可以提高程序的性能和安全性。
自问
- 什么是 WebRTC?如何实现实时通信?
- 什么是 Service Worker?如何使用 Service Worker 实现离线缓存?
- 什么是 PWA?如何实现 PWA?
- 什么是 WebAuthn?如何使用 WebAuthn 实现身份认证?
- 什么是 WebVR?如何使用 WebVR 实现虚拟现实?
- 什么是 WebGPU?如何使用 WebGPU 实现高性能图形渲染?
- 什么是 WebAssembly?如何使用 WebAssembly 实现高性能计算?
- 什么是 Web Components?如何使用 Web Components 实现组件化开发?
- 什么是 GraphQL?如何使用 GraphQL 实现 API 开发?
回答
- WebRTC 是一种实现浏览器之间实时通信的技术,可以实现视频、音频、数据等的传输。WebRTC 可以通过浏览器内置的 API 实现,包括 getUserMedia、RTCPeerConnection、RTCDataChannel 等。
- Service Worker 是一种在浏览器后台运行的脚本,可以拦截和处理网络请求,实现离线缓存、消息推送等功能。使用 Service Worker 可以通过注册 Service Worker、监听 fetch 事件等方式实现离线缓存。
- PWA 是指 Progressive Web App,是一种结合 Web 技术和移动应用的开发模式,可以实现类似原生应用的体验。实现 PWA 可以通过添加 manifest.json 文件、使用 Service Worker 实现离线缓存、添加 Web App Manifest 等方式。
- WebAuthn 是一种基于公钥加密的身份认证标准,可以实现无密码登录、多因素认证等功能。使用 WebAuthn 可以通过 navigator.credentials.create() 和 navigator.credentials.get() 方法实现身份认证。
- WebVR 是一种在浏览器中实现虚拟现实的技术,可以通过 VR 头盔等设备实现沉浸式体验。使用 WebVR 可以通过添加 VR 设备、创建场景、添加交互等方式实现虚拟现实。
- WebGPU 是一种在浏览器中实现高性能图形渲染的技术,可以实现更快的图形渲染和更低的功耗。使用 WebGPU 可以通过创建 GPU 设备、创建渲染管线、绑定数据等方式实现高性能图形渲染。
- 使用 WebAssembly 可以实现高性能计算,可以将 C、C++、Rust 等编译成 WebAssembly 模块,在浏览器中运行。使用 WebAssembly 可以通过编写 C、C++、Rust 等高性能语言实现计算密集型任务,如图像处理、游戏开发等。
- Web Components 是一种实现组件化开发的技术,可以将 HTML、CSS、JavaScript 封装成自定义元素,实现组件的复用和封装。使用 Web Components 可以通过编写自定义元素、使用 Shadow DOM、添加模板等方式实现组件化开发。
- GraphQL 是一种 API 查询语言,可以通过定义数据模型和查询语句,实现前后端数据交互。使用 GraphQL 可以通过定义 Schema、编写 Resolver、执行查询等方式实现 API 开发。
git action使用限制
GitHub Actions使用GitHub托管的runner时,存在一些限制。这些限制可能会发生变化。
注意:对于自托管的runner,适用不同的使用限制。有关更多信息,请参见“关于自托管的runner”。
作业执行时间 - 工作流中的每个作业可以运行最多6小时的执行时间。如果作业达到此限制,作业将终止并失败。
工作流运行时间 - 每个工作流运行限制为35天。如果工作流运行达到此限制,则工作流运行将被取消。此期间包括执行持续时间和等待和批准时间。
API请求 - 您可以在一个小时内在存储库中的所有操作中执行最多1000个GitHub API请求。如果超过请求,则其他API调用将失败,这可能会导致作业失败。
并发作业 - 您可以在帐户中运行的并发作业数量取决于您的GitHub计划以及使用的runner类型。如果超过,则会排队任何其他作业。
标准GitHub托管的runner
GitHub计划 总并发作业数 最大并发macOS作业数 免费 20 5 专业版 40 5 团队 60 5 企业 500 50 GitHub托管的较大runner
GitHub计划 总并发作业数 最大并发macOS作业数 全部 500 不适用 注意:如果需要,企业计划的客户可以请求更高的并发作业限制。有关更多信息,请联系GitHub企业支持或您的销售代表。
作业矩阵 - 作业矩阵可以生成每个工作流运行的最多256个作业。此限制适用于GitHub托管和自托管的runner。
工作流运行队列 - 每个存储库每10秒