java中级面试题有哪些?java中级面试题大汇总

相对于java初级面试,中级面试肯定是要有些难度的,毕竟java跟等级是挂钩的,等级越高,薪资越高,当然要求的技能也是不能低的,那java中级面试题有哪些?下面来我们就来给大家讲解一下。

java中级面试题大汇总.jpg

1.char型变量中能不能存贮一个中文汉字?为什么?

答:char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。

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

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

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

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

3.多线程编程的优势在哪?

答:在开发多线程的程序中,提高程序效率的方式就是多线程执行并发,CPU不会因为某个线程需要等待资源而进入空闲状态。多个线程共享堆内存(heap memory),因此创建多个线程去执行一些任务会比创建多个进程更好。举个例子,Servlets比CGI更好,是因为Servlets支持多线程而CGI不支持。

4.为什么Thread类的sleep()和yield()方法是静态的?

答:Thread类的sleep()和yield()方法将在当前正在执行的线程上运行。处于等待状态的线程被调用这种行为是毫无意义的。避免程序员错误的认为可以在其他非运行线程调用这些方法的最好方式就是在当前正在执行的线程中工作。

5.用一个例子解释垃圾回收?

答:比方说,下面这个方法就会从函数调用。通过函数第一行代码中参考变量calendar,在堆上创建了GregorianCalendar类的一个对象。函数结束执行后,引用变量calendar不再有效。因此,在方法中没有创建引用到对象。JVM认识到这一点,会从堆中删除对象。这就是所谓的垃圾回收。

6.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里是值传递还是引用传递?

答:是值传递。Java 语言的方法调用只支持参数的值传递。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的内存地址。这个值(内存地址)被传递后,同一个内存地址指向堆内存当中的同一个对象,所以通过哪个引用去操作这个对象,对象的属性都是改变的。

Java中级面试题肯定要有些难度,这就要求我们掌握基础知识之外,还要不断的做项目提升自己的技能,这样才能往更高一层进步!最后大家如果想要了解更多Java面试题知识,敬请关注奇Q工具网。

推荐阅读:

hibernate和mybatisplus的区别是什么?hibernate支持数据库有哪些?

java多线程锁面试题有哪些?java多线程锁面试题分享

怎么用java写表白程序?java写表白程序代码