首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java基础面试题及答案

一个可以实现多个接口,但它只能继承一个抽象。  一个实现某个接口,必须实现这个接口声明所有方法。一个不需要实现抽象父中声明所有方法,不过,这时候这个也必须声明为抽象。 ...抽象可以实现接口,而且不需要实现接口方法。  接口中声明变量默认是final抽象可以包含非final变量。 ...10.传引用和传值    当对象通过传值调用时传递是这个对象一个拷贝。因此,即使函数修改这个对象,也不会影响原对象值。   ...当对象通过传引用调用时,对象本身没有被传递传递是对象一个引用。因此,外部函数这个对象修改,也会反映到任何出现这个对象地方。      Java 线程  11. 进程与线程区别 ?...有三种创建线程方式:   继承Thread实现Runnable接口.  通过Executor框架创建线程池.   首选方式是实现Runnable接口, 因为它不需要继承Thread.

83831

Java面试题1:Java基础篇

———————————————————————————————————————— 9、抽象接口有什么区别? 答: (1)抽象中可以定义构造函数接口不能定义构造函数。...因为散列表中,hashCode() 相等即两个键值哈希 值相等,然⽽哈希值相等,并不⼀定能得出键值相等【散列冲突】。...答: Java 参数是以值传递形式传⼊⽅法中,⽽不是传递。 当传递⽅法参数类型为基本数据类型(数字以及布尔值)时,⼀个⽅法是不可能修改⼀个基本数据类型参数。...当传递⽅法参数类型为⽤数据类型时,⼀个⽅法将修改⼀个⽤数据类型参数所指向对象值。...即使 Java 函 数传递⽤数据类型时,也只是拷⻉了值罢了,之所以能修改⽤数据是因为它们同时指向了⼀个对象, 但这仍然是按值调⽤⽽不是⽤调⽤。

5610
您找到你想要的搜索结果了吗?
是的
没有找到

Java面试题合集

接口中,所有方法都是抽象。多继承性可通过实现这样接口获得。接口所有方法都是抽象,没有一个有程序体。接口只可以定义static final成员变量。...接口实现与子类相似,除了该实现不能从接口定义中继承行为。当实现特殊接口时,它定义(即将程序体给予)所有这种接口方法。然后,它可以实现了该接口任何对象上调用接口方法。...一般认为第一种形式要更加安全些 34.Hashtable和HashMap区别 答:Hashtable继承自DictionaryHashMap是Java1.2Map interface一个实现...最大不同是,Hashtable方法是SynchronizeHashMap不是 多个线程访问Hashtable时,不需要自己为它方法实现同步,HashMap 就必须为之提供外同步。...35.内部类作用 答: 1.内部类可以用多个实例,每个实例都有自己状态信息,并且与其他外围对象信息相互独立。 2.单个外围中,可以让多个内部类以不同方式实现同一个接口,或者继承同一个

753100

Effective-java-读书笔记之方法

如果答案是否定, 就必须该对象进行保护性拷贝, 并且让拷贝之后对象不是原始对象进入到数据结构中.在内部组件被返回给客户端之前, 它们进行保护性拷贝也是同样道理.如果参数类型是可以被不被信任的人子类化...避免过长参数列表. -> 1.分解成多个方法; 2.创建辅助, 用来保存参数分组; 3.从对象构建到方法调用都采用Builder模式.参数类型优先使用接口不是.对于boolean参数, 要优先使用两个元素枚举类型....所以子类方法与基签名相同, 则覆盖基, 尽管对象声明为基, 但是调用时是子类实现.但重载选择工作是在编译时进行, 完全基于参数编译时类型..... -> 重载方法中, 不要在同样参数位置接受不同函数接口.第53条 慎用可变参数可变参数机制通过先创建一个数组, 数组大小为调用位置所传递参数数量, 然后将参数传到数组中, 最后将数组传递给方法...对于, 接口和域, 概要描述应该是一个名词短语.Java 9入了index, 方面文档查询.

40950

CC++编码规范

函数无参数一定要用void标注。 对于内置类型参数应传值(除非函数内部要对其修改)。 对于非内置类型参数应传递引用(首选)或指针。...降低耦合度 努力使接口完备 保持不同接口实现原则上一致性 避免为每个成员提供访问函数 不要在定义时提供成员函数体...函数声明(不是实现)时定义参数缺省值 恰当选择成员函数、全局函数和友元函数 防范、杜绝潜在二义性 显式禁止编译器自动生成不需要函数 < 14...)区别 关于继承接口和继承实现 限制继承层数 继承树上非叶子节点应是虚基 显式提供继承和访问修饰:public、protected 或private...确保全局变量使用前被初始化 2.14重载 仔细区分带缺省值参数函数重载函数 确保重载函数所有版本有共同目的和相似的行为 避免重载指针和整型类型上

