java开发面试题及答案3篇【优秀范文】
位置: 首页 >专题范文 > 公文范文 > 文章内容

java开发面试题及答案3篇【优秀范文】

时间:2023-03-30 10:10:06 来源:网友投稿

java开发面试题及答案1  1.JSP页面之间传递参数的方法有哪些?  解答:  1)request  2)session  3)application  4)提交表单  5)超链接  2.for下面是小编为大家整理的java开发面试题及答案3篇【优秀范文】,供大家参考。

java开发面试题及答案3篇【优秀范文】

java开发面试题及答案1

  1.JSP页面之间传递参数的方法有哪些?

  解答:

  1)request

  2)session

  3)application

  4)提交表单

  5)超链接

  2.forward 和redirect的区别

  解答:forward是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。

  redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,并且从浏览器的地址栏中可以看到跳转后的链接地址。前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接;在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

  3.Java反射机制的作用?

  解答:Java反射机制的作用是:

  1)在运行时判断任意一个对象所属的类。

  2)在运行时构造任意一个类的对象。

  3)在运行时判断任意一个类所具有的成员变量和方法。

  4)在运行时调用任意一个对象的方法

  4.你是怎么理解java的泛型的?

  解答: 在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。

  泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。

  泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

  5.JAVA源文件中是否可以包括多个类,有什么限制

  解答:一个java源文件中可以包含多个类,每个源文件中至多有一个public类,如果有的话,那么源文件的名字必须与之相同。如果源文件中没有public类,则源文件用什么名字都可以,但最好还是具有特定的意义,免得自己都不记得里面写的是什么了。

  6.在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计、SQL语句、java等层面的解决方案。

  解答:

  1)数据库设计方面:

  a. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

  b. 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=0

  c. 并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,查询可能不会去利用索引,如一表中有字段sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用。

  d. 索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过6个,若太多则应考虑一些不常使用到的列上建的"索引是否有必要。

  e. 应尽可能的避免更新索引数据列,因为索引数据列的顺序就是表记录的物理存储顺序,一旦该列值改变将导致整个表记录的顺序的调整,会耗费相当大的资源。若应用系统需要频繁更新索引数据列,那么需要考虑是否应将该索引建为索引。

  f. 尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。

  g. 尽可能的使用 varchar/nvarchar 代替 char/nchar ,因为首先变长字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些。

  h. 尽量使用表变量来代替临时表。如果表变量包含大量数据,请注意索引非常有限(只有主键索引)。

  i. 避免频繁创建和删除临时表,以减少系统表资源的消耗。

  j. 临时表并不是不可使用,适当地使用它们可以使某些例程更有效,例如,当需要重复引用大型表或常用表中的某个数据集时。但是,对于一次性事件,最好使用导出表。

  k. 在新建临时表时,如果一次*入数据量很大,那么可以使用 select into 代替 create table,避免造成大量 log ,以提高速度;如果数据量不大,为了缓和系统表的资源,应先create table,然后insert。

  l. 如果使用到了临时表,在存储过程的最后务必将所有的临时表显式删除,先 truncate table ,然后 drop table ,这样可以避免系统表的较长时间锁定。

  2)SQL语句方面:

  a. 应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。

  b. 应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num=10 or num=20 可以这样查询: select id from t where num=10 union all select id from t where num=20

  c. in 和 not in 也要慎用,否则会导致全表扫描,如: select id from t where num in(1,2,3) 对于连续的数值,能用 between 就不要用 in 了: select id from t where num between 1 and 3

  d. 下面的查询也将导致全表扫描: select id from t where name like ‘%abc%’

  e. 如果在 where 子句中使用参数,也会导致全表扫描。因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。如下面语句将进行全表扫描: select id from t where num=@num 可以改为强制查询使用索引: select id from t with(index(索引名)) where num=@num

  f. 应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。如: select id from t where num/2=100 应改为: select id from t where num=100*2

  g. 应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。如: select id from t where substring(name,1,3)=’abc’–name以abc开头的id select id from t where datediff(day,createdate,’2005-11-30′)=0–‘2005-11-30’生成的id 应改为: select id from t where name like ‘abc%’ select id from t where createdate>=’2005-11-30′ and createdate<’2005-12-1′

  h. 不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。

  i. 不要写一些没有意义的查询,如需要生成一个空表结构: select col1,col2 into #t from t where 1=0 这类代码不会返回任何结果集,但是会消耗系统资源的,应改成这样: create table #t(„)

  j. 很多时候用 exists 代替 in 是一个好的选择: select num from a where num in(select num from b) 用下面的语句替换: select num from a where exists(select 1 from b where num=a.num)

  k. 任何地方都不要使用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。

  l. 尽量避免使用游标,因为游标的效率较差,如果游标操作的数据超过1万行,那么就应该考虑改写。

  m. 尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。

  n. 尽量避免大事务操作,提高系统并发能力。

  3)java方面:

  a.尽可能的少造对象。

  b.合理摆正系统设计的位置。大量数据操作,和少量数据操作一定是分开的。大量的数据操作,肯定不是ORM框架搞定的。,

  c.使用jDBC链接数据库操作数据

  d.控制好内存,让数据流起来,而不是全部读到内存再处理,而是边读取边处理;

  e.合理利用内存,有的数据要缓存

