zoukankan      html  css  js  c++  java
  • JAVA面试题01

    1.简述那你所知道的java修饰符及各自的使用机制?(publicabstractfinalsyschronizesuper

    public:修饰的类、成员变量是公有的,任何地方都能访问;

    abstract:修饰的类是抽象类、不能被实例化,如果子类不是抽象类必须重写本类的所有抽象方法;修饰的方法是抽象方法没有方法体;

    final:修饰的类不能被其他类继承;修饰的属性是常量,初始化后不能再次赋值;修饰的方法不能被重写;

    synchronized:同步锁,修饰的代码块称为同步代码块,作用域调用同步代码块的对象;修饰的方法称为同步方法,作用于调用这个方法的对象,修饰静态方法,作用于这个类的对象;修饰一个类,作用域这个类的所有对象;

    super:访问父类的方法和属性,在构造方法中必须位于第一行;必须在方法体中,调用父类的构造方法必须在子类构造方法中;

    this:默认是本类对象;

    private:修饰的成员变量作用于本类中;

    protected:修饰的方法或属性不能跨包使用;

    static:修饰的方法或变量属于类;在方法加载的时候就执行了,且只被加载一次,非静态方法直接访问静态方法及非静态方法,静态方法不可以直接访问非静态方法。

    。。。。。。。。。。。。。。。。

    2.StringStringBufferStringBuilder之间的区别?分别简述各自的执行效率?

    String是一个不可变的对象,每次对String类型的字符串进行改变时就相当于生成了一个新的String对象。

    StringBuffer是可变的字符串,对StringBuffer对象进行改变时,都是改变自身而没有生成一个新的对象,经常改变字符串建议使用StringBuffer;

    StringBuilder:在java1.5版本以后提供了StringBuilder类操作字符串,它等价于StringBuffer,区别在于它是线程安全的,切实单线程的,不提供同步,理论上效率更高。

    三者执行效率(理论上)从高到低依次是:StringBuilder>Stringbuffer>String

    3.重载(overload)和重写(override)的区别,overload是否可以改变返回值类型?

    重载:在同一个类中,方法名一致,参数列表不同,与方法的返回值和参数列表不同;

    重写:首先要有继承关系,必须在不同类中,方法名和参数列表必须一致,子类的访问权限不能严于父类,如果父类的返回值是父类,那么子类的返回值可以是父类或+子类。

    4.Java servlet APIforwardredirect的区别

    forward转发:url地址没有变化,没有重新发出请求,转发过程携带数据,目标url仅应用于本WEB应用,转发时服务器端行为,只请求一次。

    redirect重定向:url地址变化,且会重新发出请求,在重定向过程中不携带数据,url适用于任何地址,是客户端行为,至少发送两次请求。

    5.Java解析XML有哪几种方法?并简述各自的优缺点。

          DOM:非常适用于多次访问XML程序,便于各种操作,缺点是比较消耗资源;

    SAX:占用资源少,内存消耗少;

    JDOM:使用20%的精力解决80%的JavaXML问题,简化与XML的交互,比DOM更快;缺点是某些简化的API限制了其灵活性;

    DOM4J:性能优异、功能强大、易用也是开源的

    6.JavaScript有哪些打开一个页面的方式

    举例:

    (1)window.location.href=path+“/wellcom.html”

    (2)window.open(“wellcom.html”)

    (3)window.history.back(-1),返回上一页

    7.页面加载完成后调用js方法如何实现

    window.onload=”方法名()”

    8.innerHTML和outHTML的却别是什么?

    innerHTML是从对象的起始位置到终止位置的全部内容,包括html标签,outHTML除了包含inner的全部以外,还包含对象标签本身;

    <div id=’box’>outHTML

          <span class=’span’>ABCD</span>innerHTML

    </div>

    9.JavaScript如何实现页面局部刷新?

    var xmlhttp;

    if(window.XMLHttpRequest()){

          xmlhttp=new XMLhTTPrEQUEST();

    }else{

          xmlhttp=new ActiveXObject(“MicrosoftXMLHTTP”);

    }

          xmlhttp.onreadyStateChange=function(){

          if(xmlhttp.readyState==4&& xmlhttp.readyState==200){

          //局部刷新代码

    }

    xmlhttp.Open(“get”,”statutReadyCheck.aspx?dates=”+encodeURLComponene(dates),true);

    xmlhttp.send();

    }

    10.函数和存储过程的区别?

    本质上没区别。只是函数只能返回一个变量的限制;而存储过程可以返回多个。函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。函数限制比较多,如不能用临时表,只能用表变量等,而存储过程的限制相对就比较少。

    (1)一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。

    (2)当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。存储过程可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句.  

    (3)存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。

    (4)存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

    (5)存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值,可以向程序返回错误原因。但函数只能返回一个特定类型的值或者表对象。

    (6)存储过程中的CRUD的操作会影响数据库状态,但函数却不能。

    存储过程和函数定义的区别

    存储过程:可以使得对的管理、以及显示关于及其用户信息的工作容易得多。存储过程是SQL语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。

    函数:是由一个或多个SQL语句组成的子程序,可用于封装代码以便重新使用。自定义函数诸多限制,有许多语句不能使用,许多功能不能实现。函数可以直接引用返回值,用表变量返回记录集。但是,用户定义函数不能用于执行一组修改全局数据库状态的操作。函数有三种不同的类型:

    Scalar-valued function - returns a scalar value such as an integer or a timestamp. Can be used as column name in queries

    Inline function - can contain a single SELECT statement.

    Table-valued function - can contain any number of statements that populate the table variable to be returned. They become handy when you need to return a set of rows, but you can't enclose the logic for getting this rowset in a single SELECT statement.

    11.oracletruncatedelete命令有何区别?

    (1)delete支持事务,删除数据可以回滚操作,truncate不支持事务;

    (2)delete删除会产生日志记录,truncate不会;

    (3)truncate不能用于删除表的列有外部引用的,delete可以;

    (4)delete删除会触发行级触发器,truncate不会;

    (5)delete是逐行删除数据,速度慢而truncate是整张表截断

    (6)truncate截断后和表的索引将重新设置成初始大小,而delete不能

    12.oracle中char和varchar2数据类型有什么区别?有数据”test”分别放在char(10)和varchar(10)类型的字段中,其存储长度及类型有何区别?

    char的长度固定,而varchar2的长度是可变的;char的效率比varchar2的效率稍高;

    “test”存储在char(10)中,该字段在数据库中占储存10个字符;即“test”+6个空字符;varchar2(10)中,该字段在数据库中存储中占4个字符,10只是最大字符。

    13.假如数据库中有如下四张表:

    (1)文档表(DOC):编号(docid)、名称(docname)、描述(docdesc):docid为主键、docname索引

    (2)学生表(XS):学生代码(XSDM)、学生名称(XSMC)

    (3)学科表(XK):学科代码(XKDM)、学科名称(XKMC)、最高分(ZGF)

    (4)成绩表(CJ):学生代码(XSDM)、学科代码(XKDM)、成绩(CJ)

    问题一:写出您最常用的SQL语句的关键字

    insert  delete  select  update  create  drop  alter  grant  revoke commit  rollback  savepoint

    问题二:以下查询的处理速度(返回数据量相同)从高到低排列

    A select * from doc where docname=’test’

    B select * from doc where docid=50

    C select * from doc where docdesc=’test’

    B>A>C

    问题三:列出不及格(<60)的学生姓名(SQL语句)

    SELECT XC.XSMC FROM

    XC WHERE XC.XSDM

    IN(SELECT CJ.XSDM

    WHERE CJ.CJ<60)

    问题四:统计每个学生的总分(SQL语句)

    SELECT XS.XSMC,SUM(CJ.CJ) FROM

    CJ LEFT JOIN XC

    ON CJ.XSDM=XS.XSDM

    GROUP BY XS.XSMC;

    问题五:列出没有及格的(<=60)的学生姓名及平均分(SQL语句)

    SELECT XS.XSMC,AVG(CJ.CJ) FROM

    XS LEFT JOIN CJ

    ON XSDM=CJ.XSDM

     WHERE XS.XSDM IN

    (SELECT CJ.XSDM FROM CJ

    WHERE CJ.CJ<60)

      GROUP BY XS.XSMC; 

  • 相关阅读:
    printcap
    browser-ua
    PHP 开发 APP 接口 学习笔记与总结
    Java实现 LeetCode 72 编辑距离
    Java实现 LeetCode 72 编辑距离
    Java实现 LeetCode 72 编辑距离
    Java实现 LeetCode 71 简化路径
    Java实现 LeetCode 71 简化路径
    Java实现 LeetCode 71 简化路径
    Java实现 LeetCode70 爬楼梯
  • 原文地址:https://www.cnblogs.com/kuoAT/p/6635438.html
Copyright © 2011-2022 走看看