做有温度的教育!
全国统一咨询热线:400-803-9399
北京
校区
新闻资讯> 求职攻略> JAVA常见的面试问题!

JAVA常见的面试问题!

时间:2018-09-19
浏览:5771
发布:甲骨文华育兴业
赞:469

  金九银十招聘季,从甲骨文华育兴业走出的学员们也面临了招聘的热潮,在面试JAVA的过程中哪些是我们经常遇到的面试题呢!小编在这里整理了一些问题和答案,抓进来看看吧!

1.JAVA的基本数据类型有哪些?

  答:嗯,这个问题问得很基础,JAVA的基本数据类型分为4类8种,就是整形 byte、short、int、long。浮点型 float 跟double,字符型 char,跟布尔型 true和 false。

  追问:那 int 占几个字节?

  答:嗯,整形从低到高分别占1,2,4,8个字节,int 的话就是占4个字节。一个字节8位,就是占32位嘛。然后最大值就是2的32次方,好像是21亿多来着。


  2.说说 String 和 StringBuffer的区别。

  答:嗯,String和StringBuffer都能对字符串进行操作,最主要区别就是String类的对象是不可变的,而StringBuffer类的对象是可变的。如果一个字符串改变的话就用StringBuffer,不然用String的话会生成很多新的String对象,浪费内存。

  追问:那StringBuffer 和 StringBuilder的区别呢?

  答:嗯,这两个类的对象都可以改变。区别是在执行速度方面,StringBuilder 大于StringBuffer,但是在线程安全方面,StringBuilder是线程非安全的,StringBuffer是线程安全的。在多线程时,JVM可以保证StringBuffer可以正确操作。但是大多数时候我们都是用的单线程,所以大多数都是选择用速度较快的StringBuilder。

  也就是说少量数据就用String,因为比较方便。 单线程下操作大量数据用StringBuilder,因为速度较快。 多线程下操作大量数据用StringBuffer,因为能搞保证正确性。


  3.面向对象的特征有哪些?

  答:面向对象主要指的是 封装、多态、继承。

  封装就是把对象的属性和行为封装在一个模块中,代码上就是封装在一个类中,然后对象的属性用变量定义,行为用方法定义,将属性的访问类型设为私有private的,然后提供一个共有的 get 和 set 方法,然后只有本类的对象才能够对属性进行赋值。封装可以提高代码的安全性。

  多态,就是多种状态嘛。 主要的形式就是左边是父类变量,然后右边实例化一个子类,就是new 一个子类。 然后这个父类变量就有了子类的方法。

  继承,是java中类与类之间的一种关联方式。通过extends关键字就可以实现一个类继承另一个类,比如A extends B,就是A继承B,A称为子类,B称为父类。子类可以对父类的属性和方法进行调用或重新定义。并且可以新增其他的属性或方法。这样可以提供软件的可重用性和可扩展性。


  4.常用的集合类有哪些?

  答:嗯,常用的集合主要是三个,List、Set 和Map。List 的子类又主要是用 ArrayList 和LinkedList,Set 的子类是 hashSet 和 TreeSet,Map 的子类是HashMap 和 HashTable。主要区别是 List 集合能重复,Set 集合不能重复,重复的话会自动覆盖,Map集合的键不能重复,键重复的话值就被覆盖。 对于List 的子类 和ArrayList 和LinkedList,ArrayList 是查询数据快而插入数据慢,LinkedList是查询数据慢而插入数据快。 Set的子类HashSet 用得比较多,TreeSet 的话可以对对象进行排序,但是要实现一个Comparable 接口和 重写里面的 compareTo方法,麻烦一点。 至于HashTable和HashMap的话,就是HashTable是线程安全的,HashMap是线程不安全的,但是HashMap速度比较快。一般单线程下都是用的HashMap。 我理解的线程安全和速度的关系有点像生活中的‘载客摩托车’ 和 ‘公车’, 有时候赶时间去地铁站,公车的话虽然安全,但是速度有点慢,要多时间,这时候我就选择‘载客摩托车’,因为他好像红灯绿灯都能走,很快,但是不安全。 就是线程安全与执行速度要视情况而定。单线程就是路上车少的时候摩托车挺快也挺安全的,但是多线程就是多车的时候,选择公交就行,虽然慢一点,还是安全重要。


  5.抽象类和接口的区别。

  答:首先,抽象类和接口都不完整,就是都不能被实例化,他们只有被子类继续或者实现才有意义。

  区别是:

  抽象类可以有构造方法,接口没有构造方法。抽象类除了能有抽象方法外,其他的跟普通的类一样。

  抽象类中有普通变量和静态变量,接口中只有public static final 修饰的常量。

  抽象类中可以有普通方法,抽象方法有没有都行,接口中没有普通方法,只有抽象方法。

  抽象类中的抽象方法的访问类型修饰符可以是public 或 protected 的,接口中的抽象方法只能是默认的public abstract ,而且接口中public abstract 还可以省略。

  抽象类只能单继承,接口可以多继承。


  6.final, finally,finalize的区别。

  答: final 可以修饰变量,方法和类,修饰的变量值不可以改变,成为常量,修饰的方法不可以被,修饰的类不能被继承。

  finally是异常处理语句结构的一部分,放在try-catch的后面,表示总是执行。里面一般放的是关闭文件、关闭流、关闭系统之类的代码。

  finalize是Object类的一个方法。是GC垃圾回收运行机制中的一部分。在垃圾回收的时候会调用被回收对象的这个finalize()方法。可以重写这个方法使垃圾回收时也回收其他资源,例如关闭文件等。这样就能更有效地利用好有限的资源,节省空间。还有就是因为垃圾回收是不定时的,所以JVM不保证这个finalize方法总被调用。


  7.如何实现多线程。

  答:线程的实现由两种方式,第一种是继承Thread类,然后重写run方法;第二种是实现runnable接口,然后实现其runnable接口。

  追问:怎么启动?

  答:是调用线程对象的 start()方法

  追问:怎么停止?

  答:1.正常情况下等run方法跑完就停止了,如果run方法里面有while循环的话,一般是通过一个布尔型条件来控制。

  2.用stop()方法来停止。但是这样很危险。可能会产生不可预料的后果。

  3.用interrupt 方法来停止。

  


  8.请求的GET与POST方式的区别。

