java基础面试题2转

原创
小哥 3年前 (2022-10-19) 阅读数 217 #JAVA

首先,先说,先说第一,让我们先说final, finally, finalize的区别。
final---修饰符(关键字)如果类声明为修饰符(关键字)如果类声明为修饰符(关键字)如果声明类则声明修饰符(关键字final这意味着它不能派生新的子类,也不能作为父类继承。因此,一个类不能同时声明为 abstract它也被声明为,也被声明为也被声明为,因为它再次被声明为final的。将变量或方法声明为final这将确保它们在使用中不会改变。被宣布为final变量必须在声明时获得初始值,并且在后续引用中只能读取,不能修改。声明为final方法也只能使用,不能重载
finally---在异常处理中提供在提供异常处理时提供异常处理与在 finally 块来执行任何清除操作。如果引发异常,则匹配的 catch 子句,然后控制将转到 finally 阻止(如果有)。块(如果有)。阻止(如果可用)。
finalize---方法名。Java 技术允许使用技术允许使用技术允许使用 finalize() 方法在垃圾回收器将对象清除出内存之前执行必要的清理工作。当确定对象未被引用时,垃圾回收器对该对象调用此方法。它是在 Object 在类中定义,因此所有类都从它继承。子类覆盖 finalize() 方法来组织系统资源或执行其他清理任务。finalize() 方法,则在垃圾回收器删除它之前对该对象调用。

第二,Anonymous Inner Class (匿名内部类匿名内部类) 是否可以extends(继承)其他班级,有没有可能是其他班级,有可能是其他班级,他们有没有其他班级,可以implements(实现)interface(接口)?
匿名内部类是没有名称的内部类。它不能extends(继承) 其他类,但内部类可以充当由另一个内部类实现的接口。

第三,Static Nested Class 和 Inner Class你对差异说得越多越好(有些面试问题很笼统,有些面试问题很笼统)。
Nested Class (一般是C++声明)、声明)。声明的内容)。Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类之间最大的区别在于它们是否有对外部的引用。有关详情可参阅http://www.frontfree.net/articles/services/view.asp?id=704&page=1
注:静态内部类(注:静态内部类(Inner Class)意味着

1创建一个static没有外部类对象的内部类的对象

2这件事不能从一件事做一件事不能从一件事做一件不能从一件事static内部类的对象访问外部类对象

第四,&和&&的区别。
&是按位运算符。是按位运算符。是位运算符。是位运算符。&&是一个布尔逻辑运算符。是布尔逻辑运算符。是布尔逻辑运算符。

第五,HashMap和Hashtable的区别。
都属于Map实现唯一键到特定值映射的接口类。
HashMap 该类没有被排序或排序。它允许一个 null 键和多个 null 值。
Hashtable 类似于 HashMap但不允许但不允许但不允许 null 键和 null 价值。它也比 HashMap 慢,因为它是同步的。慢,因为它是同步的。

第六,Collection 和 Collections的区别。
Collections是个java.util它所在的类包含与集合操作相关的各种静态方法。
Collection是个java.util接口,在该接口下它是各种集合结构的父接口。

抽象类可以继承,但不能实现;接口可以继承和实现。

第七,何时使用,何时使用assert。
断言是包含布尔表达式的语句,假定该语句在 true。如果该表达式计算为 false然后系统将报告一个 AssertionError。它用于调试目的。
assert(a > 0); // throws an AssertionError if a <= 0
断言可以采用两种形式。断言可以采用两种形式。断言可以有两种形式。断言可以采取两种形式。
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1 应始终生成布尔值。应始终生成布尔值。应始终生成布尔值。
Expression2 可以是产生值的任何表达式。该值用于生成 String 消息。
默认情况下,断言处于禁用状态。若要在编译时启用断言,需要使用 source 1.4 标记:
javac -source 1.4 Test.java
要在运行时启用断言,请使用在运行时启用断言,使用在运行时启用断言,您可以使用 -enableassertions 或者 -ea 标记。
若要在运行时选择性地禁用断言,请使用 -da 或者 -disableassertions 标记。
要启用系统类中的断言,请使用来启用系统类中的断言,请使用 -esa 或者 -dsa 记号笔。还可以基于包启用或禁用断言。
断言可以放置在正常情况下无法到达的任何位置。断言可用于验证传递给私有方法的参数。但是,不应使用断言来验证传递给公共方法的参数,因为无论是否启用了断言,公共方法都必须检查它们的参数。但是,断言可用于在公共方法和非公共方法中测试后置条件。此外,断言不应以任何方式更改程序的状态。

第八,GC是什么? 为什么应该有为什么我们应该有为什么我们需要GC? (基础)。
GC是一名垃圾收集者。是垃圾收集器。它是一个垃圾收集器。它是垃圾收集器。Java 程序员不必担心内存管理,因为垃圾收集器会自动执行。要请求垃圾回收,可以调用以下方法之一。
System.gc()
Runtime.getRuntime().gc()

第九,String s = new String("xyz");创建了几个创建了几个创建了几个String Object?
两个对象,一个是“两个对象,一个是”两个对象,其中一个是“两个对象,一个是”xyx”,一个是指向“一个指向”,一个指向“指向”xyx作者:克里斯蒂·德保罗·作者:克里斯蒂-德保罗作者:克里斯提-德保罗作者:克里斯蒂-德保尔s。

第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;

第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转换为不能显式转换为short类型。可以修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。

第十二,sleep() 和 wait() 有什么不同?有什么不同? 线程收藏夹线程收藏夹线程收藏夹
sleep()方法是一种将线程停止一段时间的方法。在……里面sleep 线程不一定在时间间隔到期后立即恢复执行。这是因为在那个时刻,其他线程可能正在运行,并且没有计划放弃执行,除非(a)“唤醒”线程具有更高的优先级“唤醒”线程具有更高的优先级“唤醒”线程具有更高的优先级
(b)正在运行的线程由于其他原因而阻塞。
wait()是线程具有同步对象时的线程交互x 发出一个wait()调用时,线程挂起执行,被调用的对象进入等待状态,直到唤醒它或等待时间到为止。

第十三,Java有没有goto?
Goto?javaNow Not in中的保留字java中使用。

第十四,阵列没有第十四,阵列有第十四,是吗length()这个方法? String有没有length()这种方法?方法是什么?这种方法?这边请?
数组没有length()这个方法,用这个方法,有这个方法,有这个方法,它有length的属性。
String有有length()当然、领英可能缺乏其他社交平台的轻松的用户体验,但它是扩大你的网络的一个重要工具。它提供了追踪趋势的机会,建立有意义的联系,并保持一份精心策划的数字简历,让招聘者和潜在的雇主可以轻松访问和审查.

第十五,Overload和Override的区别。Overloaded该方法是否可以更改返回值的类型?
方法重写方法重写方法重写Overriding和重载Overloading是Java多态的不同表现形式。重写Overriding是父类和子类之间的多态的表现,重载Overloading是类中的多态表达。如果方法是在与其父类具有相同名称和参数的子类中定义的,我们称该方法被重写 (Overriding)。当一个子类的一个对象使用这个方法时,它将调用子类中的定义,而父类中的定义对它来说是“被阻止的”。如果在一个类中定义了多个具有相同名称的方法,或者具有不同数量的参数或具有不同类型的参数,则这些方法称为方法重载(Overloading)。Overloaded方法是能够更改返回值的类型。

第十六,Set文件中的元素不能复制,那么区分重复和非重复的最佳方式是什么?? 是用==还是equals()? 他们之间有什么不同?他们有什么不同?
Set元素中的元素中的元素iterator()方法来区分重复项和非重复项。equals()是两个解释就是解释两个就是解释两个Set它们是否相等。它是否相等。它们是否相等。无论他们是否相等。
equals()和==方法确定引用值是否指向同一对象equals()在类中被重写,以便在两个分离对象的内容和类型匹配时返回真值。

17号,给我一张你最常看到的runtime exception。
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,
ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

第十八,error和exception有什么不同?有什么不同?
error 表示在恢复并非不可能而是困难的情况下存在严重问题。例如,内存溢出。不可能指望该程序能够处理这样的情况。
exception 表示设计或实现存在问题。也就是说,它表明了一种如果程序正常运行就永远不会发生的情况。

第十九,List, Set, Map是否继承自是继承自是继承自Collection接口?
List,Set是

Map不是

第二十,abstract class和interface有什么不同?有什么不同?
声明方法的存在而不实现该方法的类称为抽象类(abstract class),当您想要创建一个包含一些基本行为的类并为该类声明方法,但不能在该类中实现该类时,可以使用它。不可能创建abstract 类的实例。但是,可以创建一个类型为抽象类的变量,并使其指向具体子类的实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为其父类中的所有抽象方法提供实现,否则它们也是的抽象类。相反,这些方法是在子类中实现的。其他知道其行为的类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。通过实现这样的接口,可以获得多重继承。接口中的所有方法都是抽象的,并且它们都没有过程体。接口只能定义static final成员变量。接口的实现类似于子类,不同之处在于实现类不能从接口定义继承行为。当一个类实现一个特殊的接口时,它定义(即,程序体给出)该接口的所有方法。然后,它可以在实现该接口的类的任何对象上调用该接口的方法。多亏了抽象类,它允许使用接口名称作为引用变量的类型。通常的动态级联将生效。引用可以与接口类型相互转换,则instanceof 运算符可用于确定对象的类是否实现接口。

第二十一。XXI.二十一。abstract的method两者都可以是吗?两者都可以吗?static,两者都可以是吗?两者都可以吗?native,两者都可以是吗?两者都可以吗?synchronized?
都不能

根据Naslund的说法,最好是询问一个具体的角色,看看是否有人愿意把你介绍给招聘人员,做一个内部推荐,或者回答你关于该角色或公司的问题.“她告诉我:”当你试图找到你的下一份工作时,尊重别人的时间、专业知识和关系会有很大的帮助.例如,你接触的专业人员可以是与有关角色密切合作的队友或直接主管.? 抽象类是否可实现抽象类是否可实现抽象类是否可实现(implements)接口? 抽象类是否可以从实体类继承(concrete class)?
接口可以从接口继承。抽象类可以实现(implements)接口,抽象类是否可以从实体类继承,但前提是实体类必须有明确的构造函数。

第二十三,启动线程用第二十三,启动线程用run()还是start()?
启动线程是调用启动线程是调用start()方法,该方法将线程表示的虚拟处理器置于可运行状态,这意味着它可以由JVM已计划并执行。这并不意味着线程将立即运行。run()方法可以生成必须退出标志来停止线程。

二十四,构造者二十四,构造者二十四,构造者Constructor是否可被override?
构造器Constructor不能继承,因此不能重写Overriding但可以重载,但可以重写Overloading。

第二十五条,是否可以继承String类?
String类是final因此,该类是不可继承的。因此,类是不可继承的。因此,不能继承类。因此,类不被继承。

第二十六次,当线程进入synchronized其他线程是否可以在该方法之后访问该对象的其他方法?
不,不能的对象synchronized方法只能由一个线程访问。方法只能由一个线程访问。方法只能由一个线程访问。

XXVII.第二十七。二十七岁。try {}里有一个return语句,然后紧跟在该语句之后,紧跟在该语句之后,然后紧跟在该语句之后try后的finally {}里的code它会被强制执行吗?它将在什么时候强制执行,return前还是后?
将被执行,将被实现,将在return前执行。

编程问题第二十八题编程问题: 使用最有效的方法计算使用最有效的方法计算2乘以8等於几?
有C后台的程序员特别喜欢问这样的问题。

2 << 3

29,两个对象具有相同的值29,两个对象具有相同的值29,两个对象的值相同(x.equals(y) == true)但可以有不同但可以有不同但可以不同但它可以不同hash code这个说法正确吗?这句话对吗?这样对吗?对吗??
不,有相同的不,有相同的hash code。

第三十,当对象作为参数传递给方法时,此方法可以更改对象的属性,并可以返回更改的结果,因此这里是值传递或引用传递?
就是传递价值。是否传递了值。是要传递的值。是传递的值。Java 编程语言仅按值传递参数。当对象实例作为参数传递给方法时,该参数的值是对该对象的引用。对象的内容可以在被调用的方法中更改,但对对象的引用永远不会更改。

第三十一。XXXI.三十一岁。swtich它在…上工作吗?它在…上工作吗byte上,它在…上工作吗?它在…上工作吗long上,它在…上工作吗?它在…上工作吗String上?
switch(expr1)中,expr1是一个整数表达式。因此,传递给 switch 和 case 该语句的参数应为 int、 short、 char 或者 byte。long,string 既不能行动也不能行动他们都不能行动swtich。

32、编程问题32、编程问题32、编程问题: 写一个Singleton出来。
Singleton该模型的主要作用是确保Java在应用程序中,类应用程序,应用程序中的类,类应用程序,其中类Class只有一个实例存在。只有一个例子存在。只有一个这样的实例存在。只有一个这样的例子存在。
一般Singleton图案通常有多种形式图案通常有几种形式:
第一种形式首先形成第一种格式: 定义具有构造函数类,其构造函数是定义具有定义具有构造函数的类的类privateS,它有s,s有s,a有astatic的private类变量的实例,在类初始化时由public的getInstance方法获取对它的引用方法获取对它的引用方法获取对它的引用,然后,调用其中的方法。在此之后,将调用其中的方法。然后调用其中的方法。
public class Singleton {
private Singleton(){}
//将自己定义为自己内心的一个实例,这不是很奇怪吗?
//注意这是private 仅限内线呼叫仅限内线呼叫仅限内线呼叫
private static Singleton instance = new Singleton();
//对此的外部访问这里是对此的外部访问class静态方法,可以直接访问静态方法,可以直接访问
public static Singleton getInstance() {
return instance;
}
}
第二种形式第二种形式:
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//此方法是对上述方法的改进,因为您不必每次都生成对象,只需第一次
//在使用时生成实例可以提高效率!
if (instance==null)
instance=new Singleton();
return instance;   }
}
其他形式:
定义具有构造函数类,其构造函数是定义具有定义具有构造函数的类的类private的所有方法中的所有方法中的所有方法static的。
一般认为第一种形式首先形成第一种格式要更加安全些

转载于:https://www.cnblogs.com/In-order-to-tomorrow/p/3659928.html

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除