阿里前端面试深度解析:HTTP、Cookie与Web技术

需积分: 0 0 下载量 41 浏览量 更新于2024-07-01 收藏 5.51MB PDF 举报
"阿里前端面试(含答案)1" 这篇资源涵盖了广泛的前端技术知识点,主要集中在HTTP协议、浏览器工作原理、Web存储以及前端优化等方面。以下是相关知识点的详细说明: 1. **HTTP/HTTPS**: HTTP是无状态的、基于文本的协议,用于传输Web数据,而HTTPS是在HTTP上加了一层SSL/TLS加密,提供更安全的数据传输。 2. **TCP三次握手**: TCP连接建立过程,确保双方都有能力进行通信,避免了数据丢失或错误传输。 3. **TCP和UDP的区别**: TCP是面向连接的、可靠的传输协议,而UDP是无连接的、不可靠的,但速度更快。 4. **WebSocket**: 实现持久化连接,允许服务器主动向客户端推送数据,常用于实时应用。 5. **HTTP请求方式**: 包括GET、POST、PUT、DELETE等,HEAD方式只获取响应头,不返回实体内容。 6. **图片URL直接下载**: 通过设置Content-Disposition响应头为attachment,可以触发浏览器下载行为。 7. **Web Quality(无障碍)**: 关注网站可访问性,确保残障人士也能正常浏览。 8. **BOM(浏览器对象模型)属性和方法**: 涉及到window对象、navigator对象、location对象等,用于浏览器级别的交互。 9. **HTML5 Drag API**: 允许用户通过拖放操作来移动元素或数据。 10. **HTTP/2.0**: 提供多路复用、二进制分帧等特性,提高了HTTP性能。 11. **状态码400、401、403**: 分别表示请求错误、未授权、禁止访问,分别对应不同的客户端错误情况。 12. **fetch发送两次请求**:预检请求(CORS)和实际请求,确保跨域安全。 13. **Cookie、sessionStorage、localStorage区别**:Cookie用于跨页面共享数据,有大小和安全限制;sessionStorage同源同窗口共享,关闭即清除;localStorage持久化存储,无大小限制但不安全。 14. **Web Worker**:在后台线程执行脚本,提高处理密集型任务的能力。 15. **HTML语义化标签**:如<header>、<nav>、<article>等,帮助搜索引擎理解和渲染网页内容。 16. **iframe**:用于在页面内嵌入另一个页面,但可能导致加载性能问题和安全性风险。 17. **DOCTYPE**:声明文档类型,影响浏览器解析模式。严格模式遵循标准,混杂模式兼容旧规范。 18. **Cookie防范XSS攻击**:通过设置HttpOnly标志,防止JavaScript访问Cookie,减少跨站脚本攻击。 19. **Cookie和Session区别**:Cookie存储在客户端,大小有限且存在安全风险;Session存储在服务器端,更安全但可能增加服务器负载。 20. **RESTful**:代表表述性状态转移,设计API的一种风格,强调资源和状态操作。 21. **Viewport和移动端布局**:Viewport是移动设备的可视区域,移动端布局通常采用响应式设计适应不同屏幕尺寸。 22. **300ms点击延迟**:iOS上的点击延迟问题,可通过添加FastClick库或其他技术优化。 23. **addEventListener参数**:除了事件处理函数外,还可以接受useCapture和passive标志,用于控制事件处理顺序和阻止滚动优化。 24. **缓存策略**:强缓存使用Expires或Cache-Control: max-age,不与服务器交互;协商缓存使用If-None-Match或If-Modified-Since,询问服务器资源是否更新。 25. **304状态码**:表示客户端有缓存,资源未修改,服务器无需返回完整响应。 26. **GET和POST的区别**:GET用于获取数据,数据在URL中可见,POST用于提交数据,数据在请求体中。 27. **301和302重定向**:301永久重定向,302临时重定向,前者用于URL变更,后者用于临时跳转。 28. **HTTP支持的方法**:除了常见的GET、POST,还有PUT、DELETE、HEAD、OPTIONS等。 29. **HTTP头部**:包括Cache-Control、Content-Type、Set-Cookie等,控制请求和响应的行为。 30. **HTTP状态码**:如200表示成功,404表示未找到,500表示服务器错误。 31. **前端优化**:包括代码压缩、懒加载、CDN、减少HTTP请求、缓存利用等,提升页面加载速度和用户体验。 这些知识点是前端开发者必须掌握的基础,也是面试中常见的问题。深入理解并能灵活运用这些概念和技术,对于成为一名优秀的前端工程师至关重要。