java开发面试题及答案2

  1.请解释分布式事务管理?

  解答:分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。为了实现分布式事务,需要使用下面将介绍的两阶段提交协议。

  阶段一:开始向事务涉及到的全部资源发送提交前信息。此时,事务涉及到的资源还有最后一次机会来异常结束事务。如果任意一个资源决定异常结束事务,则整个事务取消,不会进行资源的更新。否则,事务将正常执行,除非发生灾难性的失败。为了防止会发生灾难性的失败,所有资源的更新都会写入到日志中。这些日志是永久性的,因此,这些日志会幸免遇难并且在失败之后可以重新对所有资源进行更新。

  阶段二:只在阶段一没有异常结束的时候才会发生。此时,所有能被定位和单独控制的资源管理器都将开始执行真正的数据更新。 在分布式事务两阶段提交协议中,有一个主事务管理器负责充当分布式事务协调器的角色。事务协调器负责整个事务并使之与网络中的其他事务管理器协同工作。 为了实现分布式事务,必须使用一种协议在分布式事务的各个参与者之间传递事务上下文信息,IIOP便是这种协议。这就要求不同开发商开发的事务参与者必须支持一种标准协议,才能实现分布式的事务。

  2.请写出5种常见到的runtime exception。

  解答:

  NullPointerException:当操作一个空引用时会出现此错误。

  NumberFormatException:数据格式转换出现问题时出现此异常。

  ClassCastException:强制类型转换类型不匹配时出现此异常。

  ArrayIndexOutOfBoundsException:数组下标越界,当使用一个不存在的数组下标时出现此异常。

  ArithmeticException:数*行错误时出现此异常

  3.数组有没有length()这个方法?String有没有length()这个方法?

  解答:数组没有length()方法 它有length属性

  String有length()方法。

  4.请写出一个单例模式。

  解答:单例模式(Singleton pattern):确保一个类只有一个实例,并提供一个全局的访问点

  public class EagerSingleton { private static final EagerSingleton m_instance = new EagerSingleton(); /** * 私有的默认构造子 */ private EagerSingleton() { } /** * 静态工厂方法 */ public static EagerSingleton getInstance() { return m_instance; } }

  5.在java中,List是个接口,那实现List接口的类有哪些,有什么区别?

  解答: ArrayList是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,

  LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

  6.char类型能否存储一个中文字符?为什么

  解答:可以。一个char是两个字节,而一个中文也是两个字节。


java开发面试题及答案3篇扩展阅读


java开发面试题及答案3篇(扩展1)

——java开发面试题3篇