1.9K20

代码质量规则

CA1033:接口方法应可由子类型调用 未密封外部可见类型提供了显式实现公共接口方法,但没有提供具有相同名称其他外部可见方法。...CA1040:避免使用空接口 接口定义提供某个行为或使用协定成员。 接口所描述功能可以被任何类型采用,不管该类型出现在继承层次结构中哪个位置。 类型通过实现接口成员来实现接口。...CA2211:非常量字段不应是可见 不是常数也不是只读字段静态字段不是线程安全。 必须严格控制这类字段访问,并需要高级编程技术来同步对象访问。...CA2229:实现序列化构造函数 要修复与该规则冲突,请实现序列化构造函数。 对于密封,请使构造函数成为私有;否则,请使构造函数成为受保护。...CA2247:传递给 TaskCompletionSource 构造函数参数应为 TaskCreationOptions 枚举,不是 TaskContinuationOptions 枚举。

2.1K30

【C++入门】缺省参数、函数重载与引用

2.2函数重载原因 C语言不支持函数重载主要原因是它编译器进行函数用时是根据函数名来确定具体调用函数,在编译阶段就已经决定了函数调用方式。...函数重载是指多个函数拥有相同名称但具有不同参数列表,编译器无法根据函数名来确定具体调用函数。因此,C语言无法实现函数重载功能。...3.引用 3.1用概念 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用变量共用同一块内存空间 它允许我们使用一个变量名来引用另一个变量值,不是创建一个新变量...同时,通过引用传递参数可以实现原始数据修改,不需要借助指针来实现。...3.4用和指针区别 (1)语法概念上引用就是一个别名,没有独立空间,和其引用实体共用同一块空间;指针是保存着变量地址,是有独立空间; 例如: int main() { int a =

10510

Go 语言嵌入和多态机制对比

使用 Animal 指针指向一个 Cat 类型结构体,并且可以将作为参数传递给 eat 函数,此时会调用以 Animal 类型指针为参数 eat 函数不是以 Cat 类型指针为参数 eat 函数...参数化多态 参数化多态实际上是指定义复合类型成员变量和函数参数时不指定其具体类型,而是真正使用时将其类型作为参数传入,从而使得复合类型和函数各种具体类型都适用,从而避免大量重复性工作,多用于队列...函数重载(overloading)指的是多个函数拥有相同名称,但是拥有不同参数和实现操作符重载类似于函数重载,针对不同参数具有不同实现。...上述代码分别定义了参数为 string 和 int 类型 Add 函数实际调用时,会根据传入参数,调用不同 Add 函数实现。... Go 语言中, 如果类型实现接口定义所有函数,该类型就被认为实现了该接口

73310

【面试虐菜】—— JAVA面试题(1)

印象最深是:什么不是Object函数,我蒙finalize,哎,无知! 还问了,接口与抽象不同,还有多线程实现方式!下面基本都有。...面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装对象,这些对象通过一个受保护接口访问其他对象。 (3).多态性: 多态性是指允许不同类对象同一消息作出响应。...最大区别是,Hashtable思路方法是SynchronizeHashMap不是多个线程访问Hashtable时,不需要自己为它思路方法实现同步,HashMap 就必须为提供外同步。...无法以返回型别作为重载函数区分标准。 重写(Override):       (1)  父与子类之间多态性,函数进行重新定义。...同步有几种实现方法,都是什么? 多线程有两种实现方法,分别是继承Thread实现Runnable接口  实现Runnable接口比较好,因为实现可以实现多个接口只能继承一个

76390

运算符重载(超详细)

(7)重载运算符函数不能有默认参数,否则就改变了运算符参数个数,与前面第3点相矛盾了; (8)重载运算符只能是用户自定义类型,否则就不是重载而是改变了现有的C++标准数据类型运算符规则了,会会天下大乱...但是,这样运算符函数访问私有和保护成员时,必须使用公有接口中提供设置数据和读取数据函数,调用这些函数时会降低性能。可以内联这些函数以提高性能。)...this指针,因此操作数个数没有变化,所有的操作数都必须通过函数形参进行传递函数参数与操作数自左至右一一应。  ...4.两种重载形式比较 多数情况下,将运算符重载成员函数友元函数都是可以。...(2) 以下一些双目运算符不能重载友元函数:=、()、[]、->。 (3) 类型转换函数只能定义为一个成员函数不能定义为友元函数

84420

C++函数

