【经典】《Java170道面试笔试题全面含答案》涉及java/数据库/Spring框架/JVM/数据结构算法/设计模式相关

问题目录:

一、面向对象的特征有哪些方面?

二、访问修饰符public,private,protected,以及不写(默认)时的区别?

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

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

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

六、Java有没有goto?

七、int和Integer有什么区别?

八、&和&&的区别?

九、解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法。

十、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?

十一、switch 是否能做用在byte 上,是否能做用在long 上,是否能做用在String上?

十二、用最有效率的方法计算2乘以8?

1三、数组有没有length()方法?String有没有length()方法?

1四、在Java中,如何跳出当前的多重嵌套循环?

1五、构造器(constructor)是否可被重写(override)?

1六、两个对象值相同(x.equals(y) == true),但却可有不一样的hash code,这句话对不对?

1七、是否能够继承String类?

1八、当一个对象被看成参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里究竟是值传递仍是引用传递?

1九、String和StringBuilder、StringBuffer的区别?

20、重载(Overload)和重写(Override)的区别。重载的方法可否根据返回类型进行区分?

2一、描述一下JVM加载class文件的原理机制?

2二、char 型变量中能不能存贮一个中文汉字,为何?

2三、抽象类(abstract class)和接口(interface)有什么异同?

2四、静态嵌套类(Static Nested Class)和内部类(Inner Class)的不一样?

2五、Java 中会存在内存泄漏吗,请简单描述。

2六、抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native),是否可同时被synchronized修饰?

2七、阐述静态变量和实例变量的区别。

2八、是否能够从一个静态(static)方法内部发出对非静态(non-static)方法的调用?

2九、如何实现对象克隆?

3一、String s = new String("xyz");建立了几个字符串对象?

3二、接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)?。Java架构师入门到精通:➡([Java提升资料])⬅点击免费领取

3三、一个".java"源文件中是否能够包含多个类(不是内部类)?有什么限制?

3四、Anonymous Inner Class(匿名内部类)是否能够继承其它类?是否能够实现接口?

3五、内部类能够引用它的包含类(外部类)的成员吗?有没有什么限制?

3六、Java 中的final关键字有哪些用法?android

3七、运行结果题git

3八、数据类型之间的转换:

3九、如何实现字符串的反转及替换?

40、怎样将http://smxfl.cn编码的字符串转换为http://lrzqb.cn编码的字符串?

4一、日期和时间:

4二、打印昨天的当前时刻。

4三、比较一下Java和JavaSciprt。

4四、何时用断言(assert)?

4五、Error和Exception有什么区别?

4六、try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行,何时被执行,在return前仍是后?

4七、Java语言如何进行异常处理,关键字:throws、throw、try、catch、finally分别如何使用?

4八、运行时异常与受检异常有何异同?

4九、列出一些你常见的运行时异常?

50、阐述final、finally、finalize的区别。

5一、类ExampleA继承Exception,类ExampleB继承ExampleA。

请问执行此段代码的输出是什么?

5二、List、Set、Map是否继承自Collection接口?

5三、阐述ArrayList、Vector、LinkedList的存储性能和特性。

5四、Collection和Collections的区别?

5五、List、Map、Set三个接口存取元素时,各有什么特色?

5六、TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?

5七、Thread类的sleep()方法和对象的wait()方法均可以让线程暂停执行,它们有什么区别?

5八、线程的sleep()方法和yield()方法有什么区别?

5九、当一个线程进入一个对象的synchronized方法A以后,其它线程是否可进入此对象的synchronized方法B?

60、请说出与线程同步以及线程调度相关的方法。

6一、编写多线程程序有几种实现方式?

6二、synchronized关键字的用法?

6三、举例说明同步和异步。

6四、启动一个线程是调用run()仍是start()方法?

6五、什么是线程池?

6六、线程的基本状态以及状态之间的关系?

6七、简述synchronized 和java.util.concurrent.locks.Lock的异同?

6八、Java中如何实现序列化,有什么意义?

6九、Java中有几种类型的流?

70、写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。

7一、如何用Java代码列出一个目录下全部的文件?

