Java开发面试题 (java开发工具)
本文目录导航:
Java开发面试题
1、面向对象的特色有哪些方面?答:面向对象的特色关键有以下几个方面:- 形象:形象是将一类对象的独特特色总结进去结构类的环节,包括数据形象和行为形象两方面。
形象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。
- 承袭:承袭是从已有类失掉承袭信息创立新类的环节。
提供承袭信息的类被称为父类(超类、基类);失掉承袭信息的类被称为子类(派生类)。
承袭让变化中的软件系统有了必定的间断性,同时承袭也是封装程序中可变起因的关键手腕(假设不能了解请阅读阎宏博士的《Java与形式》或《设计形式精解》中关于桥梁形式的局部)。
- 封装:理论以为封装是把数据和操作数据的方法绑定起来,对数据的访问只能经过已定义的接口。
面向对象的实质就是将事实环球描述成一系列齐全自治、封锁的对象。
咱们在类中编写的方法就是对成功细节的一种封装;咱们编写一个类就是对数据和数据操作的封装。
可以说,封装就是暗藏一切可暗藏的物品,只向外界提供最繁难的编程接口(可以想想普通洗衣机和全智能洗衣机的差异,显著全智能洗衣机封装更好因此操作起来更繁难;咱们如今经常使用的智能手机也是封装得足够好的,由于几个按键就搞定了一切的事件)。
- 多态性:多态性是指准许不同子类型的对象对同一信息作出不同的照应。
繁难的说就是用雷同的对象援用调用雷同的方法然而做了不同的事件。
多态性分为编译时的多态性和运转时的多态性。
假设将对象的方法视为对象向外界提供的服务,那么运转时的多态性可以解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统来说都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以经常使用电池供电或许用交流电,甚至还有或许是太阳能,A系统只会经过B类对象调用供电的方法,但并不知道供电系统的底层成功是什么,终究经过何种方式取得了能源)。
方法重载(overload)成功的是编译时的多态性(也称为前绑定),而方法重写(override)成功的是运转时的多态性(也称为后绑定)。
运转时的多态是面向对象最精髓的物品,要成功多态须要做两件事:1). 方法重写(子类承袭父类偏重写父类中已有的或形象的方法);2). 对象外型(用父类型援用援用子类型对象,这样雷同的援用调用雷同的方法就会依据子类对象的不同而体现出不同的行为)。
2、访问润色符public,private,protected,以及不写(自动)时的区别?答:润色符以后类同 包子 类其余包public√√√√protected√√√×default√√××private√×××类的成员不写访问润色时默以为default。
自动关于同一个包中的其余类相当于地下(public),关于不是同一个包中的其余类相当于私有(private)。
受包全(protected)对子类相当于地下,对不是同一包中的没有父子相关的类相当于私有。
Java中,外部类的润色符只能是public或自动,类的成员(包括外部类)的润色符可以是以上四种。
3、String 是最基本的数据类型吗?答:不是。
Java中的基本数据类型只要8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是援用类型(reference type)。
4、float f=3.4;能否正确?答:不正确。
3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会形成精度损失,因此须要强迫类型转换float f =(float)3.4; 或许写成float f =3.4F;。
5、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?答:关于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,须要强迫转换类型能力赋值给short型。
而short s1 = 1; s1 += 1;可以正确编译,由于s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强迫类型转换。
6、Java有没有goto?答:goto 是Java中的保管字,在目前版本的Java中没有经常使用。
(依据James Gosling(Java之父)编写的《The Java Programming Language》一书的附录中给出了一个Java关键字列表,其中有goto和const,然而这两个是目前无法经常使用的关键字,因此有些中央将其称之为保管字,其实保管字这个词应该有更宽泛的意义,由于相熟C言语的程序员都知道,在系统类库中经常使用过的有不凡意义的单词或单词的组合都被视为保管字)7、int和Integer有什么区别?答:Java是一个近乎纯净的面向对象编程言语,然而为了编程的繁难还是引入了基本数据类型,然而为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开局引入了智能装箱/拆箱机制,使得二者可以相互转换。
Java经常出现的面试疑问(带答案),自己答进去多少
1、在java中假设申明一个类为final,示意什么意思?答:final是最终的意思,final可用于定义变量、方法和类但含意不同,申明为final的类不能被承袭。
父类的结构方法能否可以被子类笼罩(重写)?答:父类的结构方法无法以被子类笼罩,由于父类和子类的类名是无法能一样的。
2、请讲述String 和StringBuffer的区别。
答:String 类所定义的对象是用于寄存”长度固定”的字符串。
StringBuffer类所定义的对象是用于寄存”长度可变化”的字符串。
3、假设有两个类A、B(留意不是接口),你想同时经常使用这两个类的配置,那么你会如何编写这个C类呢?答:由于类A、B不是接口,所以是无法以间接承袭的,但可以将A、B类定义成父子类,那么C类就能成功A、B类的配置了。
假设A为B的父类,B为C的父类,此时C就能成功A、B的配置。
4、谈谈你对形象类和接口的了解。
答:定义形象类的目标是提供可由其子类共享的普通方式、子类可以依据自身须要裁减形象类、形象类不能实例化、形象方法没有函数体、形象方法必定在子类中给出详细成功。
他经常使用extends来承袭。
接口:一个接口准许一个类从几个接口承袭而来,Java 程序一次性只能承袭一个类但可以成功几个接口,接口不能有任何详细的方法,接口也可用来定义可由类经常使用的一组常量。
其成功方式是interface来成功。
5、Java中什么是竞态条件?答:竞态条件会造成程序在并发状况下出现一些bugs。
多线程对一些资源的竞争的时刻就会发生竞态条件,假设首先要执行的程序竞争失败排到前面执行了,那么整个程序就会出现一些不确定的bugs。
这种bugs很难发现而且会重复出现,由于线程间的随机竞争。
6、Java中如何中止一个线程?答:Java提供了很丰盛的API但没有为中止线程提供API。
JDK 1.0原本有一些像stop(), suspend() 和 resume()的控制方法然而由于潜在的死锁要挟因此在后续的JDK版本中他们被弃用了,之后Java API的设计者就没有提供一个兼容且线程安保的方法来中止一个线程。
当run() 或许 call() 方法执行完的时刻线程会智能完结,假设要手动完结一个线程,你可以用volatile 布尔变量来分开run()方法的循环或许是敞开义务来终止线程。
点击这里检查示例代码。
7、 一个线程运转时出现意外会怎样?答: 繁难的说,假设意外没有被捕捉该线程将会中止执行。
是用于解决未捕捉意外形成线程突然终止状况的一个内嵌接口。
当一个未捕捉意外将形成线程终止的时刻JVM会经常使用()来查问线程的UncaughtExceptionHandler并将线程和意外作为参数传递给handler的uncaughtException()方法启动解决。
Java面试中都会遇到哪些疑问
JAVA面试精选题
各位准程序猿们,能不能找到一份好上班,就看你知不知道这,66道最基本的JAVA面试题,请耐烦看完,说不定这10分钟,会影响你一辈子
面试题NO.01-NO.05
疑问:假设main方法被申明为private会怎样?
答案:能反常编译,但运转的时刻会揭示”main方法不是public的”。
疑问:Java里的传援用和传值的区别是什么?
答案:传援用是指传递的是地址而不是值自身,传值则是传递值的一份拷贝。
疑问:假设要重写一个对象的equals方法,还要思考什么?
答案:hashCode。
疑问:Java的”一次性编写,处处运转”是如何成功的?
答案:Java程序会被编译成字节码组成的class文件,这些字节码可以运转在任何平台,因此Java是平台独立的。
疑问:说明一下public static void main(String args[])这段申明里每个关键字的作用
答案:public: main方法是Java程序运转时调用的第一个方法,因此它必定对Java环境可见。所以可见性设置为pulic.
static: Java平台调用这个方法时不会创立这个类的一个实例,因此这个方法必定申明为static。
void: main方法没有前往值。
String是命令行传进参数的类型,args是指命令行传进的字符串数组。
面试题NO.06-NO.10
疑问:==与equals的区别
答案:==比拟两个对象在内存里是不是同一个对象,就是说在内存里的存储位置分歧。两个String对象存储的值是一样的,但有或许在内存里存储在不同的中央 .
==比拟的是援用而equals方法比拟的是内容。
public boolean equals(Object obj) 这个方法是由Object对象提供的,可以由子类启动重写。
自动的成功只要当对象和自身启动比拟时才会前往true,这个时刻和==是等价的。
String, BitSet, Date, 和File都对equals方法启动了重写,对两个String对象 而言,值相等象征着它们蕴含雷同的字符序列。
关于基本类型的包装类来说,值相等象征着对应的基本类型的值一样。
疑问:假设去掉了main方法的static润色符会怎样?
答案:程序能反常编译。
运转时会抛NoSuchMethodError意外。
疑问:为什么oracle type4驱动被称作瘦驱动?
答案:oracle提供了一个type 4 JDBC驱动,被称为瘦驱动。
这个驱动蕴含了一个oracle自己齐全用Java成功的一个TCP/IP的Net8的成功,因此它是平台独立的,可以在运转时由阅读器下载,不依赖任何客户端 的oracle成功。
客户端衔接字符串用的是TCP/IP的地址端口,而不是数据库名的tnsname。
疑问:引见一下finalize方法
答案: final: 常量申明。
finally: 解决意外。
finalize: 协助启动渣滓回收。
接口里申明的变量自动是final的。
final类无法承袭,也就是没有子类。
这么做是出于基础类型的安保思考,比如String和Integer。
这样也使得编译器启动一些优化,更容易保证线程的安保性。
final方法无法重写。
final变量的值不能扭转。
finalize()方法在一个对象被销毁和回收前会被调用。
finally,理论用于意外解决,不论有没无心外被抛出都会执行到。
比如,封锁衔接理论放到finally块中成功。
疑问:什么是Java API?
答案:Java API是少量软件组件的汇合,它们提供了少量有用的配置,比如GUI组件。
面试题NO.11-NO.15
疑问:GregorianCalendar类是什么物品?
答案:GregorianCalendar提供了西方传统日历的支持。
疑问:ResourceBundle类是什么?
答案:ResourceBundle用来存储指定言语环境的资源,运行程序可以依据运转时的言语环境来加载这些资源,从而提供不同言语的展现。
疑问:为什么Java里没有全局变量?
答案:全局变量是全局可见的,Java不支持全局可见的变量,由于:全局变量破坏了援用透明性准则。
全局变量造成了命名空间的抵触。
疑问:如何将String类型转化成Number类型?
答案:Integer类的valueOf方法可以将String转成Number。上方是代码示例:
疑问:SimpleTimeZone类是什么?
面试题NO.16-NO.20
疑问:while循环和do循环有什么不同?
答案:while结构在循环的开局判别下一个迭代能否应该继续。
do/while结构在循环的开头来判别能否将继续下一轮迭代。
do结构至少会执行一次性循环体。
疑问:Locale类是什么?
答案:Locale类用来依据言语环境来灵活调整程序的输入。
疑问:面向对象编程的准则是什么?
答案:关键有三点,多态,承袭和封装。
疑问:引见下承袭的准则
答案:承袭使得一个对象可以失掉另一个对象的属性。
经常使用承袭可以让曾经测试完备的配置得以复用,并且可以一次性修正,一切承袭的中央都同时失效。
疑问:什么是隐式的类型转化?
答案:隐式的类型转化就是繁难的一个类型赋值给另一个类型,没有显式的通知编译器出现了转化。
并不是一切的类型都支持隐式的类型转化。
代码示例:
面试题NO.21-NO.25
疑问:sizeof是Java的关键字吗?
答案:不是。
疑问:native方法是什么?
答案:native方法是非Java代码成功的方法。
疑问:在()外面,System, out, println区分是什么?
答案:System是系统提供的预约义的final类,out是一个PrintStream对象,println是out对象外面一个重载的方法。
疑问:封装,承袭和多态是什么?
答案:繁难来说,多态是指一个名字多种成功。
多态使得一个实体经过一个通用的方式来成功不同的操作。
详细的操作是由实践的成功来选择的。
多态在Java里有三种体现方式:方法重载经过承袭成功方法重写经过Java接口启动方法重写。
疑问:显式的类型转化是什么?
答案:显式的类型转化是明白通知了编译器来启动对象的转化。
代码示例:
面试题NO.26-NO.30
疑问:什么是Java虚构机?
答案:Java虚构机是能移植到不同配件平台上的软件系统。
疑问:类型向下转换是什么?
答案:向下转换是指由一个通用类型转换成一个详细的类型,在承袭结构上向下启动。
疑问:Java的访问润色符是什么?
答案:访问权限润色符是标明类成员的访问权限类型的关键字。
经常使用这些关键字来限定程序的方法或许变量的访问权限。
它们蕴含:
public: 一切类都可以访问 protected: 同一个包内以及一切子类都可以访问 private: 只要归属的类能力访问自动: 归属类及相反包下的子类可以访问。
疑问:一切类的父类是什么?
答案:Object.
疑问:Java的基本类型有哪些?
答案:byte,char, short, int, long, float, double, boolean。
面试题NO.31-NO.40
疑问:静态类型有什么特点?
答案:静态变量是和类绑定到一同的,而不是类的实例对象。
每一个实例对象都共享雷同一份静态变量。
也就是说,一个类的静态变量只要一份,不论它有多少个对象。
类变量或许说静态变量是经过static这个关键字来申明的。
类变量理论被用作常量。
静态变量理论经过类名字来启动访问。
当程序运转的时刻这个变量就会创立直到程序完结后才会被销毁。
类变量的作用域和实例变量是一样的。
它的初始值和成员变量也是一样的,当变量没被初始化的时刻依据它的数据类型,会有一个自动值。
相似的,静态方法是属于类的方法,而不是类对象,它的调用并不作用于类对象,也不须要创立任何的类实例。
静态方法自身就是final的,由于重写只会出当初类实例上,静态方法是和类绑定在一同的,不是对象。
父类的静态方法会被子类的静态方法屏蔽,只需原来方法没有申明为final。
非静态方法不能重写静态方法,也就是说,你不能在子类中把一个静态方法改成实例方法。
非静态变量在每一个对象实例上都有独自的一份值。
疑问:&操作符和&&操作符有什么区别?
答案:当一个&表白式在求值的时刻,两个操作数都会被求值,&&更像是一个操作符的快捷方式。
当一个&&表白式求值的时刻,先计算第一个操作数,假设它前往true才会计算第二个操作数。
假设第一个操作数取值为fale,第二个操作数就不会被求值。
疑问:Java是如何解决整型的溢出和下溢的?
答案:Java依据类型的大小,将计算结果中的对应低阶字节存储到对应的值外面。
疑问:public static void写成static public void会怎样?
答案:程序反常编译及运转。
疑问,申明变量和定义变量有什么不同?
答案:申明变量咱们只提供变量的类型和名字,并没有启动初始化。
定义包括申明和初始化两个阶段String s;只是变量申明,String s = new String(“bob”); 或许String s = “bob”;是变量定义。
面试题NO.41-NO.45
疑问:Java支持哪种参数传递类型?
答案:Java参数都是启动传值。
关于对象而言,传递的值是对象的援用,也就是说原始援用和参数援用的那个拷贝,都是指向同一个对象。
疑问:对象封装的准则是什么?
答案:封装是将数据及操作数据的代码绑定到一个独立的单元。
这样保证了数据的安保,防止外部代码的失误经常使用。
对象准许程序和数据启动封装,以缩小潜在的干预。
对封装的另一个了解是作为数据及代码的包全层,防止包全层外代码的轻易访问。
疑问:你怎样了解变量?
答案:变量是一块命名的内存区域,以便程序启动访问。
变量用来存储数据,随着程序的执行,存储的数据也或许跟着扭转。
疑问:数值优化是什么?
答案:数值优化是指数据从一个较小的数据类型转换成为一个更大的数据类型,以便启动整型或许浮点型运算。
在数值优化的环节中,byte,char,short值会被转化成int类型。
须要的时刻int类型也或许被优化成long。
long和float则有或许会被转换成double类型。
疑问:Java的类型转化是什么?
答案:从一个数据类型转换成另一个数据类型叫做类型转换。
Java有两种类型转换的方式,一个是显式的类型转换,一个是隐式的。
面试题NO.46-NO.50
疑问:main方法的参数外面,字符串数组的第一个参数是什么?
答案:数组是空的,没有任何元素。
不像C或许C++,第一个元素自动是程序名。
假设命令行没有提供任何参数的话,main方法中的String数组为空,但不是null。
疑问:怎样判别数组是null还是为空?
答案:输入的值,假设是0,说明数组为空。
假设是null的话,会抛出空指针意外。
疑问:程序中可以准许多个类同时领有都有main方法吗?
答案:可以。
当程序运转的时刻,咱们会指定运转的类名。
JVM只会在你指定的类中查找main方法。
因此多个类领有main方法并不存在命名抵触的疑问。
疑问:静态变量在什么时刻加载?编译期还是运转期?静态代码块加载的机遇呢?
答案:当类加载器将类加载到JVM中的时刻就会创立静态变量,这跟对象能否创立有关。
静态变量加载的时刻就会调配内存空间。
静态代码块的代码只会在类第一次性初始化的时刻执行一次性。
一个类可以有多个静态代码块,它并不是类的成员,也没有前往值,并且不能间接调用。
静态代码块不能蕴含this或许super,它们理论被用初始化静态变量。
疑问:一个类能领有多个main方法吗?
答案:可以,但只能有一个main方法领有以下签名:
否则程序将无法经过编译。
编译器会正告你main方法曾经存在。
面试题NO.51-NO.60
疑问:繁难的引见下JVM是如何上班的?
答案:JVM是一台形象的计算机,就像实在的计算机那样,它们会先将文件编译成文件(文件就是字节码文件),而后用它的解释器来加载字节码。
疑问:假设原地替换两个变量的值?
答案:先把两个值相加赋值给第一个变量,而后用失掉的结果减去第二个变量,赋值给第二个变量。
再用第一个变量减去第二个变量,同时赋值给第一个变量。
代码如下:
经常使用异或操作也可以替换。
第一个方法还或许会惹起溢出。
异或的方法如下: int a=5,b=10;a=a+b; b=a-b; a=a-b;
疑问:什么是数据的封装?
答案:数据封装的一种方式是在类中创立set和get方法来访问对象的数据变量。
普通来说变量是private的,而get和set方法是public的。
封装还可以用来在存储数据时启动数据验证,或许对数据启动计算,或许用作自省(比如在struts中经常使用javabean)。
把数据和配置封装到一个独立的结构中称为数据封装。
封装其实就是把数据和关联的操作方法封装到一个独立的单元中,这样经常使用关联的这些方法能力对数据启动访问操作。
封装提供的是数据安保性,它其实就是一种暗藏数据的方式。
疑问:什么是反射API?它是如何成功的?
答案:反射是指在运转时能检查一个类的形态及特色,并能进执行态治理的配置。
这些配置是经过一些内建类的反射API提供的,比如Class,Method,Field, Constructors等。
经常使用的例子:经常使用Java反射API的getName方法可以失掉到类名。
疑问:JVM自身会保养缓存吗,是不是在堆中启动对象调配,操作系统的堆还是JVM自己治理的堆?为什么?
答案:是的,JVM自身会治理缓存,它在堆中创立对象,而后在栈中援用这些对象。
面试题NO.61-NO.66
疑问:虚构内存是什么?
答案:虚构内存又叫加长内存,实践上并不存在实在的物理内存。
疑问:方法可以同时即是static又是synchronized的吗?
答案:可以。
假设这样做的话,JVM会失掉和这个对象关联的实例上的锁。
这样做等于:
疑问:String和StringTokenizer的区别是什么?
答案:StringTokenizer是一个用来宰割字符串的工具类。
疑问:transient变量有什么特点?
答案:transient变量不会启动序列化。
例如一个成功Serializable接口的类在序列化到ObjectStream的时刻,transient类型的变量不会被写入流中,同时,反序列化回来的时刻,对应变量的值为null。
疑问:哪些容器经常使用Border规划作为它们的自动规划?
答案:Window, Frame, Dialog。
疑问:怎样了解什么是同步?
答案:同步用来控制共享资源在多个线程间的访问,以保证同一期间内只要一个线程能访问到这个资源。
在非同步包全的多线程程序外面,一个线程正在修正一个共享变量的时刻,或许有另一个线程也在经常使用或许降级它的值。
同步防止了脏数据的发生。
以上回答转载自求职类群众号圈里求职,外面还有更多求职面试经,程序猿也要学起来~