java开发面试题1

  1.hibernate中的java对象有几种状态,其相互关系如何(区别和相互转换)。

  解答:在Hibernate中,对象有三种状态:临时状态、持久状态和游离状态。 临时状态:当new一个实体对象后,这个对象处于临时状态,即这个对象只是一个保存临时数据的内存区域,如果没有变量引用这个对象,则会被jre垃圾回收机制回收。这个对象所保存的数据与数据库没有任何关系,除非通过Session的save或者SaveOrUpdate把临时对象与数据库关联,并把数据插入或者更新到数据库,这个对象才转换为持久对象;

  持久状态:持久化对象的实例在数据库中有对应的记录,并拥有一个持久化表示(ID)。对持久化对象进行delete操作后,数据库中对应的记录将被删除,那么持久化对象与数据库记录不再存在对应关系,持久化对象变成临时状态。

  持久化对象被修改变更后,不会马上同步到数据库,直到数据库事务提交。在同步之前,持久化对象是脏的(Dirty)。

  游离状态:当Session进行了Close、Clear或者evict后,持久化对象虽然拥有持久化标识符和与数据库对应记录一致的值,但是因为会话已经消失,对象不在持久化管理之内,所以处于游离状态(也叫:脱管状态)。游离状态的对象与临时状态对象是十分相似的,只是它还含有持久化标识。

  2.对hibernate的延迟加载如何理解,在实际应用中,延迟加载与session关闭的矛盾是如何处理的?

  解答:延迟加载就是并不是在读取的时候就把数据加载进来,而是等到使用时再加载。那么Hibernate是怎么知识用户在什么时候使用数据了呢?又是如何加载数据呢?其实很简单,它使用了代理机制。返回给用户的并不是实体本身,而是实体对象的代理。代理对象在用户调用getter方法时就会去数据库加载数据。但加载数据就需要数据库连接。而当我们把会话关闭时,数据库连接就同时关闭了。这种情况就叫做未初始化的关系。

  延迟加载与session关闭的矛盾一般可以这样处理:

  1)、关闭延迟加载特性。

  操作起来比较简单,因为hibernate的延迟加载特性是在hbm配置里面可控制的"。默认lazy=”true”,具体配置可以查看一下相关文档,就不详细叙述了。

  但使用这个解决办法带来的隐患是十分大的。

  首先,出现no session or session was closed就证明了您已经在使用外键关联表,如果去掉延迟加载的话,则表示每次查询的开销都会变得十分的大,如果关联表越多,后果也可以想象得到。所以不建议使用这个方法解决。

  2)、在session关闭之前把我们想要查询的数据先获取了。

  首先需要了解一下session什么时候关闭,也就是它的生命周期。通常情况下hibernate会在

  查询数据关闭session,而使用getHibernateTemplate().get方法查询后会延迟关闭的时间。会在事务结束后才关闭。

  使用*(Interceptor)或过滤器(Filter)控制session。

  spring为解决hibernate这一特性提供的解决方案,可以有效的控制session生命周期。

  3.什么是AOP和OOP,IOC和DI有什么不同?

  解答:

  1)面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面编程。 将通用需求功能从不相关类之中分离出来;同时,能够使得很多类共享一个行为,一旦行为发生变化,不必修改很多类,只要修改这个行为就可以。AOP就是这种实现分散关注的编程方法,它将“关注”封装在“方面”中

  2)控制反转IOC(Inversion of Control) 控制指的就是程序相关类之间的依赖关系.传统观念设计中,通常由调用者来创建被调用者的实例, 在Spring里,创建被调用者的工作不再由调用者来完成,而是由Spring容器完成,依赖关系被反转了,称为控制反转,目的是为了获得更好的扩展性和良好的可维护性。依赖注入(Dependency injection)创建被调用者的工作由Spring容器完成,然后注入调用者,因此也称依赖注入。控制反转和依赖注入是同一个概念。

java开发面试题2

  1.Struts1中actionform和action属于MVC哪一层,为什么?

  解答:actionform和action属于MVC的Model层,Action用来处理业务逻辑,actionform保存用户表单数据以便于在不同页面间传递。而MVC中的model层就是业务逻辑层,该层用于实现具体的业务逻辑、状态维护及管理。

  2.error和exception有什么区别?

  解答:

  error表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况; exception表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说,它表示如果程序运行正常,从不会发生的情况。

  3.Log4J是Apache组织的开源一个开源项目,通过Log4J,可以指定日志信息输出的目的地,如console、file等。Log4J采用日志级别机制,请按照输出级别由低到高的顺序写出日志输出级别。

  解答:Log4J分 为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别, 则应用程序中所有DEBUG级别的日志信息将不被打印出来。

  4.说出几个与spring同类型的开源框架,说出几个与hibernate同类型的开源框架,说出几个与struts同类型的开源框架

  解答:

  1)与spring同类型的开源框架:JUIDE、EJB3.0、picoContainer

  2)与hibernate同类型的开源框架 :ibatis,jdo,JPA

  3)几个与struts同类型的开源框架:webwork,tapestry,JSF


