文章目录
1、什么是B/S架构?什么是C/S架构2、Java都有那些开发平台?3、什么是JDK?什么是JRE?4、Java语言有哪些特点5、面向对象和面向过程的区别6、什么是数据结构?7、Java的数据结构有那些?8、什么是OOP?9、类与对象的关系?10、Java中有几种数据类型11、标识符的命名规则。12、instanceof关键字的作用13、什么是隐式转换,什么是显式转换14、Char类型能不能转成int类型?能不能转化成string类型,能不能转成double类型15、什么是拆装箱?16、Java中的包装类都是那些?17、一个java类中包含那些内容?18、那针对浮点型数据运算出现的误差的问题,你怎么解决?19、面向对象的特征有哪些方面?20、访问修饰符 public,private,protected,以及不写(默认) 时的区别?21、String 是最基本的数据类型吗?22、flfloat f=3.4;是否正确?23、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1; 有错吗?24、重载和重写的区别25、equals与==的区别26、++i与i++的区别27、程序的结构有那些?28、数组实例化有几种方式?29、Java中各种数据默认值30、Java常用包有那些?31、Object类常用方法有那些?32、java中有没有指针?33、java中是值传递引用传递?34、实例化数组后,能不能改变数组长度呢?35、假设数组内有5个元素,如果对数组进行反序,该如何做?36、形参与实参区别?37、构造方法能不能显式调用?38、什么是方法重载?39、构造方法能不能重写?能不能重载?40、内部类与静态内部类的区别?41、Static关键字有什么作用?42、fifinal在java中的作用,有哪些用法?43、StringString StringBuffffffffer 和 StringBuilder 的区别是什么?44、String str=”aaa”,与String str=new String(“aaa”)一样吗?45、讲下java中的math类有那些常用方法?46、String类的常用方法有那些?47、Java中的继承是单继承还是多继承?48、Super与this表示什么?49、普通类与抽象类有什么区别?50、什么是接口?为什么需要接口?51、接口有什么特点?52、抽象类和接口的区别?53、Hashcode的作用?54、 Java的四种引用,强弱软虚?55、Java创建对象有几种方式?56、有没有可能两个不相等的对象有相同的hashcode57、拷贝和浅拷贝的区别是什么?58、static都有哪些用法?59、a=a+b与a+=b有什么区别吗?60、fifinal、fifinalize()、fifinally61、JDBC操作的步骤62、在使用jdbc的时候,如何防止出现sql注入的问题。63、怎么在JDBC内调用一个存储过程?64、是否了解连接池,使用连接池有什么好处?65、你所了解的数据源技术有那些?使用数据源有什么好处?66、&和&&的区别?67、静态内部类如何定义?68、什么是成员内部类?69、Static Nested Class和Inner Class的不同?70、什么时候用assert?71、Java有没有goto?72、数组有没有length()这个方法? String有没有length()这个方法?73、用最有效率的方法算出2乘以8等於几?74、flfloat型flfloat f=3.4是否正确?75、排序都有哪几种方法?请列举。76、静态变量和实例变量的区别?77、说出一些常用的类,包,接口,请各举5个。78、a.hashCode() 有什么用?与a.equals(b) 有什么关系?79、Java中的编译期常量是什么?使用它又什么风险?80、在Java中,如何跳出当前的多重嵌套循环?81、构造器(constructor)是否可被重写(override)?82、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?83、是否可以继承 String类?84、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?85、String和StringBuilder、StringBuffffer的区别?86、重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?87、char 型变量中能不能存贮一个中文汉字,为什么?88、抽象类(abstract class)和接口(interface)有什么异同?89、静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?90、Java中会存在内存泄漏吗,请简单描述。91、抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native),是否可同时被synchronized修饰?92、是否可以从一个静态(static)方法内部发出对非静态(non-static)方法的调用?93、如何实现对象克隆?94、接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类?是否可继承具体类(concreteclass)?95、一个”java”源文件中是否可以包含多个类(不是内部类)?有什么限制?96、Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否可以实现接口?97、内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制?最后最近面试的小伙伴很多,对此我整理了一份Java面试题手册:基础知识、一键获取JavaOOP、Java集合/泛型面试题、Java异常面试题、Java中的IO与NIO面试题、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、Memcached、MongoDB、Spring、SpringBoot、SpringCloud、RabbitMQ、Dubbo、MyBatis、ZooKeeper、数据结构、算法、Elasticsearch、Kafka、微服务、Linux等等。
可以分享给大家学习。【持续更新中】
完整版Java面试题地址:一键获取JavaOOP面试题总结
1、什么是B/S架构?什么是C/S架构
2、Java都有那些开发平台?
3、什么是JDK?什么是JRE?
答:
JDK:java development kit:java开发工具包,是开发人员所需要安装的环境JRE:java runtime environment:java运行环境,java程序运行所需要安装的环境
4、Java语言有哪些特点
5、面向对象和面向过程的区别
6、什么是数据结构?
7、Java的数据结构有那些?
8、什么是OOP?
9、类与对象的关系?
10、Java中有几种数据类型
11、标识符的命名规则。
12、instanceof关键字的作用
**答:**instanceof严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为:
boolean result = obj instanceof Class
其中obj为一个对象,Class表示一个类或者一个接口,当obj为Class的对象,或者是其直接或间接子类,或者是其接口的实现类,结果result都返回true,否则返回false。
注意:编译器会检查obj是否能转换成右边的class类型,如果不能转换则直接报错,如果不能确定类型,则通过编译,具体看运行时定。
inti=0; System.out.println(i instanceof Integer);//编译不通过i必须是引用类型,不能是基本类型 System.out.println(i instanceof Object);//编译不通过Integer integer=newInteger(1); System.out.println(integer instanceof Integer);//true //false,在JavaSE规范中对instanceof运算符的规定就是:如果obj为null,那么将返回false。 System.out.println(nullinstanceofObject);
13、什么是隐式转换,什么是显式转换
14、Char类型能不能转成int类型?能不能转化成string类型,能不能转成double类型
15、什么是拆装箱?
答:
装箱就是自动将基本数据类型转换为包装器类型(int–>Integer);调用方法:Integer的valueOf(int) 方法拆箱就是自动将包装器类型转换为基本数据类型(Integer–>int)。调用方法:Integer的intValue方法在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行:
Integer i = new Integer(10);
而在从Java SE5开始就提供了自动装箱的特性,如果要生成一个数值为10的Integer对象,只需要这样就可以了:
Integer i = 10;
面试题1: 以下代码会输出什么?
public class Main {public static void main(String[] args) {Integer i1 = 100; Integer i2 = 100; Integer i3 = 200; Integer i4 = 200; System.out.println(i1==i2); System.out.println(i3==i4); } }
结果:
true false
16、Java中的包装类都是那些?
17、一个java类中包含那些内容?
18、那针对浮点型数据运算出现的误差的问题,你怎么解决?
19、面向对象的特征有哪些方面?
20、访问修饰符 public,private,protected,以及不写(默认) 时的区别?
答:
类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公 开(public),对于不是同一个包中的其他类相当于私有(private)。受保护 (protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私 有。
Java 中,外部类的修饰符只能是public或默认,类的成员(包括内部类)的 修饰符可以是以上四种。
21、String 是最基本的数据类型吗?
22、flfloat f=3.4;是否正确?
23、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1; 有错吗?
24、重载和重写的区别
25、equals与==的区别
26、++i与i++的区别
27、程序的结构有那些?
28、数组实例化有几种方式?
29、Java中各种数据默认值
30、Java常用包有那些?
31、Object类常用方法有那些?
32、java中有没有指针?
33、java中是值传递引用传递?
34、实例化数组后,能不能改变数组长度呢?
35、假设数组内有5个元素,如果对数组进行反序,该如何做?
36、形参与实参区别?
37、构造方法能不能显式调用?
38、什么是方法重载?
答:
静态实例化:创建数组的时候已经指定数组中的元素。
int [] a= new int[]{1 , 3 , 3}
动态实例化:实例化数组的时候,只指定了数组程度,数组中所有元素都是数组类型的默认值
39、构造方法能不能重写?能不能重载?
40、内部类与静态内部类的区别?
41、Static关键字有什么作用?
42、fifinal在java中的作用,有哪些用法?
答:
final也是很多面试喜欢问的地方,但我觉得这个问题很无聊,通常能回答下以下5点就不错了:
被fifinal修饰的类不可以被继承。被fifinal修饰的方法不可以被重写。被fifinal修饰的变量不可以被改变.如果修饰引用,那么表示引用不可变,引用指向的内容可变.。被fifinal修饰的方法,JVM会尝试将其内联,以提高运行效率。被fifinal修饰的常量,在编译阶段会存入常量池中。
除此之外,编译器对fifinal域要遵守的两个重排序规则更好:
在构造函数内对一个fifinal域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。
初次读一个包含fifinal域的对象的引用,与随后初次读这个fifinal域,这两个操作之间不能重排序。
43、StringString StringBuffffffffer 和 StringBuilder 的区别是什么?
44、String str=”aaa”,与String str=new String(“aaa”)一样吗?
45、讲下java中的math类有那些常用方法?
46、String类的常用方法有那些?
答:
charAt:返回指定索引处的字符
indexOf():返回指定字符的索引
replace():字符串替换
trim():去除字符串两端空白
split():分割字符串,返回一个分割后的字符串数组
getBytes():返回字符串的byte类型数组
length():返回字符串长度
toLowerCase():将字符串转成小写字母
toUpperCase():将字符串转成大写字符
substring():截取字符串
format():格式化字符串
equals():字符串比较
47、Java中的继承是单继承还是多继承?
48、Super与this表示什么?
49、普通类与抽象类有什么区别?
50、什么是接口?为什么需要接口?
51、接口有什么特点?
52、抽象类和接口的区别?
53、Hashcode的作用?
54、 Java的四种引用,强弱软虚?
答:
强引用
强引用是平常中使用最多的引用,强引用在程序内存不足(OOM)的时候也不会被回收,使用方式:
String str = new String("str");
软引用
软引用在程序内存不足时,会被回收,使用方式:
// 注意:wrf这个引用也是强引用,它是指向SoftReference这个对象的,// 这里的软引用指的是指向new String("str")的引用,也就是SoftReference类中TSoftReference<String> wrf = new SoftReference<String>(new String("str"));
可用场景:创建缓存的时候,创建的对象放进缓存中,当内存不足时,JVM就会回收早先创建的对象。
弱引用
弱引用就是只要JVM垃圾回收器发现了它,就会将之回收,使用方式:
WeakReference<String>wrf=newWeakReference<String>(str);
可用场景:Java源码中的java.util.WeakHashMap中的key就是使用弱引用,我的理解就是,一旦我不需要某个引用,JVM会自动帮我处理它,这样我就不需要做其它操作。
虚引用
虚引用的回收机制跟弱引用差不多,但是它被回收之前,会被放入ReferenceQueue中。注意哦,其它引用是被JVM回收后才被传入ReferenceQueue中的。由于这个机制,所以虚引用大多被用于引用销毁前的处理工作。还有就是,虚引用创建的时候,必须带有ReferenceQueue,使用
例子:
PhantomReference<String>prf=newPhantomReference<String>(new String("str"),newReferenceQueue<>());
可用场景: 对象销毁前的一些操作,比如说资源释放等。** Object.finalize() 虽然也可以做这类动作,但是这个方式即不安全又低效上诉所说的几类引用,都是指对象本身的引用,而不是指 Reference 的四个子类的引用( SoftReference 等)。
55、Java创建对象有几种方式?
56、有没有可能两个不相等的对象有相同的hashcode
57、拷贝和浅拷贝的区别是什么?
58、static都有哪些用法?
59、a=a+b与a+=b有什么区别吗?
60、fifinal、fifinalize()、fifinally
61、JDBC操作的步骤
62、在使用jdbc的时候,如何防止出现sql注入的问题。
63、怎么在JDBC内调用一个存储过程?
64、是否了解连接池,使用连接池有什么好处?
65、你所了解的数据源技术有那些?使用数据源有什么好处?
66、&和&&的区别?
67、静态内部类如何定义?
68、什么是成员内部类?
答:
定义在类内部的非静态类,就是成员内部类。成员内部类不能定义静态方法和变量(final修饰的除外)。这是因为成员内部类是非静态的,类初始化的时候先初始化静态成员,如果允许成员内部类定义静态变量,那么成员内部类的静态变量初始化顺序是有歧义的。实例:
public class Out {private static int a; private int b; public class Inner {public void print() {System.out.println(a);System.out.println(b); } } }
69、Static Nested Class和Inner Class的不同?
70、什么时候用assert?
71、Java有没有goto?
72、数组有没有length()这个方法? String有没有length()这个方法?
73、用最有效率的方法算出2乘以8等於几?
74、flfloat型flfloat f=3.4是否正确?
75、排序都有哪几种方法?请列举。
76、静态变量和实例变量的区别?
77、说出一些常用的类,包,接口,请各举5个。
78、a.hashCode() 有什么用?与a.equals(b) 有什么关系?
79、Java中的编译期常量是什么?使用它又什么风险?
80、在Java中,如何跳出当前的多重嵌套循环?
81、构造器(constructor)是否可被重写(override)?
82、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
83、是否可以继承 String类?
84、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
85、String和StringBuilder、StringBuffffer的区别?
86、重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?
87、char 型变量中能不能存贮一个中文汉字,为什么?
88、抽象类(abstract class)和接口(interface)有什么异同?
89、静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?
答:
Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化,其语法看起来挺诡异的,如下所示:* 扑克类(一副扑克) * @author 骆昊 */public class Poker {private static String[] suites = {"黑桃", "红桃", "草花", "方块"}; private static int[] faces = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; private Card[] cards; /** * 构造器 * */ public Poker() {cards = new Card[52]; for(int i = 0; i < suites.length; i++) {for(int j = 0; j < faces.length; j++) {cards[i * 13 + j] = new Card(suites[i], faces[j]); } }* }/** * 洗牌 (随机乱序) * */ public void shuffle() {for(int i = 0, len = cards.length; i < len; i++) {int index = (int) (Math.random() * len); Card temp = cards[index]; cards[index] = cards[i]; cards[i] = temp; } }/** * 发牌 * @param index 发牌的位置 * */ public Card deal(int index) {return cards[index]; }/** * 卡片类(一张扑克) * [内部类] * @author 骆昊 * */ public class Card {private String suite; // 花色 private int face; // 点数 public Card(String suite, int face) { this.suite = suite; this.face = face; }@Override public String toString() { String faceStr = ""; switch(face) { case 1: faceStr = "A"; break; case 11: faceStr = "J"; break; case 12: faceStr = "Q"; break; case 13: faceStr = "K"; break; default: faceStr = String.valueOf(face); } return suite + faceStr; } } }//测试类 class PokerTest { public static void main(String[] args) { Poker poker = new Poker(); poker.shuffle(); // 洗牌 Poker.Card c1 = poker.deal(0); // 发第一张牌 // 对于非静态内部类 Card // 只有通过其外部类 Poker 对象才能创建 Card 对象 Poker.Card c2 = poker.new Card("红心", 1); // 自己创建一张牌 System.out.println(c1); // 洗牌后的第一张 System.out.println(c2); // 打印: 红心 A } }
90、Java中会存在内存泄漏吗,请简单描述。
91、抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native),是否可同时被synchronized修饰?
92、是否可以从一个静态(static)方法内部发出对非静态(non-static)方法的调用?
93、如何实现对象克隆?
94、接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类?
是否可继承具体类(concreteclass)?
95、一个”java”源文件中是否可以包含多个类(不是内部类)?有什么限制?
96、Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否可以实现接口?
97、内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制?
最后
👇🏻 添加 博主 获取 JavaOOP面试题总结👇🏻篇幅有限,其他内容就不在这里一 一展示了,整理不易,欢迎大家一起交流,喜欢小编分享的文章记得关注我点赞哟,感谢支持!重要的事情说三遍,转发+转发+转发,一定要记得转发哦!!!