Mengdong的技术博客

学习,记录,分享

导航

腾讯实习面试(二)

昨天进行了二面,记录如下:

1. HTTP请求的生命周期?

我以Tomcat+Servlet为例进行的说明。

一些简要背景:

1) Servlet在web.xml中配置,每个Servlet与一个确定的url pattern绑定
2) Servlet需要实现对应的HTTP请求处理方法,如post对应doPost, get对应doGet, head对应doHead等
3) 处理HTTP请求时,可以访问和修改一些保存了HTTP请求上下文信息的全局变量,例如cookie, session, request, response等

所以可以简要归纳如下:

1) HTTP服务器捕获HTTP请求
2) 请求中包含URL,根据web.xml中定义的url pattern-Servlet分发规则,将请求分发给具体的Servlet处理
3) 请求中包含了一些上下文信息,例如url-encode过的参数、cookie等,被包装进对应的上下文信息容器对象,作为参数传给Servlet的HTTP请求处理方法
4) HTTP服务器执行Servlet中定义的HTTP请求处理方法后,根据改变后的上下文信息构造响应HTTP报文,反馈给客户端

自己想出来的,表述可能有不规范之处,但大致的过程正确。

2. 多线程读者/写者问题:现在有一个队列,队首出列,队尾追加。有1个写者线程,4个读者线程,如何保证操作的正确性?请写出Java代码。

典型的信号量P/V操作问题:读者/写者通过两个信号量full/empty同步,读者间通过mutex获取对队列的操作,保证出列操作正确性。详见操作系统相关书籍。

Java中提供了Semaphore类,位于java.util.concurrent包中。C/C++可以使用sem_wait和sem_post方法。

其他问题都比较水,在这里就不写了。

备注:进入HR终面,下午再次奔赴市区。

posted on 2011-05-12 11:03  mdyang  阅读(620)  评论(0编辑  收藏  举报