java软件开发工程师面试题
Java软件开发工程师在面试前最好做好个人准备,提前了解面试题很有必要,以下是小编帮你们整理的java软件开发工程师面试题,一起来学习啦。
java软件开发工程师面试题(一)
1.存储过程和函数的区别
从参数的返回其情况来看:
如果返回多个参数值最好使用存储过程,如果只有一个返回参数值的话可以使用函数。 从调用情况来看:
如果在SQL语句(DML或者select)中调用的话一定是存储函数或者是存储的分装函数不可以是存储过程,但是调用存储函数的时候还有很多限制以及函数的纯度等级问题,如果实在过程化语句中调用的虎牙,就要看你是实现什么样的功能。函数一般情况先是用来计算并返回一个计算结果而存储过程一般是一用来完成特定的数据操作(比如修改、插入数据库表或执行某些dml语句),所有虽然他们的语法上很相似但用户在使用他们的时候所需要完成的功能大部分情况下是不同的。
2.试述数据库完整保护的主要任务和措施
数据库的完整性保护也就是数据库中正确性的维护。数据库的完整性包括三个内容:实体完整性规则、参照物完整性规则和用户定义完整性规则。前两个使用DBMS自动处理。
实体完整性规则:是说针对基表中的关键字属性不能为空值,是数据库完整性的基本要求,主关键字和元组的唯一性对应。
参照物完整性规则:是不允许引用不存在的元组:即基表中的外关键字要么为空,要么关联基表中必然存在元组。
用户定义完整性规则:针对具体的数据环境由用户具体设置的规则,它反映了具体应用中的语义要求。一个完整性规则一般有下面三个部分组成:完整性约束条件设置,完整性约束条件的检验以及完整性约束条件的处理。后两部分在数据库中一般由相应的模块处理。另外触发器也可以做完整性的保护,但触发器大量用于主动性领域。
3.请说明SQLServer中的delete from tablea & truncate table tablea的区别。
两者都可以用来删除表中的所有记录。区别在于:truncate是DDL操作,它移动HWK,是HWK值为0,不需要rollback segment ,而Delete是DML操作需要rollback segment 且话费较长时间。
4.Oracle安装完成后,如何使用命令行启动和关闭数据库?
打开:STARTUP [RESTRICT] [PFILE=filename] [OPEN [RECOVER][database] ]| MOUNT |NOMOUNT
STARTUP OPEN:STARTUP :缺省的参数是OPEN,打开数据库,允许数据库的访问。当前实力的控制文件中描述的所有文件都已打开。
STARTUP MOUNT:MOUNT数据库,仅仅给DBA进行管理操作,不允许数据库用户的访问。仅仅只是当前实例的控制文件打开,数据文件未打开。
STARTU NOMOUNT :仅仅通过初始化文件,分配出SGA区,启动数据库后台进程,没有打开控制文件和数据文件。不能访问任何数据库。
STARTUP PFILE=filename :以filename为初始化文件启动数据库。不是采用缺省初始化文件。
STARTUP FORCE:中止当前数据库的运行,并开始重新正常的启动数据库。
STARTUP RESTRICT:只允许具有RESTRICTED SESSION权限的用户访问数据库。
STARTUP RECOVER:数据库启动,并开始介质恢复。
关闭:shutdown有四个参数:NOMAL、TRANSACTIONAL、IMMEDIATE、ABORT。缺省不带任何参数时表示NORMAL。
SHUTDOWN NORMA:不允许新的连接、等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。
SHUTDOWN TRANSACTIONAL:不允许新的连接、不等待会话结束、等待事务结束做一个检查点并关闭数据文件。启动时不需要实例恢复。
SHUTDOWN IMMEDIATE:不允许新的连接,不等待会话结束、不等待事务结束、做一个检查点并关闭数据文件。没有结束的事务是自动rollback的。启动时不需要实例恢复。
SHUTDOWN ABORT:不允许新的连接、不等待会话结束、不等待事务结束、不做检查点并且没有关闭数据文件。启动时自动进行实例恢复。
另外,对于NORMAL、TRANSACTIONAL、IMMEDIATE,DE Buffer Cache的内容写入了数据文件,没有提交的事务被回滚,所有的资源被释放,数据库被干净的关闭。对于ABORT,DB Buffer Cache的内容没有被写入数据文件,没有提交的事务也没有回滚。数据库没有dismount和关闭,数据文件也没有关闭。当数据库启东市,需要通过redo log恢复数据,通过回滚段对事物回滚,对资源进行释放。
java软件开发工程师面试题(二)
1.类有哪三种基本特性?各特性的优点?
类具有封装性、继承性、和多态性。
封装性:类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私有变量和类中的方法的实现细节。
继承性:类的继承性提供从已存在的类的创建新类的机制,继承(inheritance)使一个新类自动拥有被继承类(父类)的全部可继承的成员。
多态性:类的多态性提供类中方法执行的多样性,多态性有两种表现形式:重载和覆盖。
2.谈谈对XML的理解?说明web应用中web.xml文件的作用?
XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language标砖通用标记语言)。XML是Internrt环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。拓展标记语言XML是一种简单的实际存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。
Web.xml的作用是配置欢迎页,servlet 、filter、listenter等的。
3.Jsp有哪些内置对象?作用分别是什么?
1).request 表示HttpServlet Request对象。它包含了有关浏览器请求的信息,并且提供了几个获取cookie,header和session数据的有用的方法。
2).response表示HttpServletResponse对象,并且提供了几个用于设置送回浏览器的响应的方法(如cookies,header信息等)
3).out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法能用于向浏览器回送输出结果
4).pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象API,并且包装了用用的servlet相关功能的方法。
5).session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息。
6).application表示一个javax.servlet.ServletContext对象,这有助于查找有关servlet引擎和servlet环境信息。
7).config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数
8).page表示从该页面产生的一个servlet实例
9).exceptiom针对错误页面,未捕捉的例外
4.事务是什么?有哪些属性,并且简要说明这些属性的含义。
事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。 事务通常是由高级数据库操纵语言(如SQL,C++或java)书写的用户程序的执行所引起,并用刑辱begin transaction 和end transaction语句(或者函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。
事务具有4个属性:原子性、一致性、隔离性、持续性。这4个属性通常称之为ACID特性。
原子性(atomicity):一个事务是一个不可分割的工作单位,事务中包括的著操作要么都做,要么都不做。
一致性(consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
隔离性(isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(durability):持久性也称之为永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
java软件开发工程师面试题(三)
1.Collection和Collections的区别?
Collection是java.Util下的接口,它是各种集合的父接口,继承于它的接口主要有Set和List;
Collections是java.util下的类,是针对集合的帮助类,提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
2.HashMap和TreeMap的区别?
HashMap通过hashcode对其内容进行快速查找。而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。
3.ArrayList和Vector的区别?
同步性:Vector是线程安全的,也就是说同步的,而ArrayList是线程不安全的,不是同步的;
数据增长:当需要增长时,vector默认增长为原来一倍,而ArrayList却是原来的一半。
4.HashMap和HashTable的区别?
HashMap是HashTable的轻量级实现(非线程安全的实现),它们都实现了Map接口
区别:
1)在于HashMap允许空(null)键值(key),由于非线程安全,效率上高于HashTable。HashMap允许将null作为一个entry的key或者value,而HashTable不允许。
2)HashMap把HashTable的contains方法去掉了,改成了containsvalue和containKey。因为contains方法容易让人引起误解。
3)HashTable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
4)最大的不同之处在于:HashTable的方法是synchronize的,而HashMap不是,在多线程访问HashTable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供同步。
5.请说说ArrayList、Vector、LinkedList的存储性能和特性。
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayLIst差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或者后向遍历,但是插入数据时只需要记录本项的前后项即可。所以插入速度快。
看了“java软件开发工程师面试题”