关于C++函数有很多知识,因为其函数有多种变体,可以说C++创作者为了开发方便,打开了很多个后门让编程人员随心所欲地炫技使用,但私以为这也造成了使用函数复杂度,如果真的代码中使用各种变体,虽然确实可以让代码看上去简洁高级...普通函数调用是遇到函数用时,将跳到函数代码地址去,执行后返回原地址,内联函数在编译时会直接编译到调用代码中去,因此无需做跳转,因此内联函数运行速度比常规函数稍快,但代价是需要占用更多内存。...语言下使用宏来实现: #define SQUARE (X) X*X 默认参数 和python一样,c++允许给函数参数设置默认值,如果在调用时没有给对应参数赋值,那么函数将使用默认值,方法其实就是声明函数原型时同时声明参数默认值...,这也是为了调用时方便参数设置,因为用时你要写参数,不可能参数空一个不写,写完了你要设置,剩下就都是右边默认了: int func1 (int n, int m = 4, int j =...显示具体化 上面的函数模板让所有的参数类型使用同一个函数代码块执行同一种操作,如果我这时候又想某个特定类型做不同操作怎么办?就你名堂多。 一种方法是使用函数重载

30910

JAVA笔试题_javabean面试题

继承 String 本身就是一个错误行为, String 类型最好重用方式是关联关系(Has-A)和依赖关系(Use- A)不是继承关系(Is-A)。 6....重载返回类型没有特殊要求。 ​ 方法重载规则: ​ 1. 方法名一致,参数列表中参数顺序,类型,个数不同。 ​ 2. 重载与方法返回值无关,存在于父和子类,同类中。 ​ 3....因为调用时不能指定类型信息,编译器不知道你要调用哪个函数。...接口中定义成员变量实际上都是常量 ​ 5. 接口中不能有静态方法 ​ 6. 一个可以实现多个接口 相同: ​ 1. 不能够实例化 ​ 2. 可以将抽象接口类型作为引用类型 ​ 3....一个如果继承了某个抽象或者实现了某个接口都需要对其中抽象方法全部进行实现,否则该类仍然需要 被声明为抽象 11.

47530

框架设计原则和规范(二)

优先定义不是接口 我们可以给添加成员,接口则需要使用者修改代码 1.3.2. 要用抽象不是接口解除契约与实现之间耦合 1.3.3....如果需要提供多态层次结构值类型,定义接口 值类型(结构)不能继承其他类型,但可以实现接口 1.3.4. 考虑通过定义接口来达到多重继承类似的效果 1.4. 抽象设计 1.4.1....要允许传递参数是,将可选参数设为null 2.1.1.8. 要有限使用成员重载不是定义有默认参数成员 2.1.2. 显式实现接口成员 C#中实现一个接口有显式和隐式两种。...面向接口切面编程 如果一个接口,有很多实现,而你想为所有这些实现接口,增加一个统一方法,但是不想挨个实现去写代码,就可以用此功能。...考虑构造函数中,确实只有两种状态参数,以及用来初始化布尔属性参数,使用布尔类型 2.8.7. 参数验证 2.8.7.1. 要对传给公有的、受保护或显式实现成员参数进行验证。

1.4K50

C++CLI(一)-C++CLI简介

一个引用来说,相等性是通过函数Equals来实现不是重载==操作符,如标记8(a)所示。...而这个函数重载了Object中一个函数,所以需要接受一个Object作为参数,不是一个Point。...一个非引用(指本地)中,this是一个实例函数用时指向对象指针,可带有const限定符;一个引用中,则是实例函数用时指向对象句柄——此处要再次提醒大家,不允许带有const限定符。...与相等性比较类似,值格式化是通过一个重载System::Object函数实现,如标记10(a),不是重载<<操作符。...目前C++/CLI版本中,引用对象只能驻留于堆栈或托管堆中,与其他CLI语言不同,C++/CLI可以让你编写能被传递,并通过复制构造函数或 = 操作符赋值引用,还可以重载Clone函数实现虚拟

2.9K30

Java常见面试题及答案

如果一个变量或者方法前面有static修饰,那么表明这个方法或者变量属于这个,也就是说可以不创建对象情况下直接使用 当父方法被private修饰时,表明该方法为父私有,其他任何都是不可见...当参数列表相同但返回值不同时,将会出现编译错误,这并不是重载,因为jvm无法根据返回值类型来判断应该调用哪个方法。 6.Java支持多继承么?如果不支持,如何实现?...java中是单继承,也就是说一个只能继承一个父。java中实现多继承有两种方式,一是接口,而是内部类....抽象可以不提供接口方法实现情况下实现接口。 Java 接口中声明变量默认都是 final 。抽象可以包含非 final 变量。 Java 接口成员函数默认是 public 。...抽象成员函数可以是 private,protected 或者是 public 。 接口是绝对抽象,不可以被实例化(java 8已支持接口实现默认方法)。

54520

【C++修行之道】和对象(四)运算符重载

