Java基础知识/面试题

什么是面向对象编程?

面向过程:按照步骤解决问题
面向对象:把构成问题的各个事物分解成各个对象,对象作为程序基本单位,将程序和数据封装其中,以提高程序的重用性、灵活性和可扩展性。

Java三大特性

封装
继承
多态性

Java八种基本数据类型

8种基本数据类型:

byte、short、int、long
float、double
boolean
char

3种引用数据类型:

对象、数组、接口

Java多线程实现方法

Thread —— 类,继承
Runnable——接口,实现implement
实现Callable接口通过FutureTask包装器来创建Thread线程
使用ExecutorService、Callable、Future实现有返回结果的多线程

Thread类中的start()和run()方法有什么区别?

  • start():作用是启动一个新线程,新线程会执行相应的run()方法,不能被重复调用;
  • run():可以被重复调用,单独调用run()的话,会在当前线程中执行run(),不会启动新线程

三个线程T1、T2、T3,如何确保它们按顺序执行?

  • join():等待线程结束,可以实现线程按顺序执行

编写一个线程安全的单例模型

https://www.cnblogs.com/x_wukong/p/3962315.html

String、StringBuilder、StringBuffer三者区别

  • 运行速度/执行速度:StringBuilder > StringBuffer > String
    • String是字符串常量(char保存),对象创建之后不可更改;前两者是字符串变量,是引用类型,是可以更改的。
  • 线程安全:StringBuilder是线程不安全的,StringBuffer是线程安全的。
    • StringBuffer中很多方法可以带有synchronized关键字,所以可以保证线程安全;
    • StringBuilder的方法则没有synchronized关键字
    • 多线程-StringBuffer 单线程-StringBuilder
  • 结论:
    • String:适用于少量的字符串操作情况
    • StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
    • StringBuffer:适用于多线程下在字符缓冲区进行大量操作的情况

猜你喜欢

转载自www.cnblogs.com/amyzhu/p/9227118.html