java开发面试题及答案3篇(扩展2)

——java面试题目及答案3篇

java面试题目及答案1

  1.在HashTable中上下文同步是什么意思?

  同步意味着在一个时间点只能有一个线程可以修改哈希表,任何线程在执行hashtable的更新操作前需要获取对象锁,其他线程等待锁的释放。

  2.哪些集合类提供对元素的随机访问?

  ArrayList、HashMap、TreeMap和HashTable类提供对元素的随机访问。

  3.Comparable和Comparator接口的区别是什么?

  Comparable和Comparator接口被用来对对象集合或者数组进行排序。Comparable接口被用来提供对象的自然排序,我们可以使用它来提供基于单个逻辑的排序。 Comparator接口被用来提供不同的排序算法,我们可以选择需要使用的Comparator来对给定的对象集合进行排序。

  4.与Java集合框架相关的有哪些最好的实践?

  (1)根据需要选择正确的集合类型。比如,如果指定了大小,选用Array而非ArrayList。如果想根据插入顺序遍历一个Map,需要使用TreeMap。如果不想重复,应使用Set。

  (2)一些集合类允许指定初始容量,所以如果能够估计到存储元素的数量,可以使用它,就避免了大小调整。

  (3)基于接口编程,而非基于实现编程,它允许后来轻易地改变实现。

  (4)总是使用类型安全的泛型,避免在运行时出现ClassCastException。

  (5)使用JDK提供的不可变类作为Map的key,可以避免实现hashCode()和equals()。

  (6)尽可能使用Collections工具类,或者获取只读、同步或空的集合,而非编写自己的实现。它将会提供代码重用性,它有着更好的稳定性和可维护性。

java面试题目及答案2

  1,谈谈final, finally, finalize的区别。

  final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载

  finally?再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。

  finalize?方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

  2,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。

  3,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。

  Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。

  注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象

  4,&和&&的区别。

  &是位运算符。&&是布尔逻辑运算符。

  5,HashMap和Hashtable的区别。

  都属于Map接口的类,实现了将惟一键映射到特定的值上。

  HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。

  Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。

  6,Collection 和 Collections的区别。

  Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。

  Collection是个java.util下的接口,它是各种集合结构的父接口。

  7,什么时候用assert。

  断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为 false,那么系统会报告一个 AssertionError。它用于调试目的:

  assert(a > 0); // throws an AssertionError if a <= 0

  断言可以有两种形式:

  assert Expression1 ;

  assert Expression1 : Expression2 ;

  Expression1 应该总是产生一个布尔值。

  Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。

  断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记:

  javac -source 1.4 Test.java

  要在运行时启用断言,可使用 -enableassertions 或者 -ea 标记。

  要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。

  要系统类中启用断言,可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。

  可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。


java开发面试题及答案3篇(扩展3)

——java面试题及答案3篇

java面试题及答案1

  1、String 是最基本的数据类型吗?

  答:不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type),剩下的都是引用类型(reference type),Java 5以后引入的枚举类型也算是一种比较特殊的引用类型。

  2、float f=3.4;是否正确?

  答:不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。

  3、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?

  答:对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。

  4、Java有没有goto?

  答:goto 是Java中的保留字,在目前版本的Java中没有使用。(根据James Gosling(Java之父)编写的《The Java Programming Language》一书的附录中给出了一个Java关键字列表,其中有goto和const,但是这两个是目前无法使用的关键字,因此有些地方将其称之为保留字,其实保留字这个词应该有更广泛的意义,因为熟悉C语言的程序员都知道,在系统类库中使用过的有特殊意义的单词或单词的组合都被视为保留字)

  5.Java 中,throw 和 throws 有什么区别?

  答:throw 用于抛出 java.lang.Throwable 类的一个实例化对象,意思是说你可以通过关键字 throw 抛出一个 Error 或者 一个Exception,如: throw new IllegalArgumentException(“size must be multiple of 2〃) 而throws 的作用是作为方法声明和签名的一部分,方法被抛出相应的异常以便调用者能处理。Java 中,任何未处理的受检查异常强制在 throws 子句中声明。

  6.Java 中,Serializable 与 Externalizable 的区别?

  答:Serializable 接口是一个序列化 Java 类的接口,以便于它们可以在网络上传输或者可以将它们的状态保存在磁盘上,是 JVM 内嵌的默认序列化方式,成本高、脆弱而且不安全。Externalizable 允许你控制整个序列化过程,指定特定的二进制格式,增加安全机制。

  7.Java 中,DOM 和 SAX 解析器有什么不同?

  答:”DOM 解析器将整个 XML 文档加载到内存来创建一棵 DOM 模型树,这样可以更快的查找节点和修改 XML 结构,而 SAX 解析器是一个基于事件的解析器,不会将整个 XML 文档加载到内存。由于这个原因,DOM 比 SAX 更快,也要求更多的内存,不适合于解析大 XML 文件。


