zoukankan      html  css  js  c++  java
  • 面试题1

    1.servlet生命周期

       servlet生命周期分为三个阶段:

      1)初始化阶段,调用init()函数。

      2)响应客户请求阶段,调用service()函数。

      3)终止阶段,调用destory()函数。

    2.servlet是线程安全的吗?

    servlet不是线程安全的,因为servlet默认是单例模式,通常再容器中只实例化一个对象。所以当多线程调用servlet对象时,就会线程不安全。

    3.servlet接口的5个方法?

      init()、service()、destory()、getServletInfo()、getServletConfig()//返回一个servletConfig对象。

    4.get请求与post请求。

    get请求通过url携带参数,而post的参数在request body中。

    post请求比get请求更安全,因为它的参数暴露在url中。

    对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

    其实post与get请求并无本质区别:  https://www.cnblogs.com/logsharing/p/8448446.html

    get请求会发送一个数据包,post会发送两个。

    5.hashMap与hashTable

     1)hashMap是非线程安全的,hashTable是线程安全的。

     2)hashMap允许key和value都为null值,而hashTable都不可以为null。

     3)由于线程安全问题,hashMap效率要高于hashTable。

     4)hashTable是同步的,hash Map不是。如果要保证线程安全的话,一般使用ConcurrentHashMap来实现。因为 HashTable实现线程安全的方式太低效了, 直接在方法上加了 synchronized 关键字来实现的。

    6.链表:

      https://www.cnblogs.com/ysocean/p/7928988.html

    7.多态性的体现

     1)方法的重写。

     2)方法的重载。

     3)抽象类

     4)接口。

    7.java的单继承和多实现

     java只能继承一个类,而可以实现多个接口。

    8.什么时候用hashMap?

    当存储键值对时,它可以存储null值,是无序的,非同步的。HashMap存储着Entry(hash,key,value,next)对象。

    9.单例模式的使用场景

        1)、项目中的配置文件,如数据库的连接信息等,通常会用单例对象读取并存储。

        2)、Hibernate的SessionFactory应作为单例使用。

        3)、Servlet是典型的单例对象,这个对象是由Tomcat服务器创建并维护的。

        4)、Spring容器中的bean对象,默认都是单例模式。

        5)、Spring容器也应设置成单例。

        6)、统计网站的访问量。

    10.同步的实现方式

        1)同步方法:给方法名前加一个synchronized关键字,这个方法可以是静态的也可以是非静态的,但不能是抽象类的抽象方法,也不能是接口中的抽象方法。线程在执行同步方法时是具有排他性的,当一个线程进入到对象中的同步方法时,这个对象的所有同步方法都被锁定了。在此期间这个对象的所有同步方法都被锁定了,其它任何线程都不能访问这个对象的其他同步方法,但是可以访问其它非同步方法的。

        2)同步块:同步块是指通过锁定一个指定的对象,来对同步块中所包含的代码进行同步,而同步方法是对这个方法内的代码进行同步的,而这种情况下锁定的就是该方法所属的主体对象自身。如果这个方法是静态同步方法呢?那么线程锁定的就不是这个类的对象了,也不是这个类自身,而是这个类对应的java.lang.Class类型的对象。同步方法和同步块之间的相互制约只限于同一个对象之间,所以静态同步方法只受它所属类的其它静态同步方法的制约,而跟这个类的实例(对象)没有关系。

        如果一个对象中既有同步方法也有同步块,那么当一个线程访问其中的一个同步方法或同步块时,其他线程无法访问其他同步方法或同步块。

    详情:https://www.cnblogs.com/duanxz/p/3709608.html?utm_source=tuicool&utm_medium=referral

    11.wait与sleep的区别

          对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。

          sleep()方法导致了程序暂停执行指定的时间,让出cpu给其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。

         而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。

    12.java各类型所占字节数

         Int: 4 字节
         Short: 2字节
         Long: 8字节
         Byte: 1字节
         Character: 2字节
         Float: 4字节
         Double: 8字节

    13.jsp页面向后台传值的四种方式?

     1)通过Form表单提交传值 客户端通过Form表单提交到服务器端,服务器端通过request.getParameter(String xx);来取得参数(xx)为参数名称。通过get/post方式进行提交。

     2)通过隐藏域传值

        通过在表单中加入一个隐藏域来提交到服务器端,这种方式的好处是可以在客户端加入一些自己想要加入的参数,以便得到相应的值。

       客户端代码:<input type="hidden" name="id" value=""/>

       服务器端取值:String id=request.getParameter("id");

      3)通过URL传值 这种传值方式是通在Java代码 来进行传值。xx.jsp表示提交到处理的页面,后面的?号后的是要传的参数和其值,参数与参数之间用&进行分离。

     4)通过JavaBean进行传值 即通过Java中的自省机制,将所有表单的值传入到一个JavaBean中。

  • 相关阅读:
    HDU4529 郑厂长系列故事——N骑士问题 —— 状压DP
    POJ1185 炮兵阵地 —— 状压DP
    BZOJ1415 聪聪和可可 —— 期望 记忆化搜索
    TopCoder SRM420 Div1 RedIsGood —— 期望
    LightOJ
    LightOJ
    后缀数组小结
    URAL
    POJ3581 Sequence —— 后缀数组
    hdu 5269 ZYB loves Xor I
  • 原文地址:https://www.cnblogs.com/menbo/p/9858718.html
Copyright © 2011-2022 走看看