get是不加密传递,参数传递过程中会被直接看见,POST是加密传递,相对来说安全性更好!


  9.转发和重定向的区别。

  转发在服务器端完成的;重定向是在客户端完成的

  转发的速度快;重定向速度慢

  转发的是同一次请求;重定向是两次不同请求

  转发不会执行转发后的代码;重定向会执行重定向之后的代码

  转发地址栏没有变化;重定向地址栏有变化

  转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成


  10.说一下JSP的内置对象。

  JSP中一共预先定义了9个这样的对象,分别为:request、response、session、application、out、pagecontext、config、page、exception


  11.说一说Servlet的生命周期

  Servlet 加载—>实例化—>服务—>销毁


人生从业之路的第一步,从甲骨文华育兴业开始,

背后付出的辛苦与努力只有自己知道,而这也只是职业生涯的开始。

勤恳努力的人终会得到最好的回报,有些努力需要时间来回答

你吃的苦终会铺成你想要的路!

甲骨文华育兴业,为你的IT之路开启梦想之门!


【版权与免责声明】如发现内容存在版权问题,烦请提供相关信息联系我们,我们将及时沟通与处理。本站内容除非来源注明甲骨文华育兴业,否则均为网友转载,涉及言论、版权与本站无关。

【AI大数据】2019年AI数据5大趋势 ps使用 大数据 冲刺Java架构师年薪50W

友情链接: 甲骨文华育兴业太原校区 甲骨文华育兴业北京校区 甲骨文华育兴业哈尔滨校区 甲骨文华育兴业长春校区 魔据教育

Copyright ©2016-2019. All Rights Reserved. 京ICP备17018991号-4

网站地图