java开发面试题及答案3篇(扩展4)

——java常见面试题3篇

java常见面试题1

  1.什么是Java虚拟机?为什么Java被称作是“*台无关的编程语言”?

  Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。

  Java被设计成允许应用程序可以运行在任意的*台,而不需要程序员为每一个*台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件*台的指令长度和其他特性。

  2.JDK和JRE的区别是什么?

  Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。它同时也包含了执行applet需要的浏览器插件。Java开发工具包(JDK)是完整的Java软件开发包,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行Java应用程序。

  3.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?

  “static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。

  Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。

  4.是否可以在static环境中访问非static变量?

  static变量在Java中是属于类的,它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。

  5.Java支持的数据类型有哪些?什么是自动拆装箱?

  Java语言支持的8中基本数据类型是:

  byte

  short

  int

  long

  float

  double

  boolean

  char

  自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把int转化成Integer,double转化成double,等等。反之就是自动拆箱。

  6.Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?

  Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。

  7.Java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?

  当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数。

  Java中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。

  Java不支持像C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java不会创建默认的复制构造函数。

  8.Java支持多继承么?

  不支持,Java不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。

  9.接口和抽象类的区别是什么?

  Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:

  接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。

  类可以实现很多个接口,但是只能继承一个抽象类

  类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。

  抽象类可以在不提供接口方法实现的情况下实现接口。

  Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。

  Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。

  接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含main方法的话是可以被调用的。

  也可以参考JDK8中抽象类和接口的区别

  10.什么是值传递和引用传递?

  对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响源对象的值。

  对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象所做的改变会反映到所有的对象上。

java常见面试题2

  1.进程和线程的区别是什么?

  进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。线程又叫做轻量级进程。

  2.创建线程有几种不同的方式?你喜欢哪一种?为什么?

  有三种方式可以用来创建线程:

  继承Thread类

  实现Runnable接口

  应用程序可以使用Executor框架来创建线程池

  实现Runnable接口这种方式更受欢迎,因为这不需要继承Thread类。在应用设计中已经继承了别的对象的情况下,这需要多继承(而Java不支持多继承),只能实现接口。同时,线程池也是非常高效的,很容易实现和使用。

  3.概括的解释下线程的几种可用状态。

  线程在执行过程中,可以处于下面几种状态:

  就绪(Runnable):线程准备运行,不一定立马就能开始执行。

  运行中(Running):进程正在执行线程的代码。

  等待中(Waiting):线程处于阻塞的状态,等待外部的处理结束。

  睡眠中(Sleeping):线程被强制睡眠。

  I/O阻塞(Blocked on I/O):等待I/O操作完成。

  同步阻塞(Blocked on Synchronization):等待获取锁。

  死亡(Dead):线程完成了执行。

  4.同步方法和同步代码块的区别是什么?

  在Java语言中,每一个对象有一把锁。线程可以使用synchronized关键字来获取对象上的锁。synchronized关键字可应用在方法级别(粗粒度锁)或者是代码块级别(细粒度锁)。

  5.在监视器(Monitor)内部,是如何做线程同步的?程序应该做哪种级别的同步?

  监视器和锁在Java虚拟机中是一块使用的。监视器监视一块同步代码块,确保一次只有一个线程执行同步代码块。每一个监视器都和一个对象引用相关联。线程在获取锁之前不允许执行同步代码。

  6.什么是死锁(deadlock)?

  两个进程都在等待对方执行完毕才能继续往下执行的时候就发生了死锁。结果就是两个进程都陷入了无限的等待中。

  7.如何确保N个线程可以访问N个资源同时又不导致死锁?

  使用多线程的时候,一种非常简单的避免死锁的方式就是:指定获取锁的顺序,并强制线程按照指定的顺序获取锁。因此,如果所有的线程都是以同样的顺序加锁和释放锁,就不会出现死锁了。


