使用百度知道最上面一栏的百度信息看不到咋回事,其他浏览器就可以看到?

    关注技术领域的头条文章

    聚合全网技术文章,根据你的阅读喜好进行个性推荐

sina 新浪首页新闻

聚合全网技术文章,根据你的阅读喜好进行个性推荐

深圳市奥思网络科技有限公司版权所有

}

作为浏览器工程师,每每看到这类问题,都会觉得有点尬。如果你对浏览器以及计算机科学了解的越多,你会越发觉得这类问题实在是难以回答。

相信这种问题频繁地出现在许多面试中,我不知道面试官期望通过这个问题考察到什么,可能他们期望的答案正如你在网上能搜到的一般,大致输入网址后发生了:

  1. DNS解析域名到ip地址
  2. 服务器接受到请求进行处理
  3. 浏览器针对响应进行解码,获取到html
  4. 浏览器渲染html、构建dom节点、加载css、运行脚本

如果这是面试官想要的回答,那么你大可以把这里面每一步都再去了解的深一下。你越了解深入,你越会觉得浏览器输入网址后发生的事情真是涵盖了计算机网络技术发展这几十年来的所有的精髓,你随便展开其中某一步骤都足以触及到任何面试官的技术盲区,是的你没看错,是任何面试官。

所以我真的很想呼吁面试的时候别再问这道题了,上面写的只不过是看似标准的“标准答案”罢了。

我这里就不硬扛说输入网址先是由浏览器主进程接受键盘事件这种细活了,不然展开讲各浏览器进程架构又是一大篇。

就从DNS解析开始说吧,谁说了浏览器一定要进行DNS解析的?“标准答案”没有考虑到如果浏览器使用代理的情况,如果浏览器使用代理服务器,那么DNS解析的任务是由代理服务器完成的。使用代理服务器和不使用代理服务器是有很大差别的,用了代理后如果是HTTPS请求,那么浏览器会先发一个HTTP CONNECT明文请求给代理,由代理创建TLS隧道后,然后再盲发浏览器和服务器之间的数据,光是这个技术细节都有一大篇RFC标准可以读。

然后说第二步浏览器发送请求,谁说浏览器一定发送请求了?baidu我不知道,如果你试着在浏览器里输入,那么浏览器会默认你是HTTP协议,发送请求去http :// ,那么由于google已经禁用HTTP,所以服务器会返回你一个301重定向到https :// ,这是第一次访问会发生的事情。但是第二次你再输入,浏览器就不会发送请求去http :// 了,而是直接去访问https :// 。这里就牵涉到301重定向这个概念,很多人都知道302,307也是重定向,两者区别是301是Moved Permanently(永久被移除),意味着浏览器可以记住这结果,下次用户访问http :// 时,就不用发请求了,直接访问重定向的https地址吧。而302和307都是临时性的,浏览器不会再缓存里记录重定向的结果。

第三第四步服务器接受请求进行处理然后返回就有更多可以展开的,涉及到很多后端的架构体系,请求的资源是动态还是静态的,是不是有load balance,怎么route你这个请求,后端怎么样的缓存策略等等。

没想到这个问题还是获得了挺多关注和点赞。

其实正如很多人所说这是一道开放问题,但它的问题恰恰是因为太开放了,除非面试的职位就是做浏览器的(比如我所在的组),那么面试官可以从任意角度切入让面试者深入展开其中任意环节(其实做浏览器的也不是太在意服务器后端是怎么处理请求的,浏览器只在乎你回复了什么http状态码、头和主体)。不然的话还是问一些特定范围的和职位息息相关的开放问题都会比这道题来的好,比如:从前或后端角度谈谈网站性能优化,现有的http协议有哪些不足等。并且现在充斥着的这类“标准答案”往往也会让许多面试者甚至面试官有一种自己对浏览器很精通的错觉。其实根本不存在对浏览器很精通的人,即使浏览器的开发人员,大多也只是负责其中的某一部分。

}

我要回帖

更多关于 为什么群里收不到别人的信息 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信