• 面试题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中。

  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    详解以太坊世界状态
    VDF 不是工作量证明
    以太坊:Go-Ethereum: 编译运行
    【转】理解分布式账本技术: 经济学视角
    Counterfactual 项目:广义的以太坊状态通道
    Solidity 安全:已知攻击方法和常见防御模式综合列表
    Verge 攻击解析
    以太坊区块链的轻客户端
  • 原文地址:https://www.cnblogs.com/menbo/p/9858718.html
Copyright © 2020-2023  润新知