JAVA面试题(_华为)(答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件开发应试人员考试试题(Java)
姓名:___________ 电话:___________
以下信息有工作经验人员如实填写,应届毕业不填(时间从毕业参加工作算起)
从事Java开发时间____月熟悉JavaScrip时间____月
熟悉EXT开发时间____月熟悉PDM开发时间____月
熟悉的数据库及时间(如SQLServer 3个月,可多填)___________________
一、JAVA基础
1、简述你所知道的JAVA修饰符及各自的使用机制(public、abstract、final、synchronized、super…)
public :允许所有客户访问
protected:只能在本包内被该类的子类所使用
private:只允许在本类内使用
abstract:没有提供实现,需要子类提供
static:与整个类相关,与单个对象无关
final:你只能定义一个实体一次,以后不能改变它或继承它。一个final修饰的类不能被子类化,一个final 修饰的方法不能被重写,一个final修饰的变量不能改变其初始值
synchronized:方法获得对对象监控的访问权;如果该方法是static类型的,获得是对类本身的访问权。
super:构造器和方法,都用关键字super指向超类,但是用的方法不一样。方法用这个关键字去执行被重载的超类中的方法。
2. String、StringBuffer与StringBuilder之间区别别简述各自的执行效率
区别:String 类型和StringBuffer 类型的主要性能区别其实在于String 是不可变的对象, 因此在每次对
String 类型进行改变的时候其实都等同于生成了一个新的String 对象,然后将指针指向新的String 对象,所以经常改变内容的字符串最好不要用String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后,JVM 的GC 就会开始工作,那速度是一定会相当慢的,
执行速度:三者在执行速度方面的比较:StringBuilder > StringBuffer > String
使用场景:1.如果要操作少量的数据用= String
2.单线程操作字符串缓冲区下操作大量数据= StringBuilder
3.多线程操作字符串缓冲区下操作大量数据= StringBuffer
2、静态变量和实例变量的区别能在静态方法中调用非静态变量吗
静态变量属于类,该类不生产对象,通过类名就可以调用静态变量。实例变量属于该类的对象,必须产生该类对象,才能调用实例变量
静态方法及变量属于整个类,数据将会被存储在公共区域,非静态方法及变量属于对象
静态方法中无法调用实例变量,而实例方法却可以调用静态变量
2、继承和接口是什么以及他们的区别
1 接口定义一个类需要实现的方法属性索引事件和可能的参数返回值类型,具体的实现交由相应的类或结构,从而实现多态;而继承用于在一个现有父类基础上的功能扩展,把几个类中相同的成员提取出来放在一个父类中,在子类中添加独特的方法即继承扩展
2 接口能够实现多接口继承,而继承只能实现单继承
3 继承能够获得父类方法的实现,而接口只能获得方法的定义,所以必须获得所有的方法
4 在继承中为父类添加方法不影响子类的继承,但在接口中为父类添加一个方法定义必须在子类中添加此方法的实现
3、HashMap和Hashtable的区别
1,Hashtable是基于陈旧的Dictionary类的,HashMap是Map接口的一个实现。
2,Hashtable的方法是同步的,而HashMap的方法不是
3,只有HashMap可以让你将空值作为一个表的条目的key或value
4、抽象类(abstract class)和接口(interface)有什么区别
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的
类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口
5、重载(Overload)和重写(Override)的区别。Overloaded的方法是否可以改变返回值的类型
Overload是重载,是有相同的方法名,但参数类型或个数彼此不同
Override是重写,是在子类与父类中,子类中的方法的方法名,参数个数、类型都与父类中的完全一样,在子类中覆盖掉了父类的改方法。
6、你所知道的集合类都有哪几类主要区别有哪些并简单描述
集合类型主要有3种:set(集)、list(列表)和map(映射)
集Set
它的对象不按特定方式排序,只是简单的把对象加入集合中
对集中成员的访问和操作是通过集中对象的引用进行的,所以集中不能有重复对象。
列表List
List接口与其实现类是容量可变的列表,可以按照索引访问集合中的元素,是有序的集合
列表在数据结构中分别表现为:数组和向量、链表、堆栈、队列。常用的有ArrayList vector
映射Map
映射中每个项都是成对的,Map是把键对象和值对象进行关联的容器。
映射中存储的每个对象都有一个相关的关键字(Key)对象,关键字决定了对象在映射中的存储位置,关键字应该是唯一的,常用的有HashMap,HashTable