java面试题1:总结

面试1:总结

1.在开发过程中,一个深刻的问题,该问题如何出现的现象,找问题的思路以及对应的解决办法?

2.java如何实现跨平台的机制?

  java的跨平台是通过java虚拟机JVM来实现。java的代码不是直接运行在CPU上,而是运行在java虚拟机上的。

java的源代码编译成.class字节码文件,然后字节吗文件在java虚拟机上的运行,因此windows、Linux上只要安装了JVM,就可以实现java的跨平台机制。

3.String、StringBuilder和StringBuffer的区别:

   String:字符串常量被存储在字符串常量池中,长度不可变,不适合频繁的进行字符串拼接;StringBuilder和StringBuffer是长度可变的。

   StringBuilder是非线程安全的,StringBuffer是线程安全的。

  当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。
对于三者使用的总结:
(1)如果要操作少量的数据用 = String
(2)单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
(3)多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

4.包装类与基本数据的对比:

扫描二维码关注公众号,回复: 9684347 查看本文章

5.int和Integer的区别:

(1)Integer是int的包装类,int是基本类型;

(2)Integer必须实例化之后,才可以使用;int不需要进行实例化;、

(3)Integer是对象的引用,int是直接可以存储数据;

(4)Integer的默认值是null,int的默认值为0

6.什么时候用Integer?

   如果该属性所对应的数据库的字段是主键/外键时,用Integer(因为Integer的默认值为null,数据库的主键/外键不能为空,但是可以为null)。

7.多线程的实现方式:

  (1)继承Thread类,重写run()方法;

  (2)实现Runable接口,实现run()方法;

  (3)实现Callable接口,重写call方法,可提供返回值

8.线程的start()和run()方法的区别:

     start()方法表示启动一个新的线程,在JVM内存中会开启一个新的栈空间;

     run()方法是普通方法引用,不会启动新的线程。

9.wait和sleep区别:

   sleep是线程类Thread的方法,导致本线程暂停执行指定的时间,执行机会给其他线程,但是依然保持监控的状态,到时会自动恢复,调用sleep方法并不会释放对象锁;

   wait方法是Object类的方法,调用wait方法导致本线程放弃对象锁,进入到等待对象的等待锁定池,只有针对此对象发出notify或notifyAll后,本线程才进入到对象的锁定池,准备获得对象锁进入运行状态。

10.聊一下IO流:

按照方向来划分:输入流和输出流

按照读取数据来划分:字节流和字符流

     字节流:按照字节的方式读取数据,适合读取普通的文本或者二进制数据,比如:word文件的读取

     字符流:一次读取一个字符,汉字的话一次读取一个汉子,比如:txt文件使用字符流读取

发布了9 篇原创文章 · 获赞 0 · 访问量 3679

猜你喜欢

转载自blog.csdn.net/yibuyiyao113/article/details/102734883
今日推荐