无论是工作多年的高级开发人员还是刚入职场的新人,在换工作面试的过程中,Java基础是必不可少的面试题之一。能不能顺利通过面试,拿到自己理想的offer,在准备面试的过程中,Java基础也是很关键的。对于工作多年的开发人员来说,Java基础往往是会被大家所忽略的,但在面试的过程中,确是必不可少的问题。在这篇文章里就来为大家总结一下经常会被问到的Java基础题。
helloworld
1.Java面向对象的三大特征
答:封装,继承,多态
评论:对于刚入职场的新人来说,这个回答就可以了,但对于工作多年的高级开发人员来说,这个回答是远远不够的。你需要对这大三特征有比较深刻的认识才可以。封装表面上看就把描述一个对象的属性和行为封装成一个类,把业务逻辑封装成方法,封装的另一层含义在于通过修饰符控制类的访问属性(公有,私有等)。继承主要是实现了代码的复用,所有子类公用的行为和属性可以抽取为一个父类,所有子类继承了父类的属性和行为,java中继承是单一性的。多态:程序中定义的引用类型变量所指向的具体类型和调用的具体方法在程序编译阶段无法确定,而是在运行期才能确定该引用类型变量指向具体哪个对象而调用在哪个类中声明的方法。多态的表现形式有强制类型转换,向上构造等。多态可分为行为多态和对象多态。
2.Java的基本数据类型
答:基本数据类型有,byte,short,int,long,float,double,char,boolean这8种。
评论:在实际面试过程中一般不会这么问你,一般会拿一个具体的问题考你。比如让你设计一个和订单金额有关的数据结构,或者问你数据类型里的隐式转换(int-Integer)相关的,这些都是考察基本功。
3.Java的修饰符
答:private,protected,public,default
评论:这里知道这几种修饰符的作用范围之外,还有一些比较深层次的也要注意一下。有一次我被问到如何去访问一个private修饰的方法。这里有一种方法就是通过反射可以实现对private的访问。
4.Java的运算符
答:Java是一门强类型的语言,运算符基本可以为分6类:算数运算符,赋值运算符,关系运算符,逻辑运算符,位运算符,条件运算符。
评论:运算符的考察,一般会给你一个实际的题让你算结果,通常考基本功的话会问你一些位运算,或者和运算符优先级相关的题。
5.Java的String,StringBuffer,StringBuilder类用法与区别?
答:String类适用于少量字符串的操作,StringBuilder适用于单线程下在字符缓冲区进行大量操作的情况,StringBuffer适用多线程下在字符缓冲区进行大量操作的情况。
评论:考察java字符串的基础通常会围绕这3个类展开。一般回答的时候要围绕运算速度和线程安全这两个方面展开。
6.两个对象的hashCode()相同,则equals()也一定为true吗?
答:不一定相同。正常情况下,因为equals()方法比较的就是对象在内存中的值,如果值相同,那么Hashcode值也应该相同。但是如果不重写hashcode方法,就会出现不相等的情况。
7.Java中的Override与Overload的区别?
答:overload在相同的类范围内执行,override发生在具有继承关系的两个类。
评论:要回答的完美,还需要从目的,范围,参数,多态性,返回类型这几个方面回答。
8.final在Java中的作用?
答:在java中有4种用法,1.修饰数据,2.修饰方法参数,3.修饰方法,4修饰类
评论:1.修饰数据,包括成员变量,局部变量,则变量只能被赋值一次。2.修饰方法参数,表示变量在生命周期只能被赋值 一次。3.修饰方法,表示该方法不能被重写。4.修饰类表示该类不能被继承
9.如何将字符串反转?
答:有很多种,如通过char数组,StringBuffer的reverse等
10.String类的常用方法有哪些?
答:常用方法,new String,length,charAt,subString,compareTo,compareToIgnore,equals,equalsIgnoreCase,concat,indexOf,replace,replaceAll,trim,startWith等
11.Object类有哪些常用的方法?
答:这个类是所有java对象的父类,常用方法toString,equals,hashCode
12.抽象类必须要有抽象方法吗?
答:可以没有抽象方法,但抽象方法一定在抽象类中。
13.抽象类与接口的区别?
答:抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这里主说一下用法:如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类。如果基本功能在不断改变,那么也使用抽象类。如果你想实现多重继承,那么你必须使用接口。
14.抽象类可以用final修饰吗?
答:不可以,final修饰的类的是不可以被继承的
15.String类为什么是final类型的?
答:可以从这3方面回答,1.为了实现字符串池,2.为了线程安全,3.为了实现String可以创建HashCode不可变性。
评论:这题主要从Final修饰符的理解去回答即可。
希望对大家有所帮助