java开发面试题及答案3篇(扩展5)

——出纳面试题及答案3篇

出纳面试题及答案1

  1、什么是出纳复核制度?

  答案:指一切现金实物的收付和交接及出纳各类账簿的记载,都要换人复核,不得一人办理。做到职责明确,相互监督,密切协作,准确及时。

  2、什么是出纳“双先”制度?

  答案:即现金(实物)收入,先收款后记账,现金(实物)付出,先记账后付款。在办理业务时,要严格顺序操作,避免发生差错。

  (1)现金(实物)收入先收款后记账。指收入现金(实物)时先由出纳部门将现金(实物)收妥后,凭证才能传递会计部门凭以记账。

  (2)现金(实物)付出先记账后付款。付出现金(实物)时,先由会计部门审查凭证并记账后,出纳部门才能凭以办理付款。

  3、什么是出纳登记制度?

  答案:(1)指办理现金和实物收付、转移时,必须逐笔序时记载现金收入、付出日记簿和其他有关的账簿。及时反映收入或付出的现金(实物)数额和控制凭证的数量,不得延误。

  (2)券别登记。指办理现金收付业务时,必须在收付款凭证的背面加盖券别印章,并登记款项的券别张数和金额。

出纳面试题及答案2

  1、什么是出纳交接制度?

  答案:出纳人员因工作变动,现金或有价证券的出入库、调拨、转移以及库房钥匙、业务公章、枪支弹药等重要物品换人经管时,都必须办理交接登记手续,做到当面交接清楚,手续严密,记录在案,有据可查。

  2、什么是出纳查库制度?

  答案:查库是指上级领导或有关部门对出纳业务、库存现金、库房管理进行的定期或不定期的检查。无论那一级查库都必须按以下要求进行检查:

  (1)市地信用合作管理部门每半年要对辖属县联社营业部的业务库存全面检查一次。

  (2)县联社主任或分管主任每季度要对联社查库一次,对所辖营业单位每年至少组织一次全面性的查库;县联社出纳管理部门对所属基层营业单位每季至少查库一次,并经常检查督促查库制度的贯彻落实情况。

  (3)基层信用社主持工作的主任每月要不定期全面查库一次。

  (4)基层信用社内勤主任或指定人员每月对所辖营业网点(门市、分社、储蓄所等)要不定期全面查库一次。


java开发面试题及答案3篇(扩展6)

——面试题及答案 (菁选2篇)

