测试题库 - 高级编程概念 1. 什么是时间复杂度?请简要说明。 答案:时间复杂度是用来衡量算法执行时间与输入规模之间关系的度量标准。它描述了算法运行时间如何随着输入数据规模的增长而增长。常见的时间复杂度有 O(1)、O(log n)、O(n)、O(n log n)、O(n²) 等。 解析:时间复杂度是算法分析的重要指标,帮助我们评估算法的效率。 2. 解释什么是闭包(Closure)。 答案:闭包是指一个函数能够记住并访问其词法作用域,即使这个函数在其词法作用域之外执行。闭包允许内部函数访问外部函数的变量,即使外部函数已经执行完毕。 解析:闭包在 JavaScript、Python 等语言中广泛应用,常用于数据封装和创建私有变量。 3. 数据库索引的作用是什么? 答案:数据库索引的主要作用是加快数据检索速度。索引类似于书籍的目录,可以让数据库快速定位到需要的数据,而不需要扫描整个表。索引可以显著提高查询性能,但会增加存储空间和降低写入性能。 解析:合理使用索引是数据库优化的关键,需要在查询性能和写入性能之间取得平衡。 4. RESTful API 的设计原则包括哪些? 答案:RESTful API 的主要设计原则包括:1) 使用 HTTP 方法(GET、POST、PUT、DELETE)表示操作;2) 资源用 URI 表示;3) 无状态通信;4) 统一的接口;5) 客户端-服务器分离;6) 可缓存性;7) 分层系统。 解析:遵循 REST 原则可以构建可扩展、易维护的 Web API。 5. 简述 Docker 容器化的优势。 答案:Docker 容器化的主要优势包括:1) 环境一致性,消除"在我机器上能运行"的问题;2) 轻量级,相比虚拟机启动更快、资源占用更少;3) 可移植性,可以在任何支持 Docker 的平台运行;4) 快速部署和扩展;5) 版本控制和回滚;6) 微服务架构支持。 解析:Docker 已成为现代应用部署的标准工具,极大提高了开发和运维效率。 6. 解释什么是 SQL 注入攻击,如何防范? 答案:SQL 注入是一种代码注入攻击,攻击者通过在输入中插入恶意 SQL 代码来操纵数据库。防范措施包括:1) 使用参数化查询(预处理语句);2) 输入验证和过滤;3) 最小权限原则;4) 使用 ORM 框架;5) 错误信息不暴露敏感信息;6) Web 应用防火墙。 解析:SQL 注入是最常见的 Web 安全威胁之一,使用参数化查询是最有效的防护方法。 7. 什么是 CORS?它解决了什么问题? 答案:CORS(跨域资源共享)是一种机制,允许浏览器向跨源服务器发出请求。它解决了浏览器的同源策略限制问题,使得前后端分离的应用可以安全地进行跨域通信。通过设置适当的 HTTP 响应头(如 Access-Control-Allow-Origin),服务器可以控制哪些域名可以访问资源。 解析:理解 CORS 对于开发现代 Web 应用至关重要,特别是前后端分离架构。 8. 简述 Git 的工作流程。 答案:Git 的基本工作流程包括:1) 工作区:修改文件;2) 暂存区(git add):将修改添加到暂存区;3) 本地仓库(git commit):提交更改到本地仓库;4) 远程仓库(git push):推送到远程仓库。常见操作还包括分支管理(git branch)、合并(git merge)、拉取(git pull)等。 解析:掌握 Git 是现代开发者的必备技能,理解其三区模型有助于更好地使用版本控制。