前端面试(二)

web前端综合问题

1. 讲讲输完网址按下回车,到看到网页这个过程中发生了什么?

  • 域名解析
  • 发起TCP的3次握手
  • 建立TCP连接后发起http请求
  • 服务器端相应http请求,浏览器得到html代码
  • 浏览器解析html代码,并请求html代码中的资源
  • 浏览器对页面进行渲染呈现给用户

2. 谈谈你对前端性能优化的理解

  • 请求数量: 合并脚本和样式表,CSS Sprites,拆分初始化负载,划分主域
  • 请求带宽: 开启GZip,精简JavaScript,移除重复脚本,图像优化,将icon做成字体
  • 缓存利用: 使用CDN,使用外部JavaScript和CSS,添加Expires头,减少DNS查找,配置ETag,使Ajax可缓存
  • 页面结构: 将样式放在顶部,将脚本放在底部,尽早刷新文档的输出
  • 代码校验: 避免css表达式,避免重定向 雅虎十四条
  • 减少HTTP请求
  • 使用CDN(content Delivery Network)内容分发网络
  • 增加Expires Header
    • 首次访问面临多次http请求,通过设置Expires Header,可以在客户端缓存这些元素(图像,脚本,样式表等)
  • 压缩页面元素
    • web客户端请求在http请求中通过Accept-encoding头来表明支持的压缩类型
  • 把样式表放在头上
  • 把脚本放在底部
  • 避免css表达式
  • 把JavaScript和CSS文件放在外部文件中
  • 减少DNS查询次数
  • 最小化JavaScript代码
  • 避免重定向
  • 删除重复的脚本文件
  • 配置ETags
    • Etag实体标签,是服务器告诉浏览器缓存,缓存中的内容是否已将发生变化的一种机制,需不需要重新下载
  • 缓存ajax

3. 前端MC*框架的意义

  • 早期的前端开发比较简单,基本是以页面为工作单元,内容以浏览为主,也偶有简单的表单操作,基本不太需要框架
  • ajax技术的出现,web2.0兴起,人们在页面上可以做更复杂的事情了,然后前端框架才真正出现。
  • 页面型产品,多数不太需要,因为页面的js代码处理交互的绝对远远超过模型的,但是如果是应用软件类产品,这就太需要了。长期做某个行业软件的公司一般都会沉淀下来一些业务组件,主要体现在数据模型,业务规则和业务流程,这些组建基本都存在于后端,在前端很少有相应的组织。
  • 从协作关系上讲,很多前端开发团队,是因为Model部分代码较少,View的相对较多一些,如果主要在操作View和Controller,那当然是jQuery比较好用了。

Recommended Posts