TP钱包官网下载的最佳实践 JAVA笔试题(全解)
目录
一. Java基础部分................................................................. 9
1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 9
2、说说&和&&的区别。........................................................... 9
3、在JAVA中如何跳出当前的多重嵌套循环?........................ 9
4、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 10
6、用最有效率的方法算出2乘以8等於几?......................... 10
7、请设计一个一百亿的计算器............................................. 10
8、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 10
9、"=="和equals方法究竟有什么区别?............................. 10
10、静态变量和实例变量的区别?........................................ 11
11、是否可以从一个static方法内部发出对非static方法的调用? 11
12、Integer与int的区别................................................... 11
13、Math.round(11.5)等于多少? Math.round(-11.5)等于多少? 11
14、请说出作用域public,private,protected,以及不写时的区别 11
15、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?............................................................................................ 12
17、写clone()方法时,通常都有一行代码(不是必须有),是什么? 12
18、面向对象的特征有哪些方面........................................... 12
19、java中实现多态的机制是什么?................................... 12
20、abstract class和interface有什么区别?................... 12
21、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?..................................................................... 13
22、什么是内部类?Static Nested Class和Inner Class的不同。 13
23、内部类可以引用它的包含类的成员吗?有没有什么限制? 13
24、String是最基本的数据类型吗?..................................... 13
27、String和StringBuffer的区别..................................... 14
28、如何把一段逗号分割的字符串转换成一个数组?............. 14
30、final, finally, finalize的区别。............................ 14
31、运行时异常(Runtime)与检查异常(Checked)有何异同?. 15
32、error和exception有什么区别?................................... 15
33、Java中的异常处理机制的简单原理和应用。.................. 15
34、请写出你最常见到的5个RuntimeException。.............. 15
35、Java语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?............................. 16
36,Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?......................................... 16
38、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 17
39. 下面两个方法同步吗?(自己发明)............................. 17
40、多线程有几种实现方法?同步有几种实现方法?............... 18
41、启动一个线程是用run()还是start()?......................... 18
42、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?......................................................................... 18
43、线程的基本概念、线程的基本状态以及状态之间的关系. 18
45、介绍Collection框架的结构......................................... 18
46、ArrayList和Vector的区别.......................................... 19
47、HashMap和Hashtable的区别........................................ 19
48、List和 Map区别?......................................................... 19
49、List, Set, Map是否继承自Collection接口?.............. 19
50、List、Map、Set三个接口,存取元素时,各有什么特点? 19
51、说出ArrayList,Vector, LinkedList的存储性能和特性 19
51、去掉一个Vector集合中重复的元素............................... 19
53、Collection和 Collections的区别。........................... 20
54、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?..................................................... 20
55、你所知道的集合类都有哪些?主要方法?...................... 20
56、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?....................................................................................... 20
68、说出一些常用的类,包,接口,请各举5个.................. 20
59、Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?............................................................ 21
60、字节流与字符流的区别.................................................. 21
61、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。..................................................................................... 21
62、描述一下JVM加载class文件的原理机制?.................... 21
63、heap和stack有什么区别。.......................................... 21
64、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?.................................................. 21
65、什么时候用assert。..................................................... 22
66、能不能自己写个类,也叫java.lang.String?.............. 22
67、SSH集成方式................................................................. 22
二.算法与编程..................................................................... 23
1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 23
2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。..................................... 24
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉的半个”。 25
4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。.............................................................................. 25
5、说明生活中遇到的二叉树,用java实现二叉树............... 26
8、递归算法题1................................................................... 27
9、递归算法题2................................................................... 28
10、排序都有哪几种方法?请列举。用JAVA实现一个快速排序。 28
11、有数组a[n],用java代码将数组元素顺序颠倒............ 30
12 不使用递归遍历二叉树.................................................... 30
三.前端页面部分.................................................................. 32
3.当service有一个实例变量,doGet和doPost去调用这个变量,会出现什么问题,你是如何解决的。................................................................... 32
4.有三台服务器,如果在一台服务器上登陆了这个用户,其他两台就不能再登陆这个用户,使用session共享,你是怎么做的。............................. 32
5.写一个自定义标签要继承什么类....................................... 32
6.Jsp如何处理json............................................................ 32
7.Jsp的重定向和转发的流程有什么区别.............................. 32
8.Jsp和servlet的区别...................................................... 32
9.jsp可以操作窗口吗?...................................................... 32
10.session的主要几个方法的区别....................................... 33
11.jsp的三大指令,七大动作的具体功能............................ 33
12.获取页面的元素和值有几种方式,分别说一下................. 33
13.servlet和javaScript的区别,他们分别是什么作用..... 33
14.jsp的执行原理............................................................... 34
16.HTML和Servlet的异同................................................... 34
17.会话跟踪有哪些,他们的区别是什么............................... 34
18.session和application的作用....................................... 34
19.request ,response,session 和 application是怎么用的 34
20.有几种方式将页面的值传到后台...................................... 34
21.一个form表单的值如何获取........................................... 34
22.传递参数到后台有几种方式............................................. 35
23.Jsp中父页面中怎么拿到子页面的表单元素,不是拿值怎么拿 35
24.定义一个String类型的字符串,如果重定向之后还能不能获得这个数据 35
25.404和500是什么意思..................................................... 35
26.写出5种JSTL常用标签.................................................. 35
28.
页面把一个元素隐藏的方法.................................................. 35
29.Session,application,cookie的区别.......................... 35
30.我们在web应用开发过程中经常遇到输出某种编码的字符,如ISO-8859-1,如何输出一个某种编码的字符串..................................................... 35
32.怎么判断用户请求时是第一次,如果客户端和服务端断开怎么连到上一次操作 35
33.如果创建servlet实例不用构造方法,怎么创建一个servlet实例 35
34.Servlet是安全的吗?当service有一个实例变量,doGet和doPost去调用这个变量,会出现什么问题,你是如何解决的................................ 36
36.说明一下jsp中<jsp: include page..>和<%@ include file%>的区别 36
<jsp:include page=""/> 动态导入...................................... 36
37. pageContext有什么作用............................................... 36
39.Filter与拦截器怎么执行的............................................ 36
40.Jsp中如何进行分页,项目中如何进行分页?.................. 36
41,关于Ajax的技术组成与核心原理.................................. 37
43.Xhtml和html有什么区别。............................................ 38
44.css的引入方式有哪些?link和@import的区别是?....... 38
45.css选择符有哪些?哪些属性可以继承?优先级如何计算?内联和important哪个优先级高?.............................................................................. 38
46.前端页面由哪三层构成,分别是什么?作用是什么?...... 38
47.你曾经在哪些浏览器测试过兼容?这些浏览器的内核分别是什么? 38
48.<img>标签上title与alt属性的区别是什么?............... 38
49.写出几种IE6 BUG的解决方法?...................................... 38
50.描述css reset的作用和用途。...................................... 39
51.你如何对网站的文件和资源进行优化?期待的解决方案包括: 39
52.什么是语义化的html?................................................... 39
53.清除浮动有几种方式?各自的优缺点是?........................ 39
54.解释下 CSS sprites,以及你要如何在页面或网站中使用它? 39
55,html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和HTML5??.......................................... 40
56.javascript的同源策略。............................................... 40
57、HTML的 form提交之前如何验证数值文本框的内容全部为数字?否则的话提示用户并终止提交?............................................................................ 40
59. jsp有哪些内置对象?作用分别是什么?分别有什么方法? 40
60. jsp有哪些动作?作用分别是什么?................................. 41
61、JSP的常用指令............................................................. 41
62. JSP中动态INCLUDE与静态INCLUDE的区别?................ 41
63、页面间对象传递的方法.................................................. 42
三. Java web部分............................................................... 42
1、Tomcat的优化经验.......................................................... 42
2、HTTP请求的GET与POST方式的区别................................ 42
3、解释一下什么是servlet;............................................... 42
4、说一说Servlet的生命周期?........................................... 42
5、Servlet的基本架构........................................................ 42
6、Servlet API中forward()与redirect()的区别?........... 42
7、Request对象的主要方法:.............................................. 43
8、request.getAttribute()和 request.getParameter()有何区别? 43
9、MVC的各个部分都有那些技术来实现?如何实现?.............. 43
10、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso-8859-1等,如何输出一个某种编码的字符串?.............................................. 44
四.数据库部分..................................................................... 44
1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。 44
2、ORACLE和MySQL的区别。............................................... 44
3、存储过程和函数的区别。................................................ 45
4、Oracle导入和导出方式................................................... 45
5、Oracle分页方法............................................................. 45
6、mysql的分页方法............................................................ 45
7、解释什么是死锁,如何解决Oracle中的死锁?............... 46
8、列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排序............................................................................................ 46
9、存储过程与触发器必须讲,经常被面试到?...................... 46
10、数据库三范式是什么?.................................................... 48
11、说出一些数据库优化方面的经验?.................................. 49
12、union和union all有什么不同?................................... 49
13.用一条SQL语句查询出每门课都大于80分的学生姓名.... 49
14.所有部门之间的比赛组合................................................ 50
15.显示文章标题,发帖人、最后回复时间........................... 50
16.删除除了id号不同,其他都相同的学生冗余信息............. 50
18.求出发帖最多的人:....................................................... 50
19、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决?... 51
21、注册Jdbc驱动程序的三种方式...................................... 51
22、用JDBC如何调用存储过程............................................. 51
23、JDBC中的PreparedStatement相比Statement的好处.... 51
24、Class.forName的作用?为什么要用?.............................. 51
25、大数据量下的分页解决方法。....................................... 52
26、用 JDBC查询学生成绩单,把主要代码写出来(考试概率极大). 52
27、说出数据连接池的工作机制是什么?............................... 52
28、为什么要用 ORM? 和 JDBC有何不一样?......................... 53
29. 数据库大数据处理......................................................... 53
30. 如何写出一个快排......................................................... 53
31. 什么是事务?什么是锁?.............................................. 54
32. 维护数据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑?为什么?............................................................................................ 54
33. 什么是内存泄漏?......................................................... 54
34.触发器的作用?.............................................................. 54
触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。.................................................. 54
35. 常用的oracle操作的命令............................................. 54
36, 索引的优缺点............................................................ 55
37.使用oracle伪列删除表中重复记录:?......................... 55
五. XML部分........................................................................ 55
1、xml有哪些解析技术?区别是什么?................................... 55
2、你在项目中用到了xml技术的哪些方面?如何实现的?...... 55
4、XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?............................................................................................ 56
六.流行的框架与新技术....................................................... 56
1、.................................................. 谈谈你对Struts的理解。. 56
2、Struts优缺点................................................................. 56
3、STRUTS的应用(如STRUTS架构)....................................... 57
4、谈谈你对Hibernate的理解。......................................... 57
5、你对Spring的理解。..................................................... 58
6.Spring由哪些模块组成?................................................... 58
7. 核心容器模块。.............................................................. 58
9、写Hibernate的一对多和多对一双向关联的orm配置?.... 58
10、在DAO中如何体现DAO设计模式?.................................. 59
11、spring+Hibernate中委托方案怎么配置?....................... 59
12. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决;........................................... 59
13.介绍一下Hibernate的二级缓存...................................... 59
14、Jdo是什么?................................................................... 60
16. IOC的优点是什么?................................................. 61
18. 什么是Spring的依赖注入?....................................... 61
19. 有哪些不同类型的IOC(依赖注入)方式?.............. 61
20. 哪种依赖注入方式你建议使用,构造器注入,还是 Setter方法注入? 61
21. Spring对DAO的支持................................................... 61
22. 解释AOP................................................................... 61
23. Aspect 切面.............................................................. 61
24. 在Spring AOP 中,关注点和横切关注的区别是什么? 62
25. 连接点......................................................................... 62
26. 通知............................................................................ 62
29 SpringMvc怎么和AJAX相互调用的................................. 62
30当一个方法向AJAX返回特殊对象,譬如Object,List等,需要做什么处理 62
31 SpringMvc里面拦截器是怎么写的................................... 62
32讲下SpringMvc的执行流程.............................................. 63
33解释Spring支持的几种bean的作用域。......................... 63
34,Spring框架中的单例bean是线程安全的吗?.................. 63
35. 解释Spring框架中bean的生命周期。........................ 63
36.哪些是重要的bean生命周期方法? 你能重载它们吗?. 64
38. 什么是基于Java的Spring注解配置? 给一些注解的例子. 64
39. 什么是基于注解的容器配置?....................................... 64
40. 怎样开启注解装配?.................................................... 64
41. 使用Spring通过什么方式访问Hibernate?................... 64
42. Spring支持的ORM....................................................... 64
43.如何通过HibernateDaoSupport将Spring和Hibernate结合起来? 64
44. Spring支持的事务管理类型........................................ 65
45. Spring框架的事务管理有哪些优点?.......................... 65
49. 什么是Spring MVC框架的控制器?........................... 65
50. 讲下SpringMvc的核心入口类是什么,Struts1,Struts2的分别是什么 65
51. SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决 65
52. SpingMvc中的控制器的注解一般用那个,有没有别的注解可以替代 65
53. 如果在拦截请求中,我想拦截get方式提交的方法,怎么配置 65
54. 如果在拦截请求中,我想拦截提交参数中包含"type=test"字符串,怎么配置 65
55. SpringMvc中函数的返回值是什么................................. 66
56. SpringMVC怎么样设定重定向和转发的.......................... 66
57. SpringMvc用什么对象从后台向前台传递数据的............ 66
58. SpringMvc中有个类把视图和数据都合并的一起的,叫什么 66
59. 怎么样把ModelMap里面的数据放入Session里面.......... 66
61. 当一个方法向AJAX返回特殊对象,譬如Object,List等,tp钱包官网下载需要做什么处理 66
63. 讲下SpringMvc的执行流程........................................... 66
64, tpwallet最新版官网Hibernate是如何延迟加载?.......................................... 66
66,如何优化Hibernate?................................................... 67
67,在数据库中条件查询速度很慢的时候,如何优化?........... 67
69,Hibernate的主键生成机制............................................ 68
69,Mybatis比IBatis比较大的几个改进是什么?.............. 68
70,什么是MyBatis的接口绑定,有什么好处........................ 69
71,接口绑定有几种实现方式,分别是怎么实现的?............... 69
72,什么情况下用注解绑定,什么情况下用xml绑定............. 69
73,MyBatis实现一对一有几种方式?具体怎么操作的........... 69
74,MyBatis实现一对多有几种方式,怎么操作的.................. 69
75,MyBatis里面的动态Sql是怎么设定的?用什么语法?..... 69
78,讲下MyBatis的缓存..................................................... 69
七.软件工程与设计模式....................................................... 70
1、j2ee常用的设计模式?说明工厂模式。.......................... 70
2、开发中都用到了那些设计模式?用在什么场合?................. 70
八. j2ee部分...................................................................... 71
2、应用服务器与WEB SERVER的区别?................................ 71
3、应用服务器有那些?....................................................... 71
4、J2EE是什么?................................................................. 71
5、J2EE是技术还是平台还是框架?什么是J2EE.................. 71
6、如何给weblogic指定大小的内存?.................................. 71
7、如何设定的weblogic的热启动模式(开发模式)与产品发布模式? 71
8、如何启动时不需输入用户名与密码?................................ 71
9、在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中?........ 71
10、在weblogic中发布ejb需涉及到哪些配置文件............. 71
11、如何在weblogic中进行ssl配置与客户端的认证配置或说说j2ee(标准)进行ssl的配置?................................................................................ 72
九,项目功能实现技术问题(附带源码)............................. 72
1,java实现excel模板导出:-kevin/p/5793276.html............................................................................................ 72
2,java中生成验证码: 72
3,Java-->实现群聊功能(C/S模式--TCP协议): 72
4,Activiti工作流学习-----基于5.19.0版本(4):........... 72
5,Java关于IO流的介绍:................................................. 72
6,MVC权限管理的实现流程:.............................................. 72
7,批量数据上传的sql.xml:.............................................. 72
8, struts—文件的上传和下载:........................................... 72
十. 其他问题....................................................................... 72
1,svn的使用和搭建?........................................................ 72
2,git 命令总结?.............................................................. 74
3.tomcat给你你怎样去调优?............................................... 75
4,Tomcat有几种部署方式................................................... 76
第一种方法:....................................................................... 76
5,eclipse中server location灰色,如何修改?.............. 77
7,如何加大tomcat可以使用的内存?................................ 77
8,如何加大tomcat连接数?.............................................. 78
一. Java基础部分 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 2、说说&和&&的区别。 3、在JAVA中如何跳出当前的多重嵌套循环?ok: for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
System.out.println("i=" + i + ",j=" + j);
if (j == 5)
break ok;
}
}
int arr[][] ={{1,2,3},{4,5,6,7},{9}};
boolean found = false;
for(int i=0;i<arr.length&& !found;i++) {
for(int j=0;j<arr[i].length;j++){
System.out.println("i=" + i + ",j=" + j);
if(arr[i][j] ==5) {
found = true;
break;
}
}
}
private static int test() {
int count = 0;
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
count++;
System.out.println("i=" + i + ",j=" + j);
if (j == 5) {
return count;
}
}
}
return 0;
}
4、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 6、用最有效率的方法算出2乘以8等於几? 7、请设计一个一百亿的计算器 8、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 9、"=="和equals方法究竟有什么区别? 10、静态变量和实例变量的区别? 11、是否可以从一个static方法内部发出对非static方法的调用? 12、Integer与int的区别int是java提供的8种原始数据类型之一,意思整型,占用4字节。
Integer是java为int提供的封装类,是引用数据类型。
int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。
例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer
在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符串,而int默认的默认值为0,所以用el表达式在文本框中显示时,结果为0,所以,int不适合作为web层的表单数据的类型。
在Hibernate中,如果将OID定义为Integer类型,那么Hibernate就可以根据其值是否为null而判断一个对象是否是临时的,如果将OID定义为了int类型,还需要在hbm映射文件中设置其unsaved-value属性为0。
13、Math.round(11.5)等于多少? Math.round(-11.5)等于多少? 14、请说出作用域public,private,protected,以及不写时的区别
作用域
当前类
同package
子孙类
其他package
public
√
√
√
√
protected
√
√
√
×
friendly
√
√
×
×
private
√
×
×
×
15、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? Override必须发生在父子类之间,Overload可以不在父子类之间 Override的特点:a) 参数列表完全相同:个数相同、类型相同、顺序相同
b) 子类的返回值不能比父类的返回值范围大
c) 子类方法抛出的异常不能比父类方法抛出的异常范围大
d) 修饰符只能为public、protected、friendly,不能为private
e) 父子类方法不能使用static修饰
重载发生在同一个类或父子类之间,重写中参数列表至少满足个数不同、类型不同、顺序不同中的一个条件,不包含父子类之间的static方法 17、写clone()方法时,通常都有一行代码(不是必须有),是什么? 18、面向对象的特征有哪些方面1. 封装,隐藏内部实现,只暴露公共行为
2. 继承,提高代码的重用性
3. 多态,体现现实生活中相似对象的差异性
4. 抽象,抽取现实世界中相似对象的共同点
19、java中实现多态的机制是什么?通过继承父类或实现接口。不同子类或实现类对同一父类方法有不同的实现。根据对象调用相应的实现方法。另外对于相似的方法,可以使用重载。
20、abstract class和interface有什么区别? 21、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 22、什么是内部类?Static Nested Class和Inner Class的不同。内部类就是在一个类的内部定义的类。内部可以定义在除参数位置上的任意位置。印象中有四种方式。
1. 静态内部类需要使用static修饰,而普通内部类不能使用static修饰
2. 静态内部类只能定义在和属性同级,普通内部类可以定义在除参数位置以外的任意位置
3. 静态内部类必需有名称,而普通内部类可以是匿名的
4. 静态内部类没有this引用,只此只能访问外部类的静态成员,而普通内部类可以访问外部类的全部成员
5. 静态内部类访问外部类的同名函数时,使用“外部类名.方法名”即可,而普通内部类需要使用“外部类名.this.外部方法”
6. 静态内部类可以定义静态方法,而普通内部类不能定义静态方法
23、内部类可以引用它的包含类的成员吗?有没有什么限制?1. 如果内部类为静态内部类,只能调用外部类的静态成员;如果有重名成员,需要用“外部类名.成员名”访问;不能调用外部类的对象成员。
2. 如果内部类为非静态内部类,则可以调用外部类的所有成员;如果有重名成员,需要使用“外部类名.this.外部方法”
24、String是最基本的数据类型吗? 27、String和StringBuffer的区别这两个类都实现了CharSequence接口。
1. 类型不同,因为不是一个类,也没有继承关系,做参数时不能共用
2. String对象是不可变对象,不能修改值。而StringBuffer是可变对象,能修改值。
3. 拼接字符串时,String会产生新对象,而StringBuffer只是增加新字符,不产生新对象,因此效率高。
4. String覆盖了equals方法和hashCode方法,而StringBuffer没有覆盖equals方法和hashCode方法,所以,将StringBuffer对象存储进Java集合类中时会出现问题。
28、如何把一段逗号分割的字符串转换成一个数组? 用正则表达式,代码大概为:String [] result = orgStr.split(“,”, -1); 用 StingTokenizer ,代码为:StringTokenizer tokener = new StringTokenizer(s, ",");
String[] result = new String[tokener.countTokens()];
Integer i = 0;
while (tokener.hasMoreTokens()) {
result[i++] = tokener.nextToken();
}
最笨的办法,用String.indexOf()int index = -1;
int oldIndex = 0;
List<String> ss = new ArrayList<String>();
while ((index = s.indexOf(',', index + 1)) != -1) {
ss.add(s.substring(oldIndex, index));
oldIndex = index + 1;
}
if (s.charAt(s.length() - 1) == ',') {
ss.add("");
}
String[] array = ss.toArray(new String[ss.size()]);
System.out.println(Arrays.toString(array));
30、final, finally, finalize的区别。final int[] number = { 20 };
new Thread() {
@Override
public void run() {
for (int k = 0; k < 20; k++) {
number[0]++;
}
}
}.start();
Thread.sleep(10);
System.out.println(number[0]);
31、运行时异常(Runtime)与检查异常(Checked)有何异同? 32、error和exception有什么区别? 33、Java中的异常处理机制的简单原理和应用。 34、请写出你最常见到的5个RuntimeException。 35、Java语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗? Java语言如何进行异常处理见43题 throws为向上抛异常throw程序出错时,手工抛出异常
try尝试执行,里面的语句可能出现异常,如出现异常需要处理
catch处理try中出现的异常
finally在try后执行清理操作,用于释放资源
在try中可以抛出异常 36,Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?
new Thread() {
public void run() {
}
}.start();
new Thread(new Runnable() {
public void run() {
}
}).start();
ExecutorService pool = Executors.newFixedThreadPool(3);
for (int i = 0; i < 10; i++) {
pool.execute(new Runable() {
public void run() {
}
});
}
Executors.newCachedThreadPool().execute(new Runable() {
public void run() {
}
});
Executors.newSingleThreadExecutor().execute(new Runable() {
public void run() {
}
});
38、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 39. 下面两个方法同步吗?(自己发明)class Test {
synchronized static void sayHello3() {
}
synchronized void getX() {
}
}
40、多线程有几种实现方法?同步有几种实现方法? 41、启动一个线程是用run()还是start()? 42、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?如果其它方法中使用当前对象作为锁对象,则不能;
如果其它方法中没有使用当前对象作为锁对象,则能。
43、线程的基本概念、线程的基本状态以及状态之间的关系在多任务操作系统中,为了提高CPU的利用率,可以使用多进程编程。但对进程通信比较困难,进程间数据不能共享,因此可以使用多线程编程。一个进程至少包含一个主入口线程。
单个CPU,在同一时间只能处理一个线程的数据,但是操作系统的任务调度非常快,人眼无法识别,感觉上是多个线程同时执行。有的线程可以已经用完CPU,正在作磁盘操作,此时并不使用CPU,可以让出CPU资源给其它线程使用,提高效率。
线程有生命周期及相关关系和对应方法如下图:
45、介绍Collection框架的结构 46、ArrayList和Vector的区别
1. 线程同步,Vector线程安全,ArrayList线程不安全
2. 效率问题,Vector效率低,ArrayList效率高
3. 增长数量,Vector以1.5倍增长,ArrayList以2倍增长
47、HashMap和Hashtable的区别1. 线程同步,Hashtable线程安全,HashMap线程不安全
2. 效率问题,Hashtable效率低,HashMap效率高
3. HashMap可以使用null作为key,Hashtable不可以使用null为key
4. HashMap使用的是新实现,继承AbstractMap,而Hashtable是继承Dictionary类,实现比较老
5. Hash算不同,HashMap的hash算法比Hashtable的hash算法效率高
6. HashMap把Hashtable的contains方法去掉了,改成containsValue和containsKey。因为contains方法容易让人引起误解。
7. 取值不同,HashMap用的是Iterator接口,而Hashtable中还有使用Enumeration接口
48、List和 Map区别? 49、List, Set, Map是否继承自Collection接口? 50、List、Map、Set三个接口,存取元素时,各有什么特点?List使用get(index)取值,也可以使用Iterator、toArray取值
Set只能通过Iterator、toArray取值
Map取值使用get(key)取值,也可以使用keySet取键值集合,也可使用values取值集合,entrySet取全部映射。
51、说出ArrayList,Vector, LinkedList的存储性能和特性1. ArrayList和Vector使用数组存储元素;LinkedList使用链表存储元素
2. ArrayList和Vector插入删除数据时,需要搬运数据,效率较差;LinkedList使用链表,不需要搬运数据,效率高
3. ArrayList和Vectory查询时,按数组下标查询,不需要遍历,效率高;LinkedList需要遍历,查询效率底
4. ArrayList和Vector的区别见59条
51、去掉一个Vector集合中重复的元素1. 自行遍历,用另外一个Vector来判断是否有重复
2. 用Set(TreeSet或HashSet)来去重
3. 用Apache的CollectionUtil工具类去重
Vector newVector = new Vector();
for (int i = 0; i < vector.size(); i++) {
Object obj = vector.get(i);
if (!newVector.contains(obj))
newVector.add(obj);
}
53、Collection和 Collections的区别。 54、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别? 55、你所知道的集合类都有哪些?主要方法? 56、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 68、说出一些常用的类,包,接口,请各举5个 59、Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 60、字节流与字符流的区别字节流是按字节读取或写入设备,但字符流是以字符为单位读取或写入设备。
如果是二进制文件,需要用字节流读取。一般来说,字符流只处理文本文件。在设备中,大多数情况是以字节形式存储数据的,因此字符流通过需要传入字节流当参数。
61、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。序列化是把内存Java对象保存到存储介质中,反序列化就是把存储介质中的数据转化为Java对象。Java通过ObjectInputStream和ObjectOutputStream实现序列化和反序列化。需要进行序列化的对象的类必须实现Serializable接口,通常情况下需要满足以下条件:
1. 强烈建议手动生成serialVersionUID常量
2. 如果需要加解密的话,需要实现两个方法readObject和writeObject方法
3. 如果使用Hibernate二级缓存或其它缓存服务器的话,对象必须是可序列化的
4. 如果需要远程调用对象或传值的话,则对像需要序列化
5. 序列化类的可序列化成员必须也是可序列化的,不需要序列化的属性用transient修饰
62、描述一下JVM加载class文件的原理机制?1. 查找当前ClassLoader中是否有此class的类对象,有则返回
2. 若没有的话,向上递归所有的父ClassLoader中有无此class类对象,有则返回
3. 若还没有,查找BootstrapClassLoader中有无此class类对象,有则返回
4. 若还没有的话,使用findClass或resolveClass加载类对象
a. 读取class二进制文件
b. 根据字节数组生成Class对象
c. 缓存到当前ClassLoader中
JVM加载class对象是懒加载,按需加载
63、heap和stack有什么区别。 64、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 65、什么时候用assert。 66、能不能自己写个类,也叫java.lang.String?package java.lang;
public class String {
public static void main(String[] args) {
System.out.println("string");
}
}
67、SSH集成方式1. 在web.xml中配置struts的servlet或filter入口类,同时在web.xml中配置spring的listener和配置文件路径
2. 引用SSH所需的jar包放在WEB-INF/lib下,需要有struts-spring-plugin.jar
3. 在struts.xml配置中,把Struts的Action类交由Spring托管
4. 把Hibernate所需的DataSource, SessionFactory, Transcation, HibernateTemplate配置在Spring的配置文件中
5. Dao层的类有时需要继承HiberateDaoSupport类,如果有HibernateTemplate时,可以不继承
6. 把Action、Service、Dao等类注册到Spring中管理
二.算法与编程 1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。package com.bwie.interview;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.StringTokenizer;
public class AnswerB01 {
public static void main(String[] args) throws IOException {
StringTokenizer tokenizer1 = getTokenzer("/a.txt");
StringTokenizer tokenizer2 = getTokenzer("/b.txt");
PrintStream out = new PrintStream("C:/c.txt");
while (tokenizer1.hasMoreTokens() && tokenizer2.hasMoreTokens()) {
out.println(tokenizer1.nextToken());
out.println(tokenizer2.nextToken());
}
out.close();
}
private static StringTokenizer getTokenzer(String fileName) throws IOException {
InputStreamReader reader = new InputStreamReader(AnswerB01.class.getResourceAsStream(fileName));
StringBuilder builder = new StringBuilder(1000);
int length = -1;
char[] cs = new char[1024];
while ((length = reader.read(cs)) != -1) {
builder.append(cs, 0, length);
}
reader.close();
return new StringTokenizer(builder.toString());
}
}
2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
public class AnswerB02 {
public static void main(String[] args) throws IOException {
File sourceFolder = new File("D:/java");
File[] files = sourceFolder.listFiles(new JavaFileFilter());
for (File file : files) {
String absolutePath = file.getName();
String targetFile = "D:/jad/" + absolutePath.substring(0, absolutePath.length() - 5) + ".jad";
copy(file, new File(targetFile));
}
}
private static void copy(File source, File target) throws IOException {
FileInputStream input = new FileInputStream(source);
FileOutputStream out = new FileOutputStream(target);
int length = -1;
byte[] bs = new byte[1024];
while ((length = input.read(bs)) != -1) {
out.write(bs, 0, length);
}
input.close();
out.close();
}
private static final class JavaFileFilter implements FilenameFilter {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".java");
}
}
}
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉的半个”。import java.io.IOException;
public class AnswerB03 {
public static void main(String[] args) throws IOException {
String s = "我ABC汉DEF";
System.out.println(substring(s, 6));
}
public static String substring(String s, int length) {
char[] cs = s.toCharArray();
StringBuilder builder = new StringBuilder();
int count = 0;
for (char c : cs) {
if (isAsc(c)) {
count++;
} else {
count += 2;
}
if (count > length) {
break;
}
builder.append(c);
}
return builder.toString();
}
public static boolean isAsc(char c) {
return c < 128;
}
}
4、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。String content = "中国aadf的111萨bbb菲的zz萨菲";
HashMap map = new HashMap();
for (int i = 0; i < content.length; i++) {
char c = content.charAt(i);
Integer num = map.get(c);
if (num == null)
num = 1;
else
num = num + 1;
map.put(c, num);
}
for (Map.EntrySet entry : map) {
system.out.println(entry.getkey() + ":" + entry.getValue());
}
int engishCount;
int chineseCount;
int digitCount;
for (int i = 0; i < str.length; i++) {
char ch = str.charAt(i);
if (ch >= '0' && ch <= '9') {
digitCount++;
} else
if ((ch >= 'a' && ch <= 'z')