zoukankan      html  css  js  c++  java
  • 腾讯实习面试(二)

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

    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终面,下午再次奔赴市区。

  • 相关阅读:
    CodeForces Gym 100500A A. Poetry Challenge DFS
    CDOJ 486 Good Morning 傻逼题
    CDOJ 483 Data Structure Problem DFS
    CDOJ 482 Charitable Exchange bfs
    CDOJ 481 Apparent Magnitude 水题
    Codeforces Gym 100637G G. #TheDress 暴力
    Gym 100637F F. The Pool for Lucky Ones 暴力
    Codeforces Gym 100637B B. Lunch 找规律
    Codeforces Gym 100637A A. Nano alarm-clocks 前缀和
    TC SRM 663 div2 B AABB 逆推
  • 原文地址:https://www.cnblogs.com/mdyang/p/2044134.html
Copyright © 2011-2022 走看看