面试题及答案1

  (1)问题:请给我们谈谈你自己的一些情况

  回答:简要的描述你的相关工作经历以及你的一些特征,包括与人相处的能力和个人的性格特征。如果你一下子不能够确定面试者到底需要什么样的内容,你可以这样说:“有没有什么您特别感兴趣的范围?”

  点评:企业以此来判断是否应该聘用你。通过你的谈论,可以看出你想的是如何为公司效力还是那些会影响工作的个人问题。当然,还可以知道你的一些背景。

  (2)问题:你是哪年出生的?你是哪所大学毕业的?等等

  回答:我是XXXX年出生的。我是XX大学毕业的。

  点评:这类问题至为关键的是要针对每个问题简洁明了的回答,不可拖泥带水,也不必再加什么说明。完全不必再画蛇添足的说“我属X,今年XX岁”之类的话。至于专业等或许主考官接下来的问题就是针对此而言的,故而不必迫不及待和盘托出。

  (3)问题:请谈一下你对公司的看法,为什么你想来公司工作?

  回答:可根据你先前对该公司的情报收集,叙述一下你对公司的了解。适当的对公司的声誉、产品和发展情况予以赞美。还可以提提你为了了解公司的情况所做的努力然后就说你非常喜欢这个工作,而且你的能力也非常适合并能胜任这份工作。

  点评:此问目的测试一下你对公司的了解和喜欢的程度,看看你的能力是否符合公司的要求和方向。看看你是真正地愿意为公司效力,还是仅仅冲着公司的福利、声望和工作的稳定。

  (4)问题:你认为对你来说现在找一份工作是不是不太容易,或者你很需要这份工作? 回答:

  1.是的。

  2.我看不见得。

  点评:

  一般按1回答,一切便大功告成。

  有些同学为了显示自己的“不卑不亢“,强调个人尊严,故按2回答。结果,用人单位打消了录用该生的念头,理由是:“此人比较傲“一句话,断送了该生一次较好的就业机会。

  (5)问题:你是怎么应聘到我们公司的?

  回答:贵公司是国际上有名的汽车工业公司,虽然我学的专业不是汽车专业,但我一直留意、关心贵公司的发展,特别是贵公司注重对员工的培训,更让我心动,另外象贵公司这样大的企业,我想是各种专业人才都需要的,便毅然前来应聘。

  点评:该毕业生的专业虽然不是该公司紧缺的专业,但他分析了公司招聘职位的具体要求,认为可以应试该公司的某一种职位要求。(如管理、营销、秘书),如食品工程专业的求职面远不只局限于食品的加工企业,可延伸至饮品、酒类、保健品、调味品甚至酒楼等多个行业。都会有适合自己的职位。

  (6)问题:请你谈谈对我单位的看法

  回答:我对贵单位还没什么了解,故谈不出看法

  点评:象这样的回答,一般面试不成功多,如你很想进入该单位,就不妨实地去单位“侦察”一番,或收集有关的资料。如有一位毕业生,他有意去国家进出口银行工作,便通过朋友的关系弄到了一本进出口银行的基本业务材料,从而在面试中对答如流,赢得了招聘单位的赏识。并能以自身的优势来说明为何应聘这工作,做到有的防矢,给主考官留下了深刻的印象。因此,收集资料,了解单位,可以帮助求职者认清主要方向,更精确,更客观地审视主聘单位,选择适合自己发展的单位,避免走弯路。

  (7)问题:以你的资历条件,完全可以到大公司任职,你怎么想到我们小企业?

  回答:

  1.哎,没办法,一时没有应聘到大企业,况且,毕业时间又到了,否则只能回当地就业,因此先就业再说。

  2.小企业有他自己的优势,在用人方面非常重视,自己虽然资历条件尚可,我想,在你们这样的企业更能发挥自己的作用。

  点评:一个还未工作就想以后跳槽的员工,是无论如何不能指望他尽心尽力的干好工作的,因此,即使有此想法,也不能说出来,说不定工作后受到企业重用,本人的作用也发挥的特别好,而不想再走了呢?

  (8)问题:你为什么希望到我们公司工作?

  回答:我觉得贵公司力量雄厚,领导得力,上下一心,适于一切有才干的人发展。

  忌:“我是学电子的,我到这里才是专业对口。”看情况而定。

  “我来这里上班离家近。”

  “我喜欢你们这儿。”

  “听说你们公司月薪较高。”

  点评:回答问题要从对方入题,引起对方好感,使对方感到你能尊重,关心公司的需要,愿为公司尽微薄之力。

  (9)问题:如果本公司录用你,你最希望在哪个部门工作?

  回答:

  忌:“到哪个部门都行”

  应:“本人希望到XX部门,但也很乐意接受公司的其他安排。

  点评:不要说得太随意,太肯定。比较稳妥的办法是首先表明自己的志向和兴趣,再表示服从安排。

  (10)问题:你愿意被外派工作吗?你愿意经常出差吗?

  回答:愿意,反正我无牵无挂,到哪儿工作都可以。

  点评:这是主试者通过提问来透露他要找的是什么样的人,此信息已经很明白地告诉你,他所期待的回答是什么。对于此类问题应聘者留意倾听。从“话中之话”中找出应试者实际需要的线索。

