美文网首页
Java基础面试题

Java基础面试题

作者: 努力努力再努力_y | 来源:发表于2017-09-22 15:25 被阅读8次

    曾经面试时踩过的坑

    一、Java数据类型分为基本类型和引用类型

    1、八种基本类型
    (一)、4种整型 
        byte      1字节           -128——127 
    
        short     2 字节         -32,768 —— 32,767 
    
        int       4 字节          -2,147,483,648 ——2,147,483,647(超过20亿) 
    
        long      8 字节   -9,223,372,036,854,775,808——9,223,372,036854,775,807 
    
        注释:java中所有的数据类所占据的字节数量与平台无关,java也没有任何无符号类型 
    
    (二)、 2种浮点类型 
        float    4 字节         32位IEEE 754单精度(有效位数 6 – 7位) 
    
        double   8 字节         64位IEEE 754双精度(有效位数15位) 
    
    (三)、1种Unicode编码的字符单元 
        char    2 字节          整个Unicode字符集 
    
    (四)、1种真值类型 
         boolean    1 位             True或者false
    
    2、三种引用类型
    类class 
    
    接口interface 
    
    数组array 
    
    3、类类型

    String是类类型,不是基本类型。

    二、面向对象的四个基本特征

    封装:最常见的是把属性私有化封装在一个类里面,只能通过方法去访问
    
    继承:子类继承父类,从而继承了父类的方法和属性
    
    抽象:比如一个英雄类,抽象出了name,hp这些属性,使得开发过程中更加易于理解
    
    多态:多态分操作符的多态和类的多态。 类的多态指父类引用指向子类对象,并且有继承,有重写。
    
    

    三、类型区别

    (一)、int 和 Integer 有什么区别?
          int 是基本类型32位长度的整数
          Integer 是类类型,是int的封装类
          int和Integer之间可以通过自动装箱、自动拆箱互相转换
    
    (二)、String 和StringBuffer的区别?
          String是immutable的,其内容一旦创建好之后,就不可以发生改变。
          StringBuffer 是可以变长的,内容也可以发生改变
          改变的原理是StringBuffer内部采用了字符数组存放数据,在需要增加    长度的时候,创建新的数组,并且把原来的数据复制到新的数组这样的办法来实现。 
    

    四、垃圾回收的优点和原理。并考虑2种回收机制

    与C语言开发人员需要手段进行内存资源的释放不同,Java提供垃圾回收机制,自动进行GC,将开发人员冲容易犯错的内存资源管理中解放出来。
    
    原理:当某个一个对象,没有任何引用指向它的时候,那么它就满足垃圾回收的条件,在适当的时候,JVM虚拟机进行GC将其回收,释放空间,以供后续再利用。
    
    两种常见的回收机制:
    1. 定时回收
    每隔30分钟进行一次回收,这种机制的弊端是如果垃圾产生的比较快,有可能30分钟之内垃圾已经把内存占用光了,导致性能变慢
    
    2. 当垃圾占到某个百分比的时候,进行回收
    比如,当垃圾占到70%的时候,进行回收。 这种机制的弊端是,如果垃圾产生的频率很快,那么JVM就必须高频率的进行垃圾回收。 而在垃圾回收的过程中, JVM会停顿下来,只做垃圾回收,而影响业务功能的正常运行。
    
    一般说来 JVM会采用两种机制结合的方式进行垃圾回收。
    

    五、什么是java序列化,如何实现java序列化?

    序列化指的是把一个Java对象,通过某种介质进行传输,比如Socket输入输出流,或者保存在一个文件里
    
    实现java序列化的手段是让该类实现接口 Serializable,这个接口是一个标识性接口
    没有任何方法,仅仅用于表示该类可以序列化。
    

    六、多线程有几种实现方法,都是什么?

    通常来讲,Java 创建一个线程有三种方式
    1. 继承一个Thread类
    2. 实现Runnable接口
    3. 匿名内部类
    

    七、数据连接池的工作机制是什么?

    数据库连接池原理:
    因为创建连接和关闭连接的行为是非常耗时的,会显著降低软件的性能表现
    解决办法就是先创建n条数据库连接Connection,循环使用,但是不进行关闭
    这样再执行SQL语句,就不需要额外创建连接了,直接使用现成的连接就可以了
    从而节约了创建连接和关闭连接的时间开销。
    

    八、JSP的四个作用域和九大内置对象

    名称 对象 类型 作用域
    request 请求对象 类型 javax.servlet.ServletRequest 作用域 Request
    response 响应对象 类型 javax.servlet.SrvletResponse 作用域 Page
    pageContext 页面上下文对象 类型 javax.servlet.jsp.PageContext 作用域 Page
    session 会话对象 类型 javax.servlet.http.HttpSession 作用域 Session
    application 应用程序对象 类型 javax.servlet.ServletContext 作用域 Application
    out 输出对象 类型 javax.servlet.jsp.JspWriter 作用域 Page
    config 配置对象 类型 javax.servlet.ServletConfig 作用域 Page
    page 页面对象 类型 javax.lang.Object 作用域 Page
    exception 例外对象 类型 javax.lang.Throwable 作用域 Page

    九、servlet的生命周期

    一个Servlet的生命周期由 实例化,初始化,提供服务,销毁,被回收几个步骤组成

    生命周期
    (1)加载并实例化
    (2)初始化,调用init()方法
    (3)服务,调用service()方法
    (4)销毁,调用destroy()方法
    
    1、容器启动的时候,会加载servlet的class,并new出这个对象
    
    2、当用户请求这个servlet的时候,容器会调用init方法初始化这个servlet
    这也是整个生命周期中只会调用一次的方法,
    
    3、会调用service方法,由这个方法调用doGet或doPost方法来响应用户,
    
    4、容器在可用资源紧张或是长期没有对Servlet发出请求的情况下,会销毁这个servlet。
    
    

    十、JDBC链接数据库的步骤

    1.加载驱动类;
    2.与数据库建立连接;
    3.执行SQL语句
    4.处理结果集
    5.关闭连接
    

    十一、数据库连接池

    优势:
    资源重用、更快的系统响应速度、新的资源分配手段、统一的连接管理,避免数据库连接泄漏
    
    1.dbcp
    dbcp可能是使用最多的开源连接池,原因大概是因为配置方便,而且很多开源和tomcat应用例子都是使用的这个连接池吧。
    这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。这个连接池的配置参见附件压缩包中的:dbcp.xml
    使用评价:在具体项目应用中,发现此连接池的持续运行的稳定性还是可以,不过速度稍慢,在大并发量的压力下稳定性
    有所下降,此外不提供连接池监控
    
    2.c3p0
    c3p0是另外一个开源的连接池,在业界也是比较有名的,这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。
    这个连接池的配置参见附件压缩包中的:c3p0.xml。
    使用评价:在具体项目应用中,发现此连接池的持续运行的稳定性相当不错,在大并发量的压力下稳定性也有一定保证,
    此外不提供连接池监控。
             
    3.proxool
    proxool这个连接池可能用到的人比较少,但也有一定知名度,这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。
    这个连接池的配置参见附件压缩包中的:proxool.xml。
    

    相关文章

      网友评论

          本文标题:Java基础面试题

          本文链接:https://www.haomeiwen.com/subject/flsfextx.html