- 面向对象的基本特征
- 封装:就是将客观事物封装成抽象的类,并且类和方法可以让可信的类和方法操作,对不可信的类和方法进行隐藏;
- 继承:使用现有类的功能,无需重新编写代码基于现有类可以进行拓展的;
- 多态:对一个实例的相同方法在不同情形下有不同的表现方法。
- final, finally, finalize 的区别
- final:final用于修饰类,成员变量和成员方法。用final修饰的类不能被继承(String,StringBuffer),其中所有的方法都不能被重写,所以不能使用final和abstract修饰同一个类,因为abstract类就是被子类继承并实现的。final修饰的方法不能被重写,但是子类可以调用父类中被final修饰的方法。final修饰的成员变量是不可变的,如果修饰的成员变量是基本类型,被初始化以后就不可以被改变。如果修饰的是引用类型,那么它只能指向初始化时指向的那个对象,不能再指向别的对象,但是对象当中的内容是允许改变的。
- finally: Finally通常和try catch搭配使用,保证不管有没有发生异常,资源都能够被释放(释放连接、关闭IO流)。
- Finalize是object类中的一个方法,子类可以重写finalize()方法实现对资源的回收。
- int 和 Integer 有什么区别
- 无论如何,Integer与new Integer不会相等。不会经历拆箱过程,new出来的对象存放在堆,而非new的Integer常量则在常量池(在方法区),他们的内存地址不一样,所以为false。
- 两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false。因为java在编译Integer i2 = 128的时候,被翻译成:Integer i2 = Integer.valueOf(128);而valueOf()函数会对-128到127之间的数进行缓存。
- 两个都是new出来的,都为false。还是内存地址不一样。
- int和Integer(无论new否)比,都为true,因为会把Integer自动拆箱为int再去比。
- 重载和重写的区别
- 列表内容:重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。
- 实现接口或者继承父类的方法。
- HTTP 请求的 GET 与 POST 方式的区别
- GET请求能够被缓存; GET请求会保存在浏览器的浏览记录中; 以GET请求的URL能够保存为浏览器书签; GET请求有长度限制;GET请求主要用以获取数据;
- POST请求不能被缓存下来;POST请求不会保存在浏览器浏览记录中;以POST请求的URL无法保存为浏览器书签;以POST请求的URL无法保存为浏览器书签
- session和cookies的区别
- Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;
- Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式
- spring mvc原理
- 用户发出请求,请求到达前端控制器(DispatcherServlet)
- 前端控制器解析url,请求处理器映射器(handlerMapping),查找匹配的url,并返回一个执行链。
- 前端控制器请求请求处理适配器(handlerAdapter)调用相应的handler并返回给前端控制器一个ModelAndView。
- 前端请求控制器再请求viewerResolver对返回的逻辑视图解析。
- 最后前端控制器将返回的视图进行渲染并把数据装入到request域,返回给用户。
- 过滤器和拦截器的区别
- 拦截器:用于在某个方法或是某个字段被访问前进行,在拦截之前或是之后进行某些操作。拦截是AOP的一种实现策略
- 过滤器:过滤器是一个程序,它先于与之相关的servlet和jsp页面,运行在服务器上。
- 两者的区别:
- 拦截器基于Java反射机制,过滤器则是基于函数回掉。
- 拦截器不依赖于servlet容器,而过滤器依赖
- 拦截器只对action请求起作用,而过滤器对一切请求起作用。
面试之java基础
最新推荐文章于 2022-10-02 14:44:58 发布