武汉北大青鸟中南软件学院
400-027-0822

你早晚会遇到的java面试题以及答案

2018-04-02供稿中心: 北大青鸟武汉中南软件学院

相信很多青鸟的学员出去面试,会面临解答面试题这一关,这是检验一个程序员能力最简单有效的方法,现在北大青鸟的老师为各位准备寻找java相关工作的朋友们整理出了几道“经典”题目,赶紧收藏一下,因为你迟早会用到!

相信很多北大青鸟的学员出去面试,会面临解答面试题这一关,这是检验一个程序员能力最简单有效的方法,现在北大青鸟的老师为各位准备寻找java相关工作的朋友们整理出了几道“经典”题目,赶紧收藏一下,因为你迟早会用到!

 

1、说说抽象类和接口的区别

抽象类是一个不能被实例化的类,因为它其中存在抽象方法,但它的其它行为和一个普通类没什么不同。

接口是java为了弥补不能多继承提供的概念,接口之间支持多继承,接口中只允许存在公有静态常量或公有的抽象方法,一个类可实现多个接口,从而扩展不同的功能。

 

2、面向对象的三大特性是什么,详细说明。

继承,其目的是提供代码的可重用性,子类必须实现父类的所有行为,同时,它也可以有自己的方法。比如所有的车都能行驶,小轿车和自行车的行驶方式就不相同。

 

 

封装,其目的是实现高内聚,低耦合,一个类一般不能将自己的属性公开,而只是公开操作属性的方法,这样能提高代码的安全性,同时,能增强这个类的可重用功能。

 

多态,其目的是为使代码的修改工作变得简单,一个类只需调用其他类的方法而不必管方法的具体实现,比如一个登陆系统,只需调用父类的登陆方法,不需要知道是网络登陆,还是本地登陆,如果后面想添加更多的登陆方法,只需添加新的子类即可。

 

3、说说java的进程和线程的区别

进程:是指一个程序的集合,包括程序的所有运行资源。

线程:是程序运行的最小单元,进程的创建和切换涉及到大量资源的保存和读取,而线程是轻量的,它的创建和切换所需资源比进程要小得多。

 

一个简单的类比就是进程相当于一个工厂,它拥有一些设备、房间,但它本身不能运行,只有工人进入房间操作这些设备才行,工人就相当于线程了。
线程只持有少量的运行必要资源,但一个进程的所有线程都能共享进程的内存。
java中,进程对应的类是Progress,可使用ProgressBuilder创建新进程并获得其引用。我们平常对Progress接触的不多,
而线程对应的类是Thread,也是我们开发中用的最多的类。
java的线程和进程本质上还是在调用本地操作系统的API方法创建本地线程和进程,只不过java对其做了封装,使其有了平台无关性。

 

4java中的覆盖和重载有什么区别?

方法覆盖(Orverriding) :是指一个类继承它的父类或者实现一个接口时,对它们的方法进行重新定义。

 

方法重载: 针对的是类中方法,允许类里面的方法接收不同的参数,且可以返回不同的数据。

 

5、什么是值传递,什么是引用传递?

值传递只传递一个对象的拷贝,本身的数据不会发生改变,一般java中基本参数类型都是值传递。

 

引用传递,将对象的引用传递过去,改变这个引用也会改变对象本身的数据。

 

java中,区分这两种传递是没必要的,这是c语言的一种区分方式,java中一律使用的是值传递,包括一个对象的引用,也是复制了这个引用和其指向的地址信息,你在方法中改变这个引用的指向,并不会改变原来的引用的指向,你改变这个引用指向的对象数据,因为原来的引用指向的也是这个对象,所以它们都会被同步改变。

 

6hashCode()equals()的区别?

equals() 用于判断两个对象的数据、内容是否一致。

 

hashCode()用于生成一个哈希码,便于HashMap使用,系统默认实现是计算对象的内存地址,转换成一个整数。

 

它们之间没什么联系,两个相等的对象生成的HASH码应该是相等,但是HASH码相等并不能保证两个对象相等。关键在于你对相等的定义(也就是重写equals函数),与此同时,也应该重写hashCode函数保证上述关系。

 

今天,老师就分享这么多,如果你对java或者编程技术感兴趣,可以向北大青鸟的在线老师了解具体的课程事宜。在北大青鸟学技术,入学即与学员签订推荐就业的协议,让你学的安心,成就你的美好生活!

关于我们
首页
公司简介
课程专业
师资力量
高薪就业
青鸟课程
ACCP
学士后Java
基础教育
UI设计
回到首页