2017java面试题及参考答案
2017java面试题及参考答案
对面试题的回答情况会直接影响java个人求职者的求职成效。下面是学习啦小编为大家带来的2017java面试题及参考答案,相信对你会有帮助的。
2017java面试题及答案
1. 面向对象编程的三大特性是什么,请简要阐述
(1).继承:
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继 承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增 加新的方法使之更适合特殊的需要。
(2).封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
(3).多态性:
多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
2. String 和StringBuffer的区别
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据这个String类提供了数值不可改变字符串而这个StringBuffer类提供的字符串进行修改当你知道字符数据要改变的时候你就可以使用StringBuffer典型地,你可以使用StringBuffers来动态构造字符数据
3. 说出ArrayList,Vector, LinkedList的存储性能和特性
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized思路方法(线程安全) ,通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项前后项即可,所以插入速度较快
4. Collection 和 Collections的区别
Collection是集合类的上级接口,继承与他的接口主要有Set 和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
5. HashMap和Hashtable的区别
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于HashtableJAVA中文站社区门户oC)| g| ax ,HashMap允许将Null作为一个entryde key 或者value,而Hashtable不允许 HashMap把Hashtable的contains思路方法去掉了,改成containsvalue和containsKey因为contains思路方法容易让人引起误解Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的区别是,Hashtable的思路方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的思路方法实现同步,而HashMap 就必须为的提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
6. final, finally, finalize的区别
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
7. Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
重载(Overload):
(1)方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。
(2)Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。
(3)重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。
重写(Override):
(1) 父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。
(2) 若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。
(3)子类函数的访问修饰权限不能少于父类的
重写方法的规则:
1.参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.
2.返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载.
3.访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常.例如,
父类的一个方法申明了一个检查异常IOException,在重写这个方法是就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常.
而重载的规则:
1.必须具有不同的参数列表;
2.可以有不同的返回类型,只要参数列表不同就可以了;
3.可以有不同的访问修饰符;
4.可以抛出不同的异常;
重写和重载的区别在于:
重写多态性起作用,对调用被重载过的方法可以大大减少代码的输入量,同一个方法名只要往里面传递不同的参数就可以拥有不同的功能或返回值.
用好重写和重载可以设计一个结构清晰而简洁的类,可以说重写和重载在编写代码过程中的作用非同一般.
Overloaded的方法是可以改变返回值的类型。
8. error和exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
9. abstract class和interface有什么区别?
1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。
2.在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。
3.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。
4.实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。
5.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
6.抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。
7.接口中的方法默认都是 public,abstract 类型的。
10. List, Set, Map是否继承自Collection接口
List,Set是继承自Collection,Map不是。
11. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
swtich中只能用byte short int char
12. char型变量中能不能存贮一个中文汉字?为什么?
能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的。
13. 多线程有几种实现方法,都是什么?哪一种方式比较优秀?同步有几种实现方法,都是什么?
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
实现Runnable接口比较好,因为实现类可以实现多个接口,而只能继承一个类。
同步的实现方面有两种,分别是synchronized,wait与notify
14. java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
字节流,字符流。字节流继承与inputStream/outputStream,字符流继承于inputStreamReader/outputSteamWriter。
在java的求职面试中,回答面试题跟面试自我介绍起着同样重要的作用,下面是学习啦小编为大家精心推荐的java面试自我介绍范文,希望能够对您有所帮助。
2017java面试自我介绍范文(一)
我是20XX年毕业于廊坊计算机科学技术专业的。
大学四年时间,我主要学习的是关于C语言、C++、JAVA等编程书籍以及软件,熟悉JAVA的Struts框架。曾经在某电子科技公司完成了手机刷卡器的开发工作,主要完成了注册、应用等一系列流程。
随着触摸屏手机的普及,苹果、三星、HTC手机越来越流行。手机应用开发越来越手欢迎,很多手机游戏、应用造就了一大批软件开发公司的出现。至于为什么读这个专业呢,就是因为这些手机游戏与应用吸引了我,所以大学四年,我一直钻研手机的软件开发,最自豪的是,曾经开发过一款手机游戏,一个月的下载量达到几十万。而正是如此,因为自己所做的东西,受到了别人的肯定,一直鼓励着喔,不断开发新的吸引人的软件。
2017java面试自我介绍范文(二)
您好!四年的大学生活使我学到了许多东西,我把大部分时间和精力投在学习上,并取得了优异的成绩。在学习方面,我始终认为作为一名学生,学习是最重要的,在大学期间我对学习一直很重视。我态度认真、刻苦,努力钻研,具备了扎实的专业基础知识:熟悉各种应用软件的使用及asp、vb和c语言的程序编写,对教育技术的基本理论和应用相关方面具有较深的理解,也有自己的一定见解。在四年的学习过程中我也掌握了较为有效的学习方法,提高了自身的学习能力,也为以后的继续学习打下了良好的基础。
在工作能力方面。学生工作在大学生活中是一项重要内容,在能力锻炼方面,我积极参加学生工作和社会实践活动,并取得了一定的成绩。我曾担任班长,在工作过程中我认真负责,积极工作,极大地锻炼了我的工作能力和交际能力,积累了许多宝贵的实践经验。获得 “学生工作积极分子”、“优秀学生干部”称号。
思想政治素质方面。积极提高自身思想修养更是大学阶段我们需要去努力做的。在两年多的党内生活和实践中,让我的思想觉悟有了较大的提高,平时关心时事,注意学习党务知识,在实践中不断端正自己的入党动机,以党员的标准来严格要求自己。在这个过程中我更加体会到作为一名党员的责任,也发现了自身的一些不足,每次党内的会议、讨论、生活,都是我的一个成长过程,期间提出的一些问题都能引起我的深入思考,在思考的过程中不断提高自身的思想。
此外,我还积极参加校内的各种活动以及校外的各种社会活动,向实际困难挑战,让我在挫折中成长,借以去磨练自己。
2017java面试自我介绍范文(三)
您好!
我是一名西南科技大学计算机科学院20XX级的一名学生,在大学3年里,我已经学会了一定的计算机软硬件的一些知识,参加了西南科技大学学院网站设计,对网络设计管理维护都很熟悉,也能解决一些硬件问题。作为一名计算机专业的大学生,我热爱我的专业,期待着实际的工作考验。
作为一名初出校门走向社会的学生,我认为我最缺乏的是丰富的社会实践和工作经验,这或许让你犹豫不决,但我有着青年人的热情和赤诚,有着兢兢业业的工作态度和集体合作精神。“我以心去开取心,我以火去点燃火,我以高尚的灵魂去铸造灵魂的高尚,我以诚挚的情感去培养感情的诚挚。”我热爱贵公司所从事的事业,殷切地期望能够在您的领导下,为这一光荣的事业添砖加瓦,并且在实践中不断学习、进步。
真心希望贵公司能给我一个机会,我愿与贵公司同甘共苦,共创未来!"长风破浪会有时,直挂云帆济沧海"在机遇与挑战并存的新世纪,我有信心凭自己的能力为贵公司的事业添一份力量,希望贵公司可以成为那个可以实现自我价值的大舞台,也希望为我自己赢得一片天空。
看过“2017java面试题及参考答案”的人还看了:
5.java面试题