Java开发面试常见问题总结

1、JAVA的跨平台原理

JVA源码被编译会生成字节码文件,通过不同平台上下载的不同版本的JVM,将字节码文件翻译成对应的机器码。注意的是,跨平台的Java程序,不是JVM。JVM是使用C/C++开发的,是编译后的字节码,不能跨平台。

2、JAVA中的数据类型及其各自的特点。

(1)基本数据类型

byte 1字节 数值型
short 2字节 数值型
int 4字节 数值型
long 8字节 数值型
float 4字节 数值型
double 8字节 数值型
boolean 1字节 布尔型
char 2字节 字符型

(2)引用数据类型:类(class)、接口(interface)、数组

3、JAVA面向对象的特征?

封装、继承、多态、抽象                                                                                                                                                                    封装:通过类来体现,将实体封装成类,其中包含属性和方法

继承:类与类之间可以继承特点,使得代码重用

多态:通过传递给父类对象引用不同的子类从而表现出不同的行为

抽象: 将一类实体的共同特性抽象出来,封装在一个抽象类中。

4、封箱和拆箱?

基础类型属于数据,不属于类,自然也不属于Object的子类,无法使用相关方法。装箱就是自动将基本数据类型转换为包装器类型,拆箱就是自动将包装器类型装换为基本数据类型。

eg:Integer a = Integer.valueOf(123);  //装箱      int b = a.intValue();  //拆箱

5、==和equals的区别?

(1)基本数据类型之间的比较,使用双等号(==),比较两者的值

(2)复合数据类型(类)之间的比较,比较的是在内存池的地址,使用equals。在Java语言中,通常equals交给开发者自行定义,满足什么条件的Object是equals的。

6、String、StringBuilder、StringBuffer之间的区别?

(1)运行速度:StringBuilder > StringBuffer > String 

        String是字符串常量,其他两者属于字符串变量,String对象创建后不可以改变,对String的操作实际上是不断创建和回收的过程,执行速度慢。

(2)线程安全:StringBuilder是线程不安全的,而StringBuffer是线程安全的

        StringBuffer对象在字符串缓冲区被多个线程使用时,可以使用synchronized关键字,能够保证线程安全。

(3)使用场景

         String适用于少量的字符串操作;StringBuilder适用于单线程下的在字符串缓冲区进行大量的操作的情况下;StringBuffer适用于多线程下的在字符串缓冲区进行大量的操作的情况下。

7、JAVA中的集合

Java中的集合分为两大类:

Collection(value):包含list和Set,其中list是有序,可重复的;set是无序,不可重复的。

Map(key-value)包含HashMap、HashTable、CurrentHashNap

8、ArrayList、Vector、LinkedList的区别?

  1. 区别:
  • Vector和ArrayList都是以类似数组的形式存储在内存中,LinkedList以链表的形式进行存储
  • Vector线程同步,ArrayList和LinkedList线程不同步
  • LinkedList适合在指定位置进行插入、删除等操作,不适合查找,Vector、ArrayList适合查找
  • Vector默认扩充为原来的两倍,ArrayList默认扩充为原来的1.5倍

9、HashMap和HashTable的区别?

  • 都是使用key-value的形式来存储数据,区别是HashTable基于Dictionary类,而HshMap是基于AbstractMap。
  • HashMap是单线程安全的,HashTable是多线程安全的
  • HashMap仅仅支持Iterator的遍历方式,HashTable支持Iterrator和Enumeration两种遍历方式
  • HashMap可以允许存在一个为null的key和若干个为null的value,但是HashTable中的key和value都不允许为null

11、线程的实现方式?怎么样启动线程?怎么区分线程?

线程的实现方式有三种:第一种是继承Thread类,第二种是实现Runnable接口,第三种是实现java.util.concurrent下的Callable接口。

线程的启动:调用start()方法---可以使得线程处于可运行状态,但是不一定会执行,如果实在main()方法中调用的话,run()会执行

区分线程:给线程设置名字

12、线程并发库和线程池的作用?

线程池的好处:

  • 限定线程的个数,不会导致由于线程过多导致系统运行缓慢或崩溃
  • 线程池每次都不需要去创建和销毁,节约了资源
  • 线程池不需要每次都去创建,响应时间更快

13、设计模式和常用的设计模式?

一共有23中设计模式?常用的有单例模式、工厂模式、装饰者模式、代理模式

  1. 单例模式:
  2. 工厂模式:
  3. 装饰者模式:
  4. 代理模式:

14、HTTP、GET、POST请求的区别?

一. Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量中能不能存贮一个中文汉字?为什么? 9 8、用最有效率的方法算出2乘以8等於几? 9 9、请设计一个一百亿的计算器 9 10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 11 11、"=="和equals方法究竟有什么区别? 11 12、静态变量和实例变量的区别? 12 13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域public,private,protected,以及不写时的区别 13 18、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 14 19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 15 21、写clone()方法时,通常都有一行代码,是什么? 15 22、面向对象的特征有哪些方面 15 23、java中实现多态的机制是什么? 17 24、abstract class和interface有什么区别? 17 25、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 18 26、什么是内部类?Static Nested Class 和 Inner Class的不同。 19 27、内部类可以引用它的包含类的成员吗?有没有什么限制? 20 28、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 21 29、super.getClass()方法调用 21 30、String是最基本的数据类型吗? 22 31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 23 34、String 和StringBuffer的区别 23 35、如何把一段逗号分割的字符串转换成一个数组? 24 36、数组有没有length()这个方法? String有没有length()这个方法? 24 37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"; 24 38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 41、运行时异常与一般异常有何异同? 27 42、error和exception有什么区别? 28 43、Java中的异常处理机制的简单原理和应用。 28 等等........
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大致若愚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值