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:适用于多线程下在字符缓冲区进行大量操作的情况

垃圾回收

与垃圾回收相关的JVM参数

-Xms/-Xmx —— 堆的初始大小/堆的最大大小
-Xmn —— 堆中年轻代的大小
-XX:-DisableExplicitGC ——让System.gc()不产生作用 
-XX:+PrintGCDetail —— 打印GC的细节 
-XX:+PrintGCDateStamps —— 打印GC操作的时间戳

Java中final关键字有哪些用法

1、修饰类:表示该类不能被继承;
2、修饰方法:表示方法不能被重写;
3、修饰变量:表示变量只能一次赋值,值不能被修改,即是常量

数据类型之间的转换

1)如何将字符串转换为基本数据类型?
2)如何将基本数据类型转换为字符串?

1)调用基本数据类型对应的包装类中的方法parseXXX(String)或者valueOf(String)即可返回基本类型。
2)方法一:将基本数据类型与空字符串连接(+);
   方法二:调用String类中的valueof()方法返回相应字符串。

Error和Exception有什么区别?

Error:表示系统级的错误和程序不必处理的异常,是恢复不是不可能 但很困难的情况下的一种严重问题,比如内存溢出。
Exception:表示需要捕获或者需要程序运行处理的异常,是一种设计或实现问题,也就是说如果程序运行正常,从不会发生的情况。

try()里有一个return语句,那么紧跟在这个try后的finally{}里面的code会不会被执行?什么时候被执行,return之前还是之后?

会执行。在方法返回调用者之前执行。因此,若finally修改返回值,可能会导致问题。

final,finally,finalize的区别

final:修饰符,可以修饰类、方法、变量。    
finally:通过放在try catch的后面构造总是执行的代码,可以将释放外部资源的代码写在finally块中。  
finalize:Object中定义的方法,Java中运行使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在销毁对象时候调用。
posted @ 2018-06-26 01:13  AmyZYX  阅读(840)  评论(0编辑  收藏  举报