经常出现却又容易被忽略的Java SE面试题 必看

在面试的过程中往往会遇到javase的题目,这个又是容易被忽略,来看一下是哪些呢?

1)运行时异常,非运行时异常。 运行时异常可进行处理,也可不进行处理。非运行时异常必须进行处理(可以通过try-catch语句处理,也可通过关键字throws抛出异常)。非运行时异常继承自Exception但不继承自RuntimeException。 2)equals方法与“==”的区别

(1)对于字符串变量以及基本数据类型的包装类型来说:“==”比较两变量的引用是否相等,即变量在内存的首地址是否相等。“equals”比较实体(内存空间)的内容是否相等,因为String类中重新定义了equals方法,并且是用来比较其值得而不是内存地址。注意:如果 StringBuffer s1=new StringBuffer(“a”); StringBuffer s2=new StringBuffer(“a”); s1.equals(s2);为false,因为StringBuffer类中没有重新定义的equals方法,因此equals方法来自于Object类,而Object类的equals方法是用来比较地址的,所以为false。

(2)对于非字符串变量来说:“==”和“equals”的作用是相同的,都是用来比较对象在堆内存中的首地址,即用来比较两个引用变量是否指向同一个实体(内存空间)。注意:(

1)如果是基本数据类型比较只能用“==”不能用“equals”。

(2)对于基本数据类型的包装类型“==”比较的是实体的引用,“equals”比较的是实体的内容。

3)是否可以继承String类? String类是final类故不可以继承。

4)构造器Constructor是否可被override? 构造器Constructor不能被继承,因此不能被override(重写),但可以被overload(重载)。

5)HashMap和Hashtable的区别。

1.HashMap是Hashtable的轻量级实现,效率更高。

2.Hashtable是线程安全的,HashMap是非线程安全的,即前者中的方法有用synchronized修饰,后者没有。

3.HashMap允许空(null)键值(key),而Hashtable不允许。

4.Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。

5.HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。

6)GC是什么? 为什么要有GC? GC是垃圾收集的意思(Garbage Collection),(内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃)Java提供的GC功能可以 自动监测对象是否超过作用域从而达到自动回收内存的目的,避免内存溢出造成的一系列问题。Java语言没有提供释放已分配内存的显示操作方法。

7)同步和异步有何异同,在什么情况下分别使用他们?举例说明。

(1)同步(synchronized)和异步(asynchronized)是对于多线程(multi-threading)而言的 同步可防止并发 主要出于数据安全的考虑。对于线程中的共享数据,必须进行同步存取。

(2)异步允许并发。当应用程序

在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程。

8)String s = new String ("xyz"); 创建了几个String Object ? 两个,堆区中一个,常量池中一个。 String a="xyz"; 首先会到常量池中去查找,如果存在就不再分配,如果不存在就分配,常量池中的数据 是在编译期赋值的,也就是生成class文件时就把它放到常量池里了。

10)多线程有几种实现方法,都是什么? 同步有几种实现方法,都是什么? 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口。 实现同步也有两种,分别为使用同步方法和使用同步块。同步方法就是在方法返回类型后面加上synchronized,如:public void synchronized add{},同步块就是直接写:synchronized(需要同步的对象){}

11)switch是否能作用在byte上? 是否能作用在long上? 是否能作用在String上? switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long, String 都不能作用于swtich。

本文来自企鹅号 - 杭州华信智原媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

Java 泛型一览笔录

泛型(Generics )是把类型参数化,运用于类、接口、方法中,可以通过执行泛型类型调用 分配一个类型,将用分配的具体类型替换泛型类型。然后,所分配的类型将用...

10010
来自专栏黒之染开发日记

使用js的数据类型简单描述redis各个数据类型

key:想在redis中创建任意数据都必须有一个名字,可以通过这个名字来操作这个数据,这篇说明里,这个名字被称为key

13460
来自专栏NetCore

.NET反射、委托技术与设计模式

1 反射技术与设计模式   反射(Reflection)是。NET中的重要机制,通过放射,可以在运行时获得。NET中每一个类型(包括类、结构、委托、接口和枚举...

24590
来自专栏xingoo, 一个梦想做发明家的程序员

套接口编程

1 struct in_addr{ 2 in_addr_t s_addr; 3 }; 4 struct sockaddr_in{ 5 ...

20980
来自专栏Java 源码分析

数据结构Queue

​ 栈和队列其实是相同的,只是名字不一样 入栈换成了入队(enqueue),出栈换成了出队(dequeue)。语义 是不同的。入队操作向队尾添加元素,而出...

27550
来自专栏木木玲

Reference 、ReferenceQueue 详解

36470
来自专栏技术博客

C# try catch finally

 catch 和 finally 一起使用的常见方式是:在 try 块中获取并使用资源,在 catch 块中处理异常情况,并在 finally 块中释放资源。

43820
来自专栏专注 Java 基础分享

Java 的异常处理机制

13620
来自专栏xx_Cc的学习总结专栏

C - 基础总结

366110
来自专栏从零开始的linux

条件判断

整数测试: num1 OPRAND num2 -gt: 大于[ $num1 -gt $num2 ] -lt: 小...

32980

扫码关注云+社区

领取腾讯云代金券