7二、用Java的套接字编程实现一个多线程的回显(http://tqkdz.cn)服务器。

7三、XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?

7四、你在项目中哪些地方用到了XML?

7五、阐述JDBC操做数据库的步骤。

7六、Statement和PreparedStatement有什么区别?哪一个性能更好?

7七、使用JDBC操做数据库时,如何提高读取数据的性能?如何提高更新数据的性能?

7八、在进行数据库编程时,链接池有什么做用?。Java架构师入门到精通:➡([Java提升资料])⬅点击免费领取

7九、什么是DAO模式?

80、事务的ACID是指什么?

8一、JDBC中如何进行事务处理?

8二、JDBC可否处理Blob和http://bqcrg.cn

8三、简述正则表达式及其用途。

8四、Java中是如何支持正则表达式操做的?

8五、得到一个类的类对象有哪些方式?

8六、如何经过反射建立对象?

8七、如何经过反射获取和设置对象私有字段的值?

8八、如何经过反射调用对象的方法?

8九、简述一下面向对象的"六原则一法则"。

90、简述一下你了解的设计模式。

9一、用Java写一个单例类。

9二、什么是UML?

9三、UML中有哪些经常使用的图?

9四、用Java写一个冒泡排序。

9五、用Java写一个折半查找。

9六、阐述Servlet和CGI的区别?

9七、Servlet接口中有哪些方法?

9八、转发和重定向的区别?

9九、JSP有哪些内置对象?做用分别是什么?

100、get和post请求的区别?

10一、经常使用的Web服务器有哪些?

10二、JSP和Servlet是什么关系?

10三、讲解JSP中的四种做用域。

10四、如何实现JSP或Servlet的单线程模式?

10五、实现会话跟踪的技术有哪些?

10六、过滤器有哪些做用和用法?

10七、监听器有哪些做用和用法?

10八、web.xml文件中能够配置哪些内容?

10九、你的项目中使用过哪些JSTL标签?

1十、使用标签库有什么好处?如何自定义JSP标签?

1十一、说一下表达式语言(EL)的隐式对象及其做用。

1十二、表达式语言(EL)支持哪些运算符?

11三、Java Web开发的Model 1和Model 2分别指的是什么?

11四、Servlet 3中的异步处理指的是什么?

11五、如何在基于Java的Web项目中实现文件上传和下载?

11六、服务器收到用户提交的表单数据,究竟是调用Servlet的doGet()仍是doPost()方法?

11七、JSP中的静态包含和动态包含有什么区别?

11八、Servlet中如何获取用户提交的查询参数或表单数据?

11九、Servlet中如何获取用户配置的初始化参数以及服务器上下文参数?

120、如何设置请求的编码以及响应内容的类型?

12一、解释一下网络应用的模式及其特色。

12二、什么是Web Service(Web服务)?

12三、概念解释:SOAP、WSDL、UDDI。

12四、Java规范中和Web Service相关的规范有哪些?

12五、介绍一下你了解的Java领域的Web Service框架。

12六、什么是ORM?

12七、持久层设计要考虑的问题有哪些?你用过的持久层框架有哪些?

12八、Hibernate中SessionFactory是线程安全的吗?Session是线程安全的吗(两个线程可以共享同一个Session吗)?

12九、Hibernate中Session的load和get方法的区别是什么?

130、http://fyrqh.cn的save()、update()、merge()、lock()、saveOrUpdate()和persist()方法分别是作什么的?有什么区别?

13一、阐述Session加载实体对象的过程。

13二、Query接口的list方法和iterate方法有什么区别?

13三、Hibernate如何实现分页查询?

13四、锁机制有什么用?简述Hibernate的悲观锁和乐观锁机制。

13五、阐述实体对象的三种状态以及转换关系。

13六、如何理解Hibernate的延迟加载机制?在实际应用中,延迟加载与Session关闭的矛盾是如何处理的?

13七、举一个多对多关联的例子,并说明如何实现多对多关联映射。

13八、谈一下你对继承映射的理解。

13九、简述Hibernate常见优化策略。

140、谈一谈Hibernate的一级缓存、二级缓存和查询缓存。。Java架构师入门到精通:➡([Java提升资料])⬅点击免费领取

14一、Hibernate中DetachedCriteria类是作什么的?

14二、@OneToMany注解的mappedBy属性有什么做用?

14三、MyBatis中使用#和$书写占位符有什么区别?

14四、解释一下MyBatis中命名空间(namespace)的做用。

14五、MyBatis中的动态SQL是什么意思?

14六、什么是IoC和DI?DI是如何实现的?

14七、Spring中Bean的做用域有哪些?

14八、解释一下什么叫AOP(面向切面编程)?

14九、你是如何理解"横切关注"这个概念的?

150、你如何理解AOP中的链接点(Joinpoint)、切点(Pointcut)、加强(Advice)、引介(Introduction)、织入(Weaving)、切面(Aspect)这些概念?

15一、Spring中自动装配的方式有哪些?

15二、Spring中如何使用注解来配置Bean?有哪些相关的注解?

15三、Spring支持的事务管理类型有哪些?你在项目中使用哪一种方式?

15四、如何在Web项目中配置Spring的IoC容器?

15五、如何在Web项目中配置Spring MVC?

15六、Spring MVC的工做原理是怎样的?

15七、如何在容器中配置数据源?

15八、如何配置配置事务加强?

15九、选择使用Spring框架的缘由(Spring框架为企业级开发带来的好处有哪些)?

160、Spring IoC容器配置Bean的方式?

16一、阐述Spring框架中Bean的生命周期?

16二、依赖注入时如何注入集合属性?

16三、Spring中的自动装配有哪些限制?

16四、在Web项目中如何得到Spring的IoC容器?

165. 大型网站在架构上应当考虑哪些问题?

16六、你用过的网站前端优化的技术有哪些?

16七、你使用过的应用服务器优化技术有哪些?

16八、什么是攻击?什么是SQL注入攻击?什么是CSRF攻击?

169. 什么是领域模型?贫血模型(anaemic domain model)和充血模型(rich domain model)有什么区别?

170. 谈一谈测试驱动开发(TDD)的好处以及你的理解。

对以上问题的解答:

一、面向对象的特征有哪些方面?

答:面向对象的特征主要有如下几(四)个方面:

- 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。

-

继承:继承是从已有类获得继承信息建立新类的过程。提供继承信息的类被称为父类(超类、基类);获得继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了必定的延续性,同时继承也是封装程序中可变因素的重要手段(若是不能理解请阅读阎宏博士的《Java与模式》或《设计模式精解》中关于桥梁模式的部分)。is-a

-

封装:一般认为封装是把数据和操做数据的方法绑定起来,对数据的访问只能经过已定义的接口。面向对象的本质就是将现实世界描绘成一系列彻底自治、封闭的对象。咱们在类中编写的方法就是对实现细节的一种封装;咱们编写一个类就是对数据和数据操做的封装。能够说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(能够想一想普通洗衣机和全自动洗衣机的差异,明显全自动洗衣机封装更好所以操做起来更简单;咱们如今使用的智能手机也是封装得足够好的,由于几个按键就搞定了全部的事情)。。Java架构师入门到精通:➡([Java提升资料])⬅点击免费领取

-

多态性:多态性是指容许不一样子类型的对象对同一消息做出不一样的响应。简单的说就是用一样的对象引用调用一样的方法可是作了不一样的事情。多态性分为编译时的多态性和运行时的多态性。若是将对象的方法视为对象向外界提供的服务,那么运行时的多态性能够解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统来讲都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统能够使用电池供电或者用交流电,甚至还有多是太阳能,A系统只会经过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟经过何种方式得到了动力)。方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的东西,要实现多态须要作两件事:

