Java开发岗位面试常问的问题有哪些?Java面试常问题汇总

Java开发是抢手的职业,大家都知道它是高薪,可是高薪真的那么好拿吗?当然需要我们有java技能以及通过java面试才能胜任此岗位啦!那Java开发岗位面试常问的问题有哪些?下面来我们就来给大家讲解一下。

Java开发岗位面试常问的问题.jpg

1.java 中操作字符串都有哪些类?它们之间有什么区别?

操作字符串的类有:String、StringBuffer、StringBuilder。

String 和 StringBuffer、StringBuilder 的区别在于 String 声明的是不可变的对象,每次操作都会生成新的 String 对象,然后将指针指向新的 String 对象,而 StringBuffer、StringBuilder 可以在原有对象的基础上进行操作,所以在经常改变字符串内容的情况下最好不要使用 String。

StringBuffer 和 StringBuilder 最大的区别在于,StringBuffer 是线程安全的,而 StringBuilder 是非线程安全的,但 StringBuilder 的性能却高于 StringBuffer,所以在单线程环境下推荐使用 StringBuilder,多线程环境下推荐使用 StringBuffer。

2. java 中 IO 流分为几种?

按功能来分:输入流(input)、输出流(output)。

按类型来分:字节流和字符流。

字节流和字符流的区别是:字节流按 8 位传输以字节为单位输入输出数据,字符流按 16 位传输以字符为单位输入输出数据。

3.Java 中覆盖和重载是什么意思?

覆盖(Override)是指子类对父类方法的一种重写,只能比父类抛出更少的异常,访问权限不能比父类的小,被覆盖的方法不能是 private 的,否则只是在子类中重新定义了一个新方法。

重载(Overload)表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同。

4.Switch能否用string做参数?

switch语句中的变量类型可以使byte,short,int,char。从jdk1.7后可以使用String类型,是通过switch中的String.hashcode将String转换成int进行判断的。

5.在java中,声明一个数组过程中,是如何分配内存的?

当声明数组类型变量时,为其分配了(32位)引用空间,由于未赋值,因此并不指向任何对象;

当创建了一个数组对象(也就是new出来的)并将其地址赋值给了变量,其中创建出来的那几个数组元素相当于引用类型变量,因此各自占用(32位的)引用空间并按其默 认初始化规则被赋值为null;

程序继续运行,当创建新的对象并(将其地址)赋值给各数组元素,此时堆内存就会有值了;

6.HashMap 的长度为什么是 2 的幂次方?

答:通过将 Key 的 hash 值与 length-1 进行 & 运算,实现了当前 Key 的定位,2 的幂次方可以减少冲突(碰撞)的次数,提高 HashMap 查询效率;

如果 length 为 2 的次幂 则 length-1 转化为二进制必定是 11111……的形式,在于 h 的二进制与操作效率会非常的快,而且空间不浪费;

如果 length 不是 2 的次幂,比如 length 为 15,则 length-1 为 14,对应的二进制为 1110,在于 h 与操作,最后一位都为 0,而 0001,0011,0101,1001,1011,0111,1101 这几个位置永远都不能存放元素了,空间浪费相当大。

更糟的是这种情况中,数组可以使用的位置比数组长度小了很多,这意味着进一步增加了碰撞的几率,减慢了查询的效率!这样就会造成空间的浪费。

其实java面试一般都是问的基础性题目,只要我们将java知识都掌握好,就能顺利通过java面试,胜任java岗位啦!最后大家如果想要了解更多Java面试题知识,敬请关注奇Q工具网。

推荐阅读:

如何使用git进行版本控制?实例介绍

spring注入properties属性怎么弄?spring如何下载?

qt怎么生成可执行文件?qt程序如何打包?