java开发面试题及答案

上传人:公**** 文档编号:491096207 上传时间:2023-01-20 格式:DOC 页数:10 大小:24.50KB
返回 下载 相关 举报
java开发面试题及答案_第1页
第1页 / 共10页
java开发面试题及答案_第2页
第2页 / 共10页
java开发面试题及答案_第3页
第3页 / 共10页
java开发面试题及答案_第4页
第4页 / 共10页
java开发面试题及答案_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《java开发面试题及答案》由会员分享,可在线阅读,更多相关《java开发面试题及答案(10页珍藏版)》请在金锄头文库上搜索。

1、java开发面试题及答案java开发面试题及答案Java开发程序面试中,面试者的提早准备很有必要,你理解Java面试题目吗?以下是阳光网帮你们整理的java开发面试题及答案,一起来学习啦。java开发面试题及答案(一)1.JSP页面之间传递参数的方法有哪些?解答:1)request2)session3)application4)提交表单5)超链接2.forward 和redirect的区别解答:forward是容器中控制权的转向,是效劳器恳求资源,效劳器直接访问目的地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给阅读器,阅读器根本不知道效劳器发送的内容是从哪儿来的,所以它的地

2、址栏中还是原来的地址。redirect就是效劳端根据逻辑,发送一个状态码,告诉阅读器重新去恳求那个地址,一般来说阅读器会用刚刚恳求的所有参数重新恳求,并且从阅读器的地址栏中可以看到跳转后的链接地址。前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接;在有些情况下,比方,需要跳转到一个其它效劳器上的资源,那么必须使用sendRedirect()方法。3.Java反射机制的作用?解答:Java反射机制的作用是:1)在运行时判断任意一个对象所属的类。2)在运行时构造任意一个类的对象。3)在运行时判断任意一个类所具有的成员变量和方法。4)在运行时调用任

3、意一个对象的方法4.你是怎么理解java的泛型的?解答: 在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的任意化;,任意化;带来的缺点是要做显式的强迫类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进展的。对于强迫类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个平安隐患。泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创立中,分别称为泛型类、泛型接口、泛型方法。泛型的好处是在编译的时候检查类型平安,并且所有的强迫转换都是自

4、动和隐式的,进步代码的重用率。5.JAVA源文件中是否可以包括多个类,有什么限制解答:一个java源文件中可以包含多个类,每个源文件中至多有一个public类,假如有的话,那么源文件的名字必须与之一样。假如源文件中没有public类,那么源文件用什么名字都可以,但最好还是具有特定的意义,免得自己都不记得里面写的是什么了。6.在一个千万级的数据库查寻中,如何进步查询效率?分别说出在数据库设计、SQL语句、java等层面的解决方案。解答:1)数据库设计方面:a. 对查询进展优化,应尽量防止全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。b. 应尽量防止在 where

5、子句中对字段进展 null 值判断,否那么将导致引擎放弃使用索引而进展全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=0c. 并不是所有索引对查询都有效,SQL是根据表中数据来进展查询优化的,当索引列有大量数据重复时,查询可能不会去利用索引,如一表中有字段sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用。d. 索引并不是越多越好,索引固然可以进步相应的 select 的效率,但同时也降低

6、了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视详细情况而定。一个表的索引数最好不要超过6个,假设太多那么应考虑一些不常使用到的列上建的索引是否有必要。e. 应尽可能的防止更新索引数据列,因为索引数据列的顺序就是表记录的物理存储顺序,一旦该列值改变将导致整个表记录的顺序的调整,会消耗相当大的资源。假设应用系统需要频繁更新索引数据列,那么需要考虑是否应将该索引建为索引。f. 尽量使用数字型字段,假设只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接时会

7、逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。g. 尽可能的使用 varchar/nvarchar 代替 char/nchar ,因为首先变长字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些。h. 尽量使用表变量来代替临时表。假如表变量包含大量数据,请注意索引非常有限(只有主键索引)。i. 防止频繁创立和删除临时表,以减少系统表资源的消耗。j. 临时表并不是不可使用,适当地使用它们可以使某些例程更有效,例如,当需要重复引用大型表或常用表中的某个数据集时。但是,对于一次性事件,最好使用导出表。k. 在新建临时表时,假如一次性插入数据