1).创方法重写(子类继承父类并重写父类中已有的或抽象的方法);

2).对象造型(重载,用父类型引用引用子类型对象,这样一样的引用调用一样的方法就会根据子类对象的不一样而表现出不一样的行为)。

1三、数组有没有length()方法?String有没有length()方法?

答:数组没有length()方法,有length 的属性。String

有length()方法。javascript中,得到字符串的长度是经过length属性获得的,这一点容易和Java混淆。

1四、在Java中,如何跳出当前的多重嵌套循环?

答:在最外层循环前加一个标记如A,而后用break

A;能够跳出多重循环。(Java中支持带标签的break和continue语句,做用有点相似于C和C++中的goto语句,可是就像要避免使用goto同样,应该避免使用带标签的break和continue,由于它不会让你的程序变得更优雅,不少时候甚至有相反的做用,因此这种语法其实不知道更好)

1五、构造器(constructor)是否可被重写(override)?

答:构造器不能被继承,所以不能被重写,但能够被重载。

1六、两个对象值相同(x.equals(y) == true),但却可有不一样的hash code,这句话对不对?

答:不对,若是两个对象x和y知足x.equals(y) == true,它们的哈希码(hash

code)应当相同。Java对于eqauls方法和hashCode方法是这样规定的:(1)若是两个对象相同(equals方法返回true),那么它们的hashCode值必定要相同;(2)若是两个对象的hashCode相同,它们并不必定相同。固然,你未必要按照要求去作,可是若是你违背了上述原则就会发如今使用容器时,相同的对象能够出如今Set集合中,同时增长新元素的效率会大大降低(对于使用哈希存储的系统,若是哈希码频繁的冲突将会形成存取性能急剧降低)。。Java架构师入门到精通:➡([Java提升资料])⬅点击免费领取

补充:关于equals和hashCode方法,不少Java程序都知道,但不少人也就是仅仅知道而已,在Joshua Bloch的大做《Effective Java》(不少软件公司,《Effective Java》、《Java编程思想》以及《重构:改善既有代码质量》是Java程序员必看书籍,若是你还没看过,那就赶忙去亚马逊买一本吧)中是这样介绍equals方法的:首先equals方法必须知足自反性(x.equals(x)必须返回true)、对称性(x.equals(y)返回true时,y.equals(x)也必须返回true)、传递性(x.equals(y)和y.equals(z)都返回true时,x.equals(z)也必须返回true)和一致性(当x和y引用的对象信息没有被修改时,屡次调用x.equals(y)应该获得一样的返回值),并且对于任何非null值的引用x,x.equals(null)必须返回false。

实现高质量的equals方法的诀窍包括:

1.候使用==操做符检查"参数是否为这个对象的引用";

2. 使用instanceof操做符检查"参数是否为正确的类型";

3. 对于类中的关键属性,检查参数传入对象的属性是否与之相匹配;

4. 编写完equals方法后,问本身它是否知足对称性、传递性、一致性;

5. 重写equals时老是要重写hashCode;6. 不要将equals方法参数中的Object对象替换为其余的类型,在重写时不要忘掉@Override注解。

1七、是否能够继承String类?

答:String 类是final类,不能够被继承。

。Java架构师入门到精通:➡([Java提升资料])⬅点击免费领取

补充:继承String自己就是一个错误的行为,对String类型最好的重用方式是关联关系(Has-A)和依赖关系(Use-A)而不是继承关系(Is-A)。