2011年9月23日,百度前端面试题对话记录(2)

   声明:时间有些久远,对话记录不是完整的,有些其实省略了很大部分的废话。


    面试官: 知道AJAX么?

    我:知道,(这里让我咬文嚼字的说概念是说出不来的)大概意思就是异步请求或提交数据而页面不进行跳转。

    面试官: 用AJAX,如何知道响应成功了?

    我:监听状态改变事件,判断返回值的状态码,一般是判断200和304状态妈。

    面试官:200和304分别代表什么意思?

    我:200表示成功响应,304表示内容未变更,读缓存。

    面试官:那么404,5XX之类的呢?

    我:404表示未找到,5XX表示服务器内部错误

    面试官:刚才说到了状态改变事件,那么AJAX状态有几种,你常用到那个状态?

    我:4种,一般都用状态4,completed。

    面试官:状态3表示什么意思?有用到过么?

    我:我记得是interactive,没有用过。

    面试官:嗯,是interactive,这样吧,假设让你做个时钟倒计时程序,现在很多网站都有那种秒杀的商品,下面都会有时钟倒计时的那种,你应该怎么设计?

    我:应该要配合服务端,客户端获取的时间是很容易被更改的,大概是从服务端生成一个标准时间,客户端获得这个时间响应,接着根据这个时间定时减少。但是因为存在网             络延迟这些因素,可能会导致时间会稍微有些误差,可以定时重新请求时间。

    面试官:有没有稍微更优化点的方法?你才也说了,会存在一些误差,能不能尽量减少这个误差,你的方法是从服务端脚本生成一个时间,有没有办法不通过脚本计算,而获                    得这个时间? 当然,服务端还是可以用的。

    我:(稍微想了想)HTTP头里应该有时间戳,可以读HTTP头吧。

    面试官:嗯,确实是这样,很多倒计时程序都会用服务端脚本生成时间戳,其实HTTP头部已经包含了,没必要继续用脚本了,直接返回就行。这也是刚才AJAX中的                                     interactive状态可以用到的地方。

    我:原来interactive状态就可以获得http头部内容了~!

    面试官:嗯,好了,继续下一个问题,对html标签语义有什么理解?

    我:每个html标签基本都有对应语义,比如p表示一个段落,a表示一个链接,li表示一个列表这样。

    面试官:嗯,那说说对em标签的理解。

    我:em表示的语义是强调,在浏览器中的表现是斜体。

    面试官:嗯,很好。 很多人在用em标签的时候,都用它来对文字做斜体处理,其实em是有语义的。

    

    面试小结

   第一次见识到了AJAX中intercative状态的用处,于是下面写了些简单的代码测试(没有做AJAX对象兼容):

<script type="text/javascript">
 var xhr = new XMLHttpRequest();
 xhr.open('get', 'testServer.txt', true); //这里的testServer.txt,其实我没有创建,完全可以不需要这个文件,我们只是要时间罢了
 xhr.onreadystatechange = function(){
     if(xhr.readyState == 3){ //状态3响应
	  var header = xhr.getAllResponseHeaders(); //获得所有的头信息
	  alert(header);//会弹出一堆信息
	  alert(xhr.getResponseHeader('Date')); //弹出时间,那么可以利用获得的时间做倒计时程序了。
     }
 }
 xhr.send(null);
</script>




没有更多推荐了,返回首页