JAVA认证 百分网手机站

java面试题及答案

时间:2018-02-22 15:26:51 JAVA认证 我要投稿

2017年java面试题及答案

  Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。下面是小编整理的关于2017年java面试题及答案,欢迎大家练习!

  java面试题及答案

  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开发岗位面试题

  一、Java基础

  1、String类为什么是final的。

  2、HashMap的源码,实现原理,底层结构。

  3、说说你知道的几个Java集合类:list、set、queue、map实现类咯。。。

  4、描述一下ArrayList和LinkedList各自实现和区别

  5、Java中的队列都有哪些,有什么区别。

  6、反射中,Class.forName和classloader的区别

  7、Java7、Java8的新特性(baidu问的,好BT)

  8、Java数组和链表两种结构的操作效率,在哪些情况下(从开头开始,从结尾开始,从中间开始),哪些操作(插入,查找,删除)的效率高

  9、Java内存泄露的问题调查定位:jmap,jstack的使用等等

  10、string、stringbuilder、stringbuffer区别

  11、hashtable和hashmap的'区别

  13、异常的结构,运行时异常和非运行时异常,各举个例子

  14、String a= “abc” String b = "abc" String c = new String("abc") String d = "ab" + "c" .他们之间用 == 比较的结果

  15、String 类的常用方法

  16、Java 的引用类型有哪几种

  17、抽象类和接口的区别

  18、java的基础类型和字节大小。

  19、Hashtable,HashMap,ConcurrentHashMap 底层实现原理与线程安全问题(建议熟悉 jdk 源码,才能从容应答)

  20、如果不让你用Java Jdk提供的工具,你自己实现一个Map,你怎么做。说了好久,说了HashMap源代码,如果我做,就会借鉴HashMap的原理,说了一通HashMap实现

  21、 Hash冲突怎么办?哪些解决散列冲突的方法?

  22、HashMap冲突很厉害,最差性能,你会怎么解决?从O(n)提升到log(n)咯,用二叉排序树的思路说了一通

  23、rehash

  24、hashCode() 与 equals() 生成算法、方法怎么重写

  二、Java IO

  1、讲讲IO里面的常见类,字节流、字符流、接口、实现类、方法阻塞。

  2、讲讲NIO。

  3、String 编码UTF-8 和GBK的区别?

  4、什么时候使用字节流、什么时候使用字符流?

  5、递归读取文件夹下的文件,代码怎么实现

  三、Java Web

  1、session和cookie的区别和联系,session的生命周期,多个服务部署时session管理。

  2、servlet的一些相关问题

  3、webservice相关问题

  4、jdbc连接,forname方式的步骤,怎么声明使用一个事务。举例并具体代码

  5、无框架下配置web.xml的主要配置内容

  6、jsp和servlet的区别

  四、JVM

  1、Java的内存模型以及GC算法

  2、jvm性能调优都做了什么

  3、介绍JVM中7个区域,然后把每个区域可能造成内存的溢出的情况说明

  4、介绍GC 和GC Root不正常引用。

  5、自己从classload 加载方式,加载机制说开去,从程序运行时数据区,讲到内存分配,讲到String常量池,讲到JVM垃圾回收机制,算法,hotspot。反正就是各种扩展

  6、jvm 如何分配直接内存, new 对象如何不分配在堆而是栈上,常量池解析

  7、数组多大放在 JVM 老年代(不只是设置 PretenureSizeThreshold ,问通常多大,没做过一问便知)

  8、老年代中数组的访问方式

  9、GC 算法,永久代对象如何 GC , GC 有环怎么处理

  10、谁会被 GC ,什么时候 GC

  11、如果想不被 GC 怎么办

  12、如果想在 GC 中生存 1 次怎么办

  五、开源框架

  1、hibernate和ibatis的区别

  2、讲讲mybatis的连接池。

  3、spring框架中需要引用哪些jar包,以及这些jar包的用途

  4. springMVC的原理

  5、springMVC注解的意思

  6、spring中beanFactory和ApplicationContext的联系和区别

  7、spring注入的几种方式(循环注入)

  8、spring如何实现事物管理的

  9、springIOC

  10、spring AOP的原理

  11、hibernate中的1级和2级缓存的使用方式以及区别原理(Lazy-Load的理解)

  12、Hibernate的原理体系架构,五大核心接口,Hibernate对象的三种状态转换,事务管理。