整理:《2018年最全Java面试通关秘籍第一套!》

匿名 (未验证) 提交于 2019-12-02 21:53:52

最近打算找新工作,刷一刷面试题,就发现这个面试题系列挺不错的,里面有很多自己不清楚,不懂的地方。

题目地址:<<2018年最全Java面试通关秘籍第一套!>>

一、基础篇

1.1、Java基础

  • 面向对象的特征:继承、封装和多态

封装:将对象所拥有的属性隐藏起来,然后提供对外访问的方法。

继承:子类继承父类,此时子类能够拥有父类所拥有的属性和方法,关键字extends;

多态:首先是多态存在的必要条件:①存在父子关系;②子类重写父类的方法;③父类对象指向子类。

注:多态后的对象不能使用子的方法与属性,必须要向下转型之后才能使用

  • final, finally, finalize 的区别

final一般是用来修饰类变量方法,用final修饰过后的类不可以被继承,修饰过后的变量一般叫做常量(不可再重新赋值),方法不可以被重写。

finally一般是用在try catch捕捉到异常之后,进入finally,对异常进行处理或者进行其他操作。

finalize没有用过,是java中的一个方法,finalize()方法是在垃圾收集器删除对象之前对这个对象的调用。

  • Exception、Error、运行时异常与一般异常有何异同

Exception:表示可恢复的例外,这是可捕捉到的。

Error:无法预期的严重错误,导致JVM虚拟机无法继续执行,几乎无法恢复捕捉的.

运行时异常:一般有空指针、数组越界等,是可以在代码中避免的。

还有就是编译时异常,编译器强制要求添加异常捕获。

  • 请写出5种常见到的runtime exception

1.空指针;2数组越界;3.字符下标溢出;4.强制类型转换时;5.数字转换异常。
  • int 和 Integer 有什么区别,Integer的值缓存范围

int是基本数据类型,而Integer则是一个对象。Integer是int的包装类,从Java5开始引入了自动装箱和自动拆箱,使得二者可以相互转换。


  • 包装类,装箱和拆箱

八种基本数据类型每个都对应一个包装类:int→Inteher,long→Long,short→Short,byte→Byte,

floar→Float,double→Double,char→Char,boolean→Boolean。

装箱是指将基础数据类型转换为包装类,拆箱则是将包装类转换为基础数据类型。

自动装箱、拆箱是在讲java文件编译成class文件时自动完成的操作。

  • String、StringBuilder、StringBuffer

String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象String,而StringBuffer每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用.StringBuilder则用在字符串缓冲区被单个线程使用的时候(这种情况很普遍),它与StringBuffer方法大致相同,但要比StringBuffer速度要快一点。

  • 重载和重写的区别

重写存在于有父子关系的类中,重写方法名一致,参数个数和参数类型及返回值类型必须一致。重写的方法的修饰符要大于原方法修饰符,抛出异常类小于原方法。

重载只需要不同参数列表(类型、个数、顺序不一致)与返回值无关,但是不可以只更改返回值类型,而不改变参数列表。

  • 抽象类和接口有什么区别

在抽象类中可以写非抽象的方法,从而避免在子类中重复书写他们,这样可以提高代码的复用性,这是抽象类的优势;接口中只能有抽象的方法。
一个类只能继承一个直接父类,这个父类可以是具体的类也可是抽象类;但是一个类可以实现多个接口。

  • 说说反射的用途及实现

Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能调用他的任意方法和属性。具体的使用例如struts框架中的当view层发起请求时被struts默认拦截器StrutsPrepareAndExecuteFilter拦截时,会动态地创建已在xml文件里配置好的Action实例
  • 说说自定义注解的场景及实现

传送门→https://www.cnblogs.com/acm-bingzi/p/javaAnnotation.html

  • HTTP请求的GET与POST方式的区别:参考

get请求是以键值对形势传送数据,多个参数用&分割,数据大小也有其限制(64k?)

post请求一般用来提交表单,数据一般放在请求体里面。

  • Session与Cookie区别

cookie数据放在客户端,session数据放在本地。

cookie的安全性问题,session则session过多时出现服务器性能问题。

详细讲解

  • 列出自己常用的JDK包

java.lang;java.util;java.io;java.sql;java.math;java.text
  • MVC设计思想

MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层――模型层、视图层、控制层。

视图(View)代表用户交互界面

模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数据 保存(持续化)。

控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。

  • equals与==的区别

==实质上是比较两个对象的对峙是否相同,即是否只指向相同对象

equals用来比较两个对象的内容是否相同。

  • hashCode和equals方法的区别与联系

hashCode基本上没有用过,找到一篇不错的博客,传送门
  • 什么是Java序列化和反序列化,如何实现Java序列化?或者请解释Serializable 接口的作用

序列化就是将java对象转换字节序列的过程。

反序列化就是将字节序列转换为java对象的过程。

实现Java序列化:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

  • Object里边?

Object类中常见的方法,toString() , hashCode(),equals(),wait(),notify(),finalize()

简单说:因为synchronized中的这把锁可以是任意对象,所以任意对象都可以调用wait()和notify();所以wait和notify属于Object。

专业说:因为这些方法在操作同步线程时,都必须要标识它们操作线程的锁,只有同一个锁上的被等待线程,可以被同一个锁上的notify唤醒,不可以对不同锁中的线程进行唤醒。

也就是说,等待和唤醒必须是同一个锁。而锁可以是任意对象,所以可以被任意对象调用的方法是定义在object类中。
  • Java的平台无关性如何体现出来的

当使用java编译器编译java程序的时候,生成的是与平台无关的字节码,这些字节码不面向任何具体的平台,只面向JVM(java虚拟机).不同平台上的JVM是不同的,但他们都提供了相同的接口.因此只要为不同平台实现了相应的JVM,编译后的java字节码就可以在该平台上运行了
  • JDK和JRE的区别

JDK是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的

JRE则是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。

  • Java 8有哪些新特性

Java 8十大新特性


点击打开链接

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!