前言:这几天看到了梁大发的一篇文章,了解到了很多关于面试方面的知识,详细参考:Java面试通过要点汇总,然后觉得自己对文章里面提到的知识点进行一个个人总结,也方便自己查漏补缺,共勉。
基本功:
1、面向对象的特征:
封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行封装隐藏,封装分成属性封装和方法封装。
继承:继承是对有着共同特性的多类事物,进行再抽象成一个类。这个类就是多类事物的父类,父类的意义在于抽取事物的共性。
多态:允许不同类的对象对同一消息做出响应,方法的重载、类的覆盖正体现了多态。
2、final, finally, finalize 的区别:
final:Java关键字,声明变量时变量的值不可变,声明方法时不能重写,声明类时不可继承。
finally:finally异常处理块,提供finally快来执行清除、解锁、返回等操作。
finalize:方法名,清理函数,与C++的析构函数类似,使用finalize()对GC删除对象前作清理工作。
3、int 和 Integer 有什么区别:
int是基本数据类型,直接存储数据值,默认为0;
Integer是int的包装类,必须实例化后才能使用,Integer实际是对象的引用,对象的引用存在栈里面,对象存在堆里面,执行new的Integer对象,默认值是null
4、 重载和重写的区别:
重载:重载发生在同一个类中,方法名相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同,发生在编译时
重写:重写发生在父子类中,方法名,参数列表必须相同,返回值小于等于父类,抛出异常小于等于父类,访问修饰符大于等于父类,如果父类方法访问修饰符为private则子类中不是重写。
5、抽象类和接口有什么区别:
语法层次:抽象类和接口分别给出了不同的语法定义
设计层次:抽象的层次不一样,抽象类是对类进行抽象,包括属性、行为,时自底向上抽象而来的;接口则是对行为进行抽象,是对类的局部抽象,是自顶向下设计出来的。
跨域不同:抽象类所体现的是一种继承关系,父类与子类之间存在“is-a”的关系,即本质上概念应该是相同的;接口则不要求接口的实现和接口的定义在概念上本质相同,仅是实现了接口定义的契约即可,体现的是“like-a”的关系。
其他:在抽象类中可以写非抽象的方法,避免在子类中重复书写,提高代码的复用性,这是抽象类的优势;接口中只能有抽象的方法,一个类只能继承一个直接父类,但可以实现多个接口。
6、说说反射的用途及实现:
反射机制:反射机制reflect可以在运行期间获取类的字段、方法、父类和接口等信息,对于任意一个对象,都能调用它的任意一个方法和属性;是一种动态获取的信息以及动态调用对象的方法的功能,即:把java的各种成分映射成相应的java类。
反射的应用:反射在Spring中应用很广,Ioc便是基于反射来实现的
7、 equals 与 == 的区别:
equals()和 == 操作用于对象的比较,检查两对象的相等性,主要区别在于equals是方法,==是操作符,由于Java不支持操作符重载,==的行为对于每个对象来说与equals是完全相同的,但equals可以基于业务规则的不同而重写,另外 == 常用于原生类型之间的比较,而equals仅用于对象之间的比较,重写equals方法时需要重写hashcode方法,以保证hashcode的设计规则。
8、说说自定义注解的场景及实现
自定义注解类编规则:
- Annotation型定义为@interface, 所有的Annotation会自动继承java.lang.Annotation这一接口,并且不能再去继承别的类或是接口.
- 参数成员只能用public或默认(default)这两个访问权修饰
- 参数成员只能用基本类型byte,short,char,int,long,float,double,boolean八种基本数据类型和String、Enum、Class、annotations等数据类型,以及这一些类型的数组.
- 要获取类方法和字段的注解信息,必须通过Java的反射技术来获取 Annotation对象,因为你除此之外没有别的获取注解对象的方法
9、HTTP 请求的 GET 与 POST 方式的区别
- 提交方式:GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头<request-line>中,POST提交:把提交的数据放置在是HTTP包的包体<request-body>中,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变
- 传输数据的大小:GET:特定浏览器和服务器对URL长度有限制,POST:由于不是通过URL传值,理论上数据不受限。但实际各个WEB服务器会规定对post提交数据大小进行限制,Apache、IIS6都有各自的配置
- 安全性:POST的安全性比GET的高,通过GET提交数据,用户名和密码将明文出现在URL上
10、session 与 cookie 区别
session:session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中。
cookie:cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现session的一种方式。
11、session 分布式处理(尚未解决)
12、JDBC 流程:
加载驱动程序--->建立连接--->创建语句--->执行语句--->处理ResultSet
13、MVC 设计思想
Model(模型): 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。
View(视图):视图代表模型包含的数据的可视化。
Controller(控制器):控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。
未完待续
参考资料:
1、JavaQ:BAT面试总结
2、梁桂钊:Java面试要点
网友评论