8、量很大,那么可以使用 select into 代替 create table,防止造成大量 log ,以进步速度;假如数据量不大,为了缓和系统表的资源,应先create table,然后insert。l. 假如使用到了临时表,在存储过程的最后务必将所有的临时表显式删除,先 truncate table ,然后 drop table ,这样可以防止系统表的较长时间锁定。2)SQL语句方面:a. 应尽量防止在 where 子句中使用!=或操作符,否那么将引擎放弃使用索引而进展全表扫描。b. 应尽量防止在 where 子句中使用 or 来连接条件,否那么将导致引擎放弃使用索引而进展全表扫描,如: s

9、elect id from t where num=10 or num=20 可以这样查询: select id from t where num=10 union all select id from t where num=20c. in 和 not in 也要慎用,否那么会导致全表扫描,如: select id from t where num in(1,2,3) 对于连续的数值,能用 between 就不要用 in 了: select id from t where num between 1 and 3d. 下面的查询也将导致全表扫描: select id from t where

10、name like %abc%e. 假如在 where 子句中使用参数,也会导致全表扫描。因为SQL只有在运行时才会解析部分变量,但优化程序不能将访问方案的选择推延到运行时;它必须在编译时进展选择。然而,假如在编译时建立访问方案,变量的值还是未知的,因此无法作为索引选择的输入项。如下面语句将进展全表扫描: select id from t where num=num 可以改为强迫查询使用索引: select id from t with(index(索引名) where num=numf. 应尽量防止在 where 子句中对字段进展表达式操作,这将导致引擎放弃使用索引而进展全表扫描。如: se

11、lect id from t where num/2=100 应改为: select id from t where num=100*2g. 应尽量防止在where子句中对字段进展函数操作,这将导致引擎放弃使用索引而进展全表扫描。如: select id from t where substring(name,1,3)=abcndash;name以abc开头的id select id from t where datediff(day,createdate,2022-11-30prime;)=0ndash;2022-11-30生成的id 应改为: select id from t where

12、name like abc% select id from t where createdate=2022-11-30prime; and createdateh. 不要在 where 子句中的=;左边进展函数、算术运算或其他表达式运算,否那么系统将可能无法正确使用索引。i. 不要写一些没有意义的查询,如需要生成一个空表构造: select col1,col2 into #t from t where 1=0 这类代码不会返回任何结果集,但是会消耗系统资源的,应改成这样: create table #t()j. 很多时候用 exists 代替 in 是一个好的选择: select num fr

13、om 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.合理摆正

14、系统设计的位置。大量数据操作,和少量数据操作一定是分开的。大量的数据操作,肯定不是ORM框架搞定的。,c.使用jDBC链接数据库操作数据d.控制好内存,让数据流起来,而不是全部读到内存再处理,而是边读取边处理;e.合理利用内存,有的数据要缓存java开发面试题及答案(二)1.请解释分布式事务管理?解答:分布式事务是指事务的参与者、支持事务的效劳器、资源效劳器以及事务管理器分别位于不同的分布式系统的不同节点之上。为了实现分布式事务,需要使用下面将介绍的两阶段提交协议。阶段一:开场向事务涉及到的全部资源发送提交前信息。此时,事务涉及到的资源还有最后一次时机来异常完毕事务。假如任意一个资源决定异常完毕事务,那么整个事务取消,不会进展资源的更新。否那么,事务将正常执行,除非发生灾难性的失败。为了防止会发生灾难性的失败,所有资源的更新都会写入到日志中。这些日志是永久性的,因此,这些日志会幸免遇难并且在失败之后可以重新对所有资源进展更新。阶段二:只在阶段一没有异常完毕的时候才会发生。此时,所有能被定位和单独控制的资源管理器都将开场执行真正的数据更新。 在分布式事务两阶段提交协议中,有一个主事务管理器

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号