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

  • 相关阅读:
    java连接Ldap
    REGEXP_LIKE,REGEXP_INSTR,REGEXP_SUBSTR,REGEXP_REPLACE
    正则表达式学习笔记
    旋转的播放按钮
    折叠table中的tr
    css选择器.md
    清除浮动.md
    jquery-validate使用.md
    EL表达式.md
    C标签的使用.md
  • 原文地址:https://www.cnblogs.com/mdyang/p/2044134.html
Copyright © 2011-2022 走看看