面试题及答案2

  (1)问题:我怎样相信对这个职位你是最好的人选呢?

  回答:根据这个职位的性质和我们刚才的谈话,我推断你需要的是工作积极的人,能够设定目标,不惧怕挑战的人。我就具有这些品质,让我再告诉你一些我在校时的经历,它们能说明我确实是你所需要的最好的人选。

  点评:设身处地替面试官想一想,考虑一下招聘者需要什么样的人,你又在哪些方面符合他们的要求。根据要求,谈出自己应聘的优势。

  (2)问题:如果我能给你任何你想要的工作,你会选择什么?你真正想做的是什么工作?

  回答:就是这份工作。

  点评:你可能觉得这是个怪问题,事实上常有这样的问题。这个问题是假设每个人都有未实现的梦想,都不能做他真正想做的事,亦即或多或少每个人都在妥协。若你真的谈了你的梦想,而他只会为圆你梦想的梦,而不录用你。因此,你确实要这份工作,那么答案只有一个。

  (3)问题:为什么你还没有找到工作?

  回答:我正在谨慎选择我的工作,本来我可以选择别的工作的,可是那些工作和现在这一个不同,我实在看不出它们会对我的事业进展有帮助。

  点评:如果你真的拒绝了其他人的录取,那是再好不过了,如果其他企业都没有录取你,哪也不一定有问题。别人不能只因为你现在没有工作,就断定都没有人录取你,不要给人这样的错觉。

  (4)问题:你对我们公司有多少了解?

  回答:

  1.完全不了解。

  2.因为对贵公司有关方面相当有兴趣,所以才来应聘.

  点评:若回答1.那就没有必要再说下去了,但录用的机会也就小了。最好的回答是2,这是公司想测试应聘者对公司的兴趣,关注程度,以后进公司工作的意愿的问题,因此,最好要稍稍记住公司的简介内容和招聘人事广告内容。

  (5)问题:你对公司有何印象?

  回答:感觉很好,在其他公司没有这样的感受。

  点评:或者说出面试当天的印象就可以了,因为还没有正式进入公司上班,所以主试者也不会太过刁难。

  (6)问题:你谈谈选择这份工作的动机?

  回答:“这个职位刚好是我的专业对口,能把学的书本知识在实践中更好地应用。”

  “我虽然学的专业与这职位有区别,但我对这方面的能力较强,相信自己能干好这份工作。”

  点评:这是测试面试者对这份工作的理解程度及热忱,并筛选因一时兴起而来应聘的人。

  (7)问题:你家在外地,我们单位无住宿,你如何看待呢?

  回答:家在外地,贵单位无住宿条件,这些都不影响我来应聘贵公司,住宿我可以自己解决,无须单位操心,我看重贵公司的发展前途。

  点评:不要因为个人生活上的小问题,而错失良机。主试者也想看看你对困难的看法,自信心程度。

  (8)问题:我们不限定固定职位,你认为自己最适合做什么?

  回答:

  忌:“公司安排我做什么就做什么!”太随意。

  “理想的职位就是有机会让我一展专长,为公司的发展贡献自己的学识。”太空。

  应:我学的是XX专业,我认为XX职位比较适合我。

  点评:主试者问你问题,就是想要一个明确的答案,且明确的回答给人以有思想、有主见、有活力的印象。象上面的回答,是犯了一个错误,然而几乎每个人都会犯同样的错误,他们总是说自己干什么都可以。因此,回答这样的问题,干脆用自己的心里话表白,实事求是,至少让主试者听起来感到舒服些。

  (9)问题:你希望从事什么样的工作?

  回答:根据贵公司的招聘职位,我认为**职位可能比较适合我,有利于我的能力的发挥。当然,其他有些职位也是可做的,人贵在学习

  点评:应试者可以应聘的职位作出大致的设想,让主试人了解自己的抱负与努力方向。由于每个单位都有自己的人事政策,其工作安排未必能完全与求职者的愿望相一致,尤其对一个初出茅庐的大学生来说,从基层做起,从小事做起也是应该的。但是,又不能随便回答:“到哪里工作都可以。”这让人觉得像在“乞讨工作”,被人看轻。所以要掌握分寸。

  (10)问题:你为什么要应聘我们公司?

  回答:看了贵公司的广告及要求,感到自己比较符合公司的招聘条件,另外,对贵公司也有些了解,自己若能有幸成为贵公司的一员,是能有助于自己能力的发挥与发展的。

  点评:这样的回答,可显示出自己积极进取的态度。在谈论用人单位时,态度要诚恳、谦和。不论大单位或小单位,都有其优胜和劣势,应试者应视其实际情况,提出自己的见解,不要牵强附会,如果一味往对方脸上贴金,反而会令人反感。