devops相关面试题

  1. 1、发布10+ NPM包,熟悉NRM、NVM。 

1、谈谈你参与发布的NPM包,它们解决了什么问题,有什么特点?

NPM: 是 Node.js 默认的包管理工具

NRM:是 Node.js 源管理工具

NVM:Node.js 版本管理工具

我参与发布的NPM包为mk-form,它通过配置生成和验证复杂表单,简化前端表单开发流程;

二次开发copy-webpack-plugin,解决了运行后报错的问题,让项目成功在生产环境中完成构建。

2、NPM包发布需要注意什么?需要做哪些配置和操作?

1. package.json配置名称、版本、license等信息。 

2. README.md编写包使用文档。

3. .gitignore过滤不需要发布的文件。

4. 登录NPM账户并执行npm publish发布。

3、什么是SDK?SDK开发流程和一般软件开发有什么不同?

SDK是给开发者使用的开发包。SDK开发流程与一般软件开发流程相比,更注重:

1. 简单易用的API设计。

2. 完善的使用文档。

3. 功能精炼,单一目的。 

4. 版本管理与兼容。 

5. 快速迭代更新。 

  1. 2、熟练Node.js,用Koa和Express框架开发过服务端程序。

    1、什么是异步编程,Node.js如何实现异步IO?

异步编程是在完成一个任务时,允许程序执行其他任务,而不会造成程序等待。Node.js通过Callback实现异步IO,在IO阻塞时控制权交给事件循环,而不是等待IO完成。

​​​​​​​2、Koa和Express有什么区别?为什么会有两个框架?

异步流程控制:Koa采用了基于Promise的中间件处理方式,通过async/await语法提供更好的异步流程控制。这使得编写和管理异步代码更加简洁和可读,避免了回调地狱的问题。而Express则采用传统的回调函数风格,需要使用额外的工具库或技术来处理异步操作。

中间件系统:Koa的中间件系统相对更加精简和灵活。它采用了洋葱模型(onion model),允许开发者自由组合和定制中间件,以实现更细粒度的控制和处理请求。相比之下,Express的中间件系统相对更传统,提供了一组内置的中间件和路由系统,更适合简单和快速的开发。

错误处理:Koa在错误处理方面更加强大和灵活。它提供了一种机制来捕获和处理中间件链中的错误,并统一处理错误响应。这使得开发者能够更好地管理和处理应用程序中的错误情况。而Express在错误处理方面相对简单,需要开发者自己实现错误处理逻辑。

1. 更优雅的异步流程控制。Koa使用 async/await 和 Generator,让异步代码更像同步代码,易于阅读和维护。而Express需要嵌套多层回调来解决异步流程,难以维护。

2. 更优雅的错误处理。Koa使用try/catch捕获异步代码中的错误,简单易用。而Express需要在每个异步回调的第一个参数中定义错误处理逻辑,比较繁琐。

3、 服务端渲染和前端渲染有什么不同?如果要在Node.js程序中实现服务端渲染,需要注意什么?

服务端渲染是在服务器生成HTML并返回给客户端。前端渲染是客户端根据数据动态渲染页面。在Node.js中实现服务端渲染需要注意:

1. 渲染视图模板并且输出HTML字符串。

2. 将数据预填充至HTML中。 

3. 页面内资源路径等需要根据请求头中相对路径确定。

4. 客户端会重复渲染,需要在HTML中添加数据存储,在JS逻辑中判断是否需要再次渲染。

  1. 3、熟悉Nginx,设置过gzip压缩、缓存规则和SSL证书。

    1、Nginx的工作模式有哪些?每种工作模式的作用是什么?

Nginx的工作模式有:静态服务、反向代理、负载均衡和动态缓存等。

不同模式的作用分别为:提供静态文件服务、转发请求至后端应用、实现请求分发与平衡、通过缓存提高访问速度。

​​​​​​​2、如何配置Nginx实现SSL证书设置和HTTPS服务?

1. 申请SSL证书或自签名证书。

2. 在Listen指令中指定HTTPS协议和证书路径。

3. 使用ssl_certificate和ssl_certificate_key指定证书和私钥路径。

​​​​​​​3、缓存适用于哪些场景?需要考虑什么因素设置Nginx缓存规则?

缓存适用于访问频率高但内容变化少的场景,需要考虑:

1. 数据更新频率。 

2. 页面个性化需求。

3. CDN与浏览器缓存。

4. 缓存方式与过期规则。 

  1. 4、了解Jenkins、Docker,能自动化部署前端应用。

    1、Docker和虚拟机有什么区别?Docker的容器与镜像是什么关系?

Docker与虚拟机的区别在于Docker通过容器技术可以直接运行应用,不需要引入操作系统映像。而虚拟机需要运行操作系统。Docker容器依赖镜像,镜像是容器运行时的只读模板。

​​​​​​​2、Jenkins的主要功能是什么?如果要实现CI/CD,Jenkins需要安装哪些插件?

 Jenkins的主要功能是持续集成和持续交付。实现CI/CD需要安装:

1. Git插件:拉取代码。 

2. Maven插件:构建Java项目。

3. Docker插件:构建Docker镜像。 

4. Kubernetes插件:部署至K8S集群。

​​​​​​​3、什么是构建流水线?在Jenkins中如何创建和配置构建流水线?

构建流水线是将整个软件交付过程编排在一起的自动化工具链。在Jenkins中通过:

1. 创建Pipeline项目。 

2. 编写Jenkinsfile声明Pipeline流程。

3. 选择“Pipeline script from SCM”接管代码仓库中的Jenkinsfile。 

4. 配置构建触发器为“Webhook trigger for Gitiles SCM”自动触发Pipeline。

你可能感兴趣的:(#,DEVOPS,devops,运维)