zoukankan      html  css  js  c++  java
  • 中科软面试题

    1.servlet的生命周期?

    Servlet在创建的时候会调用init()方法,这个方法在整个生命周期只调用一次。servlet由web容器创建:如果在web.xml中配置了<load-on-startup>元素,那么会在web应用启动时自动创建对应的servlet实例,否则servlet将在第一次请求的时候被创建实例。

    servlet的service()方法用来处理请求,其参数为request和response对象。对于HttpServlet,该方法中包含了doGet()和doPost()方法,会根据请求类别得到调用,并通过Response对象生成响应结果。Servlet是单例模式,由一个实例来处理多个请求。处理时采用多线程模式,且不是线程安全的。如果定义了Servlet的成员变量(即JSP的<%! %>变量声明),可以由不同的请求修改。因此所有操作都要限制在service()方法中进行,尽量不要在servlet中定义类变量。

    Servlet对象在销毁实例时,会调用destory()方法以释放资源,该方法在整个生命周期中也只调用一次。当Web应用关闭,或者该Servlet代码被修改时该方法将被Web容器调用。

    2.overload和override的区别?overload的方法是否可以改变返回值类型?

    overload:存在于同一个类中。

    01.方法名必须相同。

    02.与方法返回值类型无关。

    03.参数类型必须不同,包括参数的类型,顺序,参数的个数。

    04.可以有不同的访问修饰符。

    05.可以抛出不同的异常。

    override:存在于父子类的关系中,是面向对象多态性的一种体现。

    01.方法的重写表示子类中的方法可以与父类中的某个方法的名称和参数类型完全相同。通过子类创建出来的对象,在调用这个方法时,调用的是子类中的方法。

    这相当于子类中的方法把父类中的方法给覆盖了。这是面向对象多态性的一种体现。

    02.在抛出异常方面:子类重写父类方法时,抛出的异常类型只能是父类异常类型的子类,或者和父类异常类型一样。

    03.在访问权限方面:子类重写父类方法时,子类方法的访问权限不能严于父类。只能和父类相同,或者高于父类。

    04.如果父类的方法时private类型的,那么子类不能重写该方法。相当于在子类中新增了一个全新的方法。

    05.在返回值类型方面:如果方法的返回值类型是基本数据类型和String,那么返回值类型不能改变。如果返回值类型是引用数据类型,例如:父类a方法的返回值类型为User,那么在子类中重写了a方法,那么子类中的a方法的返回值类型,必须是User或者是User的子类。

    3.列举几个常见的异常,并说明什么情况下会出现此异常?

    01.NullPointerException:当应用程序试图在需要对象的地方使用 null 时,会抛出此异常。

    02.ClassNotFoundException:找不到类的异常。

    03.ArithmeticException:当除数为0时会抛出此异常。

    04.NumberFormatException:字符串转换异常。

    05.SQLException:操作数据库异常。

    06.NoSuchMethodException :方法未找到异常。

    07.FileNotFoundException:文件未找到异常。

    08.IOException:输入输出流异常。

    09.ClassCastException:类型转换异常。

    4.在java开发中,命名规范是什么,比如类名,字段,常量,包名等。

    01.变量的命名规范:驼峰命名法。

    第一个单词的首字母小写,其后单词的首字母大写。首位必须是字母,下划线,美元符号,人民币符号开头。数字可以放中间。不能是关键字和保留字(goto,const)。

    02.常量的命名规范:帕斯卡命名法。

    全大写。不同单词之间使用下划线分割。在声明常量的同时赋值,只能赋值一次。由final修饰。

    03.类名的命名规范:

    类的名字必须由大写字母开头而单词中的其他字母均为小写;如果类名称由多个单词组成,则每个单词的首字母均应为大写。

    04.包名的命名规范:

    Java包的名字都是由小写单词组成。域名倒置,一般公司命名为:com.公司名.项目名.模块名。

    5.简要描述一下J2EE BS系统的目录结构,web.xml的作用是什么?

    J2EE BS系统的目录结构:

    项目名==》src/main/java==》controller/dao/service/pojo

         src/main/resource==》database.properties/log4j.properties/applicationContext.xml/mybatis-config.xml/spring-servlet.xml

         src==》main==》webapp==》WEB-INF==》web.xml

         pom.xml

    web.xml的作用是:

    web.xml文件是用来配置:欢迎页、servlet、filter等的。当你的web工程没用到这些时,你可以不用web.xml文件来配置你的web工程。

    6.jsp和servlet的区别,共同点和各自应用的范围?

    01.共同点:

    jsp本质上就是servlet,jsp编译后就是类servlet。

    02.不同点:

    Servlet完全是JAVA程序代码构成,擅长于流程控制和事务处理。

    JSP由HTML代码和JSP标签构成,可以方便地编写动态网页。

    03.各自的应用范围:

    JSP侧重于视图。

    Servlet主要用于控制逻辑。

    7.cookie和session的作用,区别,应用范围,余下的两种跟踪技术是什么?session的工作原理?

    8.forword()和redirect()的区别?

    01.

    9.jsp有几个内置对象?作用分别是什么?

    01.request:用户端请求,此请求会包含来自GET/POST请求的参数

    02.response:网页传回用户端的回应

    03.pageContext:网页的属性是在这里管理

    04.session:与请求有关的会话期

    05.application  servlet正在执行的内容

    06.out:用来传送回应的输出

    07.config servlet的构架部件

    08.page JSP:网页本身

    09.exception:针对错误网页,未捕捉的例外

    10.请解释MVC和struts的关系,struts的工作机制是什么?并说明为什么使用struts?

    11.hibernate为什么提供了延迟加载?起什么作用?数据库有没有提供相应的延迟加载的功能?hibernate是如何配置实现延迟加载的?

    12.请写出你了解的框架以及作用,并说明。

    13.hibernate有哪五个核心接口,功能分别是什么?

    14.请说明sql,sqlserver,mysql,plsql,plsql developer,oracle之间的区别?

    15.简要解释主键,外键,视图,索引,存储过程,触发器,同义词,并说明他们的用处?

    01.主键:唯一标识一条记录,不能有重复的,不允许为空,方便记录的查询以及加快了检索

    02.外键: 表的外键是另一表的主键, 外键可以有重复的, 可以是空值,可以用来和其他表建立联系用的

    03.视图:视图是虚表,是从一个或几个基本表(或视图)中导出的表,在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。

    04.索引: 索引是对数据库表中一列或多列的值进行排序的一种结构. 建立索引的目的是加快对表中记录的查找或排序。

    05.存储过程: 系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

    06.触发器: 触发器是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发。

    07.同义词: 同义词(synonym)是指向其它数据库表的数据库指针。

    16.简要解释什么是事务?举一个恰当的案例说明事务的重要性?

    01.事务:

    事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。 
    事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消撤消之前到事务开始时的所以操作。 

    02.事务特性:

    001.原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。

    002.一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

    003.隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

    004.持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

    03.事务的隔离级别:

    001. ISOLATION_DEFAULT: 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.
          另外四个与JDBC的隔离级别相对应
    002. ISOLATION_READ_UNCOMMITTED: 这是事务最低的隔离级别,它充许令外一个事务可以看到这个事务未提交的数据。
          这种隔离级别会产生脏读,不可重复读和幻像读。
    003. ISOLATION_READ_COMMITTED: 保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据
    004. ISOLATION_REPEATABLE_READ: 这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。
          它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了避免下面的情况产生(不可重复读)。
    005. ISOLATION_SERIALIZABLE 这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。
          除了防止脏读,不可重复读外,还避免了幻像读。 

    04.spring事务传播特性:

    001. PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务。如果没有事务则开启
    002. PROPAGATION_SUPPORTS: 如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行
    003. PROPAGATION_MANDATORY: 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。
    004. PROPAGATION_REQUIRES_NEW: 总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。
    005. PROPAGATION_NOT_SUPPORTED: 总是非事务地执行,并挂起任何存在的事务。
    006. PROPAGATION_NEVER: 总是非事务地执行,如果存在一个活动事务,则抛出异常
    007. PROPAGATION_NESTED:如果一个活动的事务存在,则运行在一个嵌套的事务中. 如果没有活动事务, 
          则按TransactionDefinition.PROPAGATION_REQUIRED 属性执行

    17.数据库中常用的函数?并说明什么情况下使用?

    18.如何编写高效的sql,简要描述你优化sql的过程?

    19.null是什么?是否等同于“”?为什么?sql操作上有没有不同?

    20.group by, order by ,having的意思分别是什么?使用的顺序是什么?

    21.由你负责设计酒店管理系统,请给出数据库模型ER图?

    22.数据库:

    为管理业务培训信息,建立3个表

    S(S#,SN,SD,SA)—4个字段分别代表学号、学员姓名、所属单位、学员年龄 C(C#,CN)—2个字段分别代表课程编号、课程名称

    SC(S#,C#,G)—3个字段分别代表学号、所选的课程编号、学习成绩 使用标准SQL语句实现以下要求:

    1) 查询选修课程名称为“Java编程”的学员学号和姓名

    答:select S.S#,S.SN from S,C,SC where S.S#=SC.S# and SC.C#=C.C# and C.CN=’Java编程’;

    2) 查询不选修课程编号为“C5”的学员姓名和所属单位

    答:select S.SN,S.SD from S,C SC where S.S#=SC.S# and SC.C#=C.C# and C.C# !=C5;

    3) 查询选修了课程的学员人数

    答:select count(*) as 选课的学生数 from SC where SC.S# in (select s# from sc group by s#);

    Select count(distinct s#) from sc;

    4) 查询选修课程超过5门的学员学号和所属单位

    答:select s.s#,s.sd from s where s# in (select s# from sc group by s# having count(*)>5)

    5) 列出二门以上(含两门)不及格课程的学生姓名及其平均成绩

    答:select S.SN ,AVG(SC.G) from S,SC,(select c# from sc where G<60 group by s# having

    count(distinct c#)>=2)

    where S.S#=SC.S# and SC.C#=C.C# group by S.SN

    6)列出既学过“Java编程”又学过“项目管理”课程的所有学生姓名

    答:select S.SN from S,C,SC where S.S#=SC.S# and SC.C#=C.C# and C.CN=’Java编程’ and C.CN=’项目管理’;

             

  • 相关阅读:
    XX需求分析系统每日进度(二)
    XX需求分析系统每日进度(一)
    周总结(二)
    Hyperleder Fabric chaincode生命周期
    【转】六种学术不端的引用行为
    引导学生,让学生不走神。
    MySQL 的常用引擎
    LeetCode283移动零问题java高效解法
    使用android studio进行springboot项目的开发
    android逆向反编译工具包下载
  • 原文地址:https://www.cnblogs.com/lyb0103/p/8284315.html
Copyright © 2011-2022 走看看