注意: 不能通过连接其他符号来创建新操作符:比如operator@ 重载操作符必须有一个类型参数 用于内置类型运算符,其含义不能改变,例如:内置整型+,不能改变其含义 作为成员函数重载时...,不是执行这个函数”。...此时用户再在外自己实现一个全局赋值运算符重载,就和编译器中生成默认赋值运算符重载冲突了,故赋值运算符重载只能是成员函数。 3....用户没有显式实现时,编译器会生成一个默认赋值运算符重载,以值方式逐字节拷贝。 注意:内置类型成员变量是直接赋值自定义类型成员变量需要调用对应赋值运算符重载完成赋值。...// C++规定:后置++重载时多增加一个int类型参数,但调用函数时该参数不用传递,编译器自动传递 // 注意:后置++是先使用后+1,因此需要返回+1之前旧值,故需实现时需要先将this保存一份

8210

Kotlin修炼指南(三)——奇技淫巧

显式参数 Java中,当一个函数参数值太多时,需要一个个对齐参数,虽然可以通过IDE快捷提示等功能来展示,但始终用起来不太方便,而在Kotlin中,除了像Java中那样按顺序传递参数外,还可以通过指定参数名方式进行参数传递...一个函数中定义另一个函数,可以很好将这个函数使用限制在当前外层函数中,避免对外暴露不必要接口,同时还能避免重复模板代码,例如下面这个例子。...由于Kotlin中,函数可以脱离独立存在,所以这对于工具函数来说,就非常方便了,不用再定义一个ToolUtil可以直接写在文件中。...如果需要在使用一个同时,又要修改该类一些函数实现,这时候就可以使用装饰器模式,创建一个装饰器实现与原始一样接口并将原来实例作为一个成员变量。...但这里问题是,当一个原始需要实现函数很多时,装饰器又只需要修改很少函数时,就会产生大量模板代码,所以这个时候,借助委托,就可以极大减少这种模板代码产生。

72620

C# .NET面试系列二:面向对象

需要注意是,静态成员初始化和静态构造函数只会在第一次被使用时执行,实例构造函数和非静态成员初始化每次创建实例时都会执行。这确保了使用前得到正确初始化。7. 接口是否可继承接口?...C#中,接口是可以继承其他接口抽象既可以实现(implements)接口,也可以继承实现(concrete class)。...这些成员属于不是实例,可以通过名直接访问,而无需创建实例。静态成员加载时初始化,只会有一个副本,供所有实例和其他访问。...这种方法推崇通过定义和实现接口来组织代码,以实现解耦合、可扩展性和代码复用目标。面向接口开发中,重视设计良好接口,使得不同组件可以通过接口进行通信,不是直接依赖于具体实现。...通过面向接口开发,代码更容易进行维护和扩展,因为可以轻松替换实现不影响其他部分代码。

14410

c#面试题抽象接口区别-金三银四面试:C#程序员经常遇到30道基础面试题,想你所想

3、请解释接口显示实现有什么意义?   接口其他类型为确保它们支持某些操作实现引用类型。接口从不直接创建而且没有实际表示形式,其他类型必须转换为接口类型。一个接口定义一个协定。...变量值被传递到ref参数。传递到ref参数变量必须要先初始化。   与out参数相比,变量传递到out参数之前不必显示初始化。属性不是变量,不能作为ref参数传递。...如果两个方法声明仅在它们ref使用方面不同c#面试题抽象接口区别,则将出现重载。但是,无法定义仅在ref和out方面不同重载。   ...静态构造函数典型用途是:当使用日志文件时,将使用这种构造函数向日志文件中写入项。   12、C#中如何实现多态?   ...命名空间是用于避免命名冲突,专用于组织代码,当代码要在其他某个应用程序中重用时,可以降低复杂性。

1.9K20

【深入浅出C#】章节 4: 面向对象编程基础:构造函数和析构函数

名与构造函数同名,参数列表是可选,用于传递参数给构造函数。构造函数可以重载,即在同一个中定义多个具有不同参数构造函数,以便根据不同参数列表来创建对象。...初始化列表派生构造函数中使用 base 关键字指定基构造函数参数,并通过冒号后面的初始化列表派生字段进行初始化。...实际开发中,应谨慎使用析构函数,并且优先考虑使用其他方式手动管理资源释放,如实现 IDisposable 接口、使用 using 语句等。...一些情况下,可以使用IDisposable接口和Dispose方法来显式释放非托管资源,但这并不是手动调用析构函数替代方案。Dispose方法应该由调用方显式调用,不是由析构函数调用。...因此,在编写代码时,应该遵循使用IDisposable接口和Dispose方法来释放资源最佳实践,不是依赖于析构函数调用。

36620
领券