TP钱包官网下载的最佳实践 JAVA笔试题(全解)


发布日期:2025-05-14 10:48    点击次数:104


 

目录

一. 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')