本帖最后由 xiaobluesky 于 2011-09-26 10:19:55 编辑

解决方案 »

  1.   

    1、写一个SOCKET 把www.baidu.com首页的内容读取下来
    不懂。。
    2、熟悉TOMCAT么..说说TOMCAT的线程池实现..
    不懂。。
    3、熟悉连接池么..说说连接池的实现思路和方式
    当程序启动的时候,创建多个数据库的连接,并把连接放入到连接池中,当要操作数据库的时候,从连接池中获取连接来操作数据库,操作结束之后不关闭连接,而是把连接放入到连接池中。这样可以减少创建和销毁连接所产生的开销,提高效率。
    4、servlet是线程安全的么..如果不是,在高并发环境下,代码的编写要注意哪些地方?
    不是线程安全的,不要对servlet的成员变量进行修改操作,如果要操作,需要使用synchronized修饰
    5、Struts中Action是线程安全的吗?如果不是,请说出理由.在Struts可以定义静态变量吗? 
    不是,struts是用ActionServlet类来拦截客户端请求的(在web.xml里配置),ActionServlet也是servlet
    6、hibernate的session是线程安全的么?如果是,实现机制是什么?
    不懂
    7、SPRING事务的属性有哪些?其中,事务隔离级别有哪几种?什么情况需要使用这几种事务隔离级别?
    不懂
    8、你们项目的并发问题的解决策略是什么?
    加synchronizd,不修改类属性
    9、了解ORACLE的锁么?说说锁机制。
    不懂
    10、是否熟悉ORACLE的优化,如果现在的我的硬盘灯一直在闪的话,怎么有优化,说说思路.
    不懂
      

  2.   

    1、写一个SOCKET 把www.baidu.com首页的内容读取下来这不过是一个最简单http的协议[获取页面的get],直接使用socket模拟协议内容就能实现.2、熟悉TOMCAT么..说说TOMCAT的线程池实现..概念性问题,请百度.3、熟悉连接池么..说说连接池的实现思路和方式概念性问题,请百度.4、servlet是线程安全的么..如果不是,在高并发环境下,代码的编写要注意哪些地方?概念性问题,请百度.5、Struts中Action是线程安全的吗?如果不是,请说出理由.在Struts可以定义静态变量吗?  跟上面一个问题在同一个地方,(Struts1不是Struts2是)6、hibernate的session是线程安全的么?如果是,实现机制是什么?概念性问题,请百度.7、SPRING事务的属性有哪些?其中,事务隔离级别有哪几种?什么情况需要使用这几种事务隔离级别?概念性问题,请百度.8、你们项目的并发问题的解决策略是什么?b/s项目来说一般web并发都被容器自动处理了,要处理的也就是数据库并发和自己的线程并发,这方面实际经验才是重要的,但你也可以百度知道一些.并发需要关心的关键:1并发量;2.并发带来的问题(线程安全问题,锁问题)9、了解ORACLE的锁么?说说锁机制。概念性问题,请百度.10、是否熟悉ORACLE的优化,如果现在的我的硬盘灯一直在闪的话,怎么有优化,说说思路.
    硬盘灯一直在闪=大量i/o读写,思路就在如何i/o,应用数据库性能在乎的是运算,数据仓库在乎的是i/o不要指望能不思考就“获得”答案。
      

  3.   


    首先,谢谢你给百度打了这么多广告.. 我也觉得你面试的公司肯定都会在面试你的时候给你上百度..首先说明..这些面试题,只是分享 和 探讨..1、的确是一个简简单单的HTTP协议,考察的就是你对HTTP协议基础的理解..你能不百度写一个再说2、tomcat的源码,是一个很经典的学习资源,问这个问题更多的是想看你有没有再工作之余去提升自己。也看看你对线程这块只是的 深度 和 广度。3、连接池就不多说了..4、5的确是可以算一个问题,但开发中的线程安全仅仅是概念上的问题么?在高并发的环境下,我不知道一个SERVLET的成员变量会导致多少的问题。6、这个问题只是在考察threadlocal而已..但是前提你有没有去深究过..7、事务这块,也是非常重要的一部分,最基本的几种隔离级别你还需要百度,我不知道说什么了.8、这个只是在考察你的实际项目经验,以及你对自己项目这方面的理解,顺便我也想知道其他公司在这个方面是如何来处理的..更多的是想学习和交流9、oracle的锁机制..在并发环境中,也是必须要考虑的..很好的了解锁的机制,对于写出一个“安全”的程序,至关重要.10、数据库的优化问题,硬盘灯狂闪,的确是IO问题..但你觉得应用数据库不用在乎IO?呵呵,那我不知道你所谓的应用数据库是什么样的..索引,缓存,命中率,SQL的优化等..是哪个优秀的数据库不需要做的?最后,奉送一句:不要有了百度,就忘记了学习!
      

  4.   

    如果要操作,需要使用synchronized修饰
    这句话是什么意思?
      

  5.   

    http://topic.csdn.net/u/20110926/16/088cf8be-7c49-4f24-ad81-611caaebb1ff.html?116522012人人网校招山东济南java笔试,和大家分享下。。
      

  6.   

    1、写一个SOCKET 把www.baidu.com首页的内容读取下来import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.InputStreamReader;
    import java.net.URL;
    public class URLReader {
       public static void main(String[] args)
        {
            URL url=new URL("http://www.baidu.com");
            File writeFiel=new File("d:\\baidu.html");
            BufferedReader int=new BufferedReader(new InputStreamReader(rul.openStream()));
            BufferedWriter out=new BufferedWriter(new FileWriter(writeFile));
            String inputLine=null;
            while((inputLine=in.readLine())!=null)
            {
               out.write(inputLine);
            }
            out.flush();
            in.close();
            out.close();
        }
    }
    2、熟悉TOMCAT么..说说TOMCAT的线程池实现..
       不怎么熟3、熟悉连接池么..说说连接池的实现思路和方式
       (个人想法)创建建立一个默认数量的连接,当客户端请求数据,需要连接数据库时,连接池分配一个连接,当该连接在规定的时间里没有数据操时,进行释放,当连接池的连接数量已满,重新创建一定数量连接4、servlet是线程安全的么..如果不是,在高并发环境下,代码的编写要注意哪些地方?
       servlet是线程安全5、Struts中Action是线程安全的吗?如果不是,请说出理由.在Struts可以定义静态变量吗? 
       struts2 不是线程安全..................6、hibernate的session是线程安全的么?如果是,实现机制是什么?
       ....................7、SPRING事务的属性有哪些?其中,事务隔离级别有哪几种?什么情况需要使用这几种事务隔离级别?
       ................8、你们项目的并发问题的解决策略是什么?
    ................9、了解ORACLE的锁么?说说锁机制。
    ................10、是否熟悉ORACLE的优化,如果现在的我的硬盘灯一直在闪的话,怎么有优化,说说思路.
      

  7.   

    我个人习惯百度而已,看到这样的题目我没想到是讨论。这里面很多题目讨论进去并非几千字就可以说清楚的。
    1、我个人不会去记每一个协议的规范,你给我协议规范我可以手写代码出来
    2、tomcat的源码我没读,我更倾向将精力使用在我现在和即将面对的技术上。
    3、
    4、servlet可以避免线程安全问题
    5 2个版本差别很大,1源码很简单,理解线程后就能了解,而且我在看4问题时刚好有关于这个问题的,于是如此回答。
    6、看过线程安全,但我通常不使用hibernate
    7、这问题是在是到处都有说.我个人习惯人工控制事务,于是就不打算说什么。
    8、公司的处理方案很多,我个人也就只点到了并发的关键点。
    9、具体问题具体对待,无法一次概括。
    10、应用数据库更在乎处理性能,数据仓库更在乎I/O性能有想要了解以上这些问题的想法是很好的,但更多的事后需要具体问题具体看待。很多经验的获取只有通过实际项目才能深入了解,不是说别人经历过的项目讲解给你,你就能100%明白。ps:有时候去花8分的力气去做一完美解决方案 反而 不如之用2分力气做一个临时解决方案。
    pss:面试的目的并不一定是让面试者给出准确答案。
    psss:我最后那句话《不要指望能不思考就“获得”答案。》的重点在什么才是真正“获得”。
      

  8.   

    4、servlet是线程安全的么..如果不是,在高并发环境下,代码的编写要注意哪些地方?5、Struts中Action是线程安全的吗?如果不是,请说出理由.在Struts可以定义静态变量吗? 6、hibernate的session是线程安全的么?如果是,实现机制是什么?
    像这种问题第一问其实是白问,因为正常人都能根据后面的问题得出前面问题的答案,否则你后面的问题就毫无意义了
      

  9.   

    第六题   hibernate  session  是通过  ThreadLocal来避免线程安全问题的
      

  10.   


    你被PASS了...因为我们公司只让用google
      

  11.   

    my God 木有一个会……
      

  12.   


    恩,这么容易就通过了啊。(PASS 有通过的意思)。
    不过我对别人面试我基本没什么兴趣,我面试人只在乎如何回答我的问题,不在乎是否给我标准答案。
      

  13.   


    你写的代码自己检查过吗?writeFiel是什么,rul.openStream()又怎么说?
      

  14.   

    1、写一个SOCKET 把www.baidu.com首页的内容读取下来import java.nio.ByteBuffer;
    import java.nio.channels.SocketChannel;
    import java.nio.charset.Charset;
    import java.net.InetSocketAddress;
    import java.io.IOException;public class BaiduReader {
      private Charset charset = Charset.forName("GBK"); // 创建GBK字符集
      private SocketChannel channel;
      public void readHTMLContent() {
        try {
          InetSocketAddress socketAddress = new InetSocketAddress(
              "www.baidu.com", 80);
    //step1:打开连接
          channel = SocketChannel.open(socketAddress);
          //step2:发送请求,使用GBK编码
          channel.write(charset.encode("GET " + "/ HTTP/1.1" + "\r\n\r\n"));
          //step3:读取数据
          ByteBuffer buffer = ByteBuffer.allocate(1024); // 创建1024字节的缓冲
          while (channel.read(buffer) != -1) {
            buffer.flip(); // flip方法在读缓冲区字节操作之前调用。
            System.out.println(charset.decode(buffer));
            // 使用Charset.decode方法将字节转换为字符串
            buffer.clear(); // 清空缓冲
          }
        }
        catch (IOException e) {
          System.err.println(e.toString());
        }
        finally {
          if (channel != null) {
            try {
              channel.close();
            }
            catch (IOException e) {
            }
          }
        }
      }  public static void main(String[] args) {
        new BaiduReader().readHTMLContent();
      }
    }
      

  15.   

    [Quote=引用楼主 xiaobluesky 的回复:]
    1、写一个SOCKET 把www.baidu.com首页的内容读取下来
    看看 net API 通过 URL \读取2、熟悉TOMCAT么..说说TOMCAT的线程池实现..3、熟悉连接池么..说说连接池的实现思路和方式4、servlet是线程安全的么..如果不是,在高并发环境下,代码的编写要注意哪些地方?
     每个请求用一个线程运行一个servlet 实例处理请求 servlet 非线程安全,5、Struts中Action是线程安全的吗?如果不是,请说出理由.在Struts可以定义静态变量吗?     Action线程安全
    ……
      

  16.   


    呵呵,对的.. 关键就是 
    channel.write(charset.encode("GET " + "/ HTTP/1.1" + "\r\n\r\n"));
      

  17.   

    哥们热心, 不过要是考应用层的话, 这方法行不通.
    应用层用17楼的. 不过17楼那哥们思路是对的, 就是没写对.. URL得调用OPENCONNECTION才可以得到连接对象, 然后利用连接对象获取InputStream. 接下来, 你懂.
      

  18.   

    ....
    1.17L用的是URL 不算是用Socket(我觉得面试官除了考你如果使用Socket还在考验你是否熟悉HTTP报文格式)
    2.我不太熟悉这个
    3.熟悉 实现方式很多 简单的有 复杂的也有 具体的我会在面试的时候阐述
    4.非线程安全 具体的我会在面试的时候阐述
    5.非线程安全 不过struts2为每次请求创建一个Action对象(如果你通过其他途径创建Action对象 比如用Spring管理 而且你还将scope设置为单例 那就不是每次请求创建了) 具体的我会在面试的时候阐述
    6.不清楚 我都不知道他这个题主要是针对哪个问的 具体的我会在面试的时候阐述
    7.不知道
    8.什么情况下的并发?具体的我会在面试的时候阐述
    9.不了解
    10.不知道人总有擅长和不擅长的 谁都不是全能选手 所以不会的东西就说不会 会的东西就写的好一点
    再者,这一类题我很少用手写 因为有些题的意义不明 这样的话也就没有标准答案 我如果在去面试的时候遇到类似的笔试题我会直接申请与对方的技术人员交流在面试的时候谈这些事情(也有不接受的 那样我就没什么兴趣了) 相信我 这样的话 给对方留下的印象会更深刻的
      

  19.   

    看到这些面试题,明年就要实习的我感觉压力很大啊,很多东西虽然还是明白点,但是让我说我还真说不出来。socket读取百度首页内容的那个我尝试写了一下,发现很多自己以前不注意的问题。给大家分享一下代码,欢迎指正
    package httppraser;import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.PrintWriter;
    import java.net.Socket;
    import java.net.UnknownHostException;public class BaiduSocket { public static void main(String[] args) {
    Socket socket = null;
    InputStream is = null;
    FileOutputStream fos = null;
    PrintWriter out = null;

    try {
    socket = new Socket("www.baidu.com", 80);
    System.out.println("成功建立连接.....");
    out = new PrintWriter(socket.getOutputStream());
    out.println("GET / HTTP/1.1");
    out.println("Host: www.baidu.com:80");
    out.println("Connection: Close");
    out.println();
    out.flush();
    System.out.println("请求结束");
    is = socket.getInputStream();
    fos = new FileOutputStream(new File("E:/baidu.txt"));
    byte[] bytes = new byte[1024];
    int count = -1;
    StringBuffer buf = new StringBuffer();
    while ((count = is.read(bytes,0,bytes.length)) != -1) {

    fos.write(bytes, 0, count);
    buf.append(new String(bytes,0,count));
    //System.out.println(new String(bytes,0,count));
    }
    String content = buf.toString();
    //是否打印响应头信息,如果要打印头信息注释掉下面这行代码
    content = content.substring(content.indexOf("<"));
    System.out.println(content);
    } catch (UnknownHostException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } finally {
    try {
    if(out != null) {
    out.close();
    }
    if (is != null) {
    is.close();
    }
    if (fos != null) {
    fos.close();
    }
    if(socket != null) {
    socket.close();
    }
    } catch(IOException e) {
    e.printStackTrace();
    }
    }

    }}
      

  20.   


    这个读取百度首页的方法不太符合要求吧,并没有开socket流,而是使用jdk自带封装类进行读取的
      

  21.   

    线程、IO、socket、事务。基本就这几个,基础理解清楚就可以了。
      

  22.   

    技术性的  还是google吧
      

  23.   

    1、写一个SOCKET 把www.baidu.com首页的内容读取下来
    分为doGet请求和doPost请求
    public final class NetWww {
    private static Log log = LogFactory.getLog(NetWww.class); /**
     * 执行一个HTTP GET请求,返回请求响应的HTML
     * 
     * @param url
     *            请求的URL地址
     * @return 返回请求响应的HTML
     * @throws IOException
     */
    public static String doGet(String url) throws IOException {
    String response = null;
    HttpClient client = new HttpClient();
    HttpMethod method = new GetMethod(url);
    try { client.executeMethod(method);
    if (method.getStatusCode() == HttpStatus.SC_OK) {
    response = method.getResponseBodyAsString();
    } } catch (IOException e) {
    e.printStackTrace();
    throw new IOException("执行HTTP doget请求" + url + "时,发生异常!", e);
    } finally {
    method.releaseConnection();
    }
    return response;
    } /**
     * 执行一个HTTP POST请求,返回请求响应的HTML
     * 
     * @param url
     *            请求的URL地址
     * @return 返回请求响应的HTML
     * @throws IOException
     */ public static String doPost(String url) throws IOException {
    String response = null;
    HttpClient client = new HttpClient();
    HttpMethod method = new PostMethod(url);
    try {
    client.executeMethod(method);
    if (method.getStatusCode() == HttpStatus.SC_OK) {
    response = method.getResponseBodyAsString();
    }
    } catch (IOException e) {
    e.printStackTrace();
    throw new IOException("执行HTTP dopost请求" + url + "时,发生异常!", e);
    } finally {
    method.releaseConnection();
    } return response;
    } public static void main(String[] args) throws IOException {
    x=doGet("http://www.hao123.com/");
    System.out.println(x);
    }
    }