美文网首页
面试题知识点整理

面试题知识点整理

作者: Andy_0801 | 来源:发表于2017-07-07 18:28 被阅读0次

1.对象的创建与销毁的方法及过程 ?

        创建对象的方法:1构造器    2静态工厂方法    3通过Builder

        销毁的方法:finalizer方法是再垃圾回收的时候触发的,因此不能准确的知道终结方法调用的时间。因此最好是在try catch finally的时候释放对象。这种释放对象的时机,叫做显示终止方法。

2.List Set 值能否为null ? 特点是什么 ?

List与Set具有相似性,它们都是单列元素的集合,所以,它们有一个功共同的父接口,叫Collection,二者存值可以为NULL。Set里面不允许有重复的元素,所谓重复,即不能有两个相等(注意,不是仅仅是相同)的对象 

List表示有先后顺序的集合, 注意,不是那种按年龄、按大小、按价格之类的排序。当我们多次调用add(Obj e)方法时,每次加入的对象就像火车站买票有排队顺序一样,按先来后到的顺序排序。有时候,也可以插队,即调用add(int index,Obj e)方法,就可以指定当前对象在集合中的存放位置。一个对象可以被反复存储进List中,每调用一次add方法,这个对象就被插入进集合中一次,其实,并不是把这个对象本身存储进了集合中,而是在集合中用一个索引变量指向这个对象,当这个对象被add多次时,即相当于集合中有多个索引指向了这个对象。

3.重载与重写

Overload是重载的意思,Override是覆盖的意思,也就是重写。

重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。

重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。

4. private  、 public 、 protected 、default  的区别

5.介绍一下String , 它能否被继承?

String类不能被继承 

参考:http://www.cnblogs.com/lwbqqyumidi/p/4060845.html

6.对象序列化?谈谈你的理解

        序列化:把Java对象转换为字节序列的过程。

        反序列化:把字节序列恢复为Java对象的过程。

        java.io.ObjectOutputStream代表对象输出流,它的writeObject(Object obj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。只有实现了Serializable和Externalizable接口的类的对象才能被序列化。

可参考:http://www.cnblogs.com/xudong-bupt/archive/2013/05/19/3086493.html

7.SpringMVC 的注释,products ?

@Repository 对应数据访问层的Bean

@Service 对应业务层的Bean

@Controller 对应控制层的Bean

除了这几个对类的注解外,还有几个对类中属性的注解,主要目的是告诉Spring这个属性应该用那个前面已经注解过的类来实例化,它们分别是:

@Resource 默认按名称来装配注入,只有当找不到与名称相匹配的bean时才会按照类型来装配注入

@Autowired 默认按类型来装配注入,如果想按照名称来装配注入,则需要结合@Qualifier一起使用

@Qualifier 默认按名称来装配注入

由于@Autowired是按照类型来注入的,因此当同类型的变量有多个需要注入时,仅仅使用@Autowired就会出现问题,这时可以结合@Qualifier来使用

大家复习可参考这个IP:http://www.cnblogs.com/leskang/p/5445698.html

8.Collector 的注释?(见上题)

9. java.util 包下的类都有哪些?

                                                              java.util包的基本层次结构

10.接口与抽象类的区别,他们的使用的场景是什么 ?

接口和抽象类应该是Java语法中最常见的两个概念

a,抽象类的成员可以具有访问级别接口的成员全部public级别

b,抽象类可以包含字段接口不可以

c,抽象类可以继承接口接口不能继承抽象类

d,抽象类的成员可以具有具体实现接口不行

e,抽象的子类可以选择性实现其基类的抽象方法接口的子类必须实现

f,接口是抽象类的一种特例!

应用场合很简单了嘛!

1 优先定义接口

2 如果有多个接口实现有公用的部分,则使用抽象类,然后集成它。对于那种功能单一,又需要拿来作为一个附件附加到基本类上的类,我们就把它定义成接口

11.乐观锁和悲观锁

在并发环境下,有可能会出现脏读(Dirty Read)、不可重复读(Unrepeatable Read)、 幻读(Phantom Read)、更新丢失(Lost update)等情况。具体的表现可以自行搜索。

为了应对这些问题,主流数据库都提供了锁机制,并引入了事务隔离级别的概念。

悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。

乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库如果提供类似于write_condition机制的其实都是提供的乐观锁。(这个我也不算太理解,大家再google一下吧)

12.Mysql 数据库的四个级别事务隔离(查阅API才知道)

13.MyBatis 有没有缓存 ? SQL语句的执行过程

MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候,如果判断先前有个完全一样的查询,会直接从缓存中直接将结果取出,返回给用户,不需要再进行一次数据库查询了。

执行过程后补吧~~~

14.Ajax 内部是怎么实现的

Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。

XMLHttpRequest ajax 的核心机制,它是在IE5中首先引入的,是一种支持异步请求的技术。简单的说,也就是javascript可以及时向服务器提出请求和处理响应,而不阻塞用户。达到无刷新的效果。

我们先从XMLHttpRequest讲起,来看看它的工作原理。

首先,我们先来看看XMLHttpRequest这个对象的属性。

它的属性有:

onreadystatechange  每次状态改变所触发事件的事件处理程序。

responseText  从服务器进程返回数据的字符串形式。

responseXML  从服务器进程返回的DOM兼容的文档数据对象。

status  从服务器返回的数字代码,比如常见的404(未找到)和200(已就绪)

status Text  伴随状态码的字符串信息

readyState  对象状态值

0 (未初始化)对象已建立,但是尚未初始化(尚未调用open方法)

1 (初始化)对象已建立,尚未调用send方法

2 (发送数据) send方法已调用,但是当前的状态及http头未知

3 (数据传送中)已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误,

4 (完成)数据接收完毕,此时可以通过通过responseXml和responseText获取完整的回应数据

对于XmlHttpRequest的两个方法,open和send,其中open方法指定了:

a、向服务器提交数据的类型,即post还是get。

b、请求的url地址和传递的参数。

c、传输方式,false为同步,true为异步。默认为true。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作。我们需要根据实际需要来指定同步方式,在某些页面中,可能会发出多个请求,甚至是有组织有计划有队形大规模的高强度的request,而后一个是会覆盖前一个的,这个时候当然要指定同步方式。

Send方法用来发送请求。

知道了XMLHttpRequest的工作流程,我们可以看出,XMLHttpRequest是完全用来向服务器发出一个请求的,它的作用也局限于此,但它的作用是整个ajax实现的关键,因为ajax无非是两个过程,发出请求和响应请求。并且它完全是一种客户端的技术。而XMLHttpRequest正是处理了服务器端和客户端通信的问题所以才会如此的重要。

现在,我们对ajax的原理大概可以有一个了解。我们可以把服务器端看成一个数据接口,它返回的是一个纯文本流,当然,这个文本流可以是XML格式,可以是Html,可以是Javascript代码,也可以只是一个字符串。这时候,XMLHttpRequest向服务器端请求这个页面,服务器端将文本的结果写入页面,这和普通的web开发流程是一样的,不同的是,客户端在异步获取这个结果后,不是直接显示在页面,而是先由javascript来处理,然后再显示在页面。至于现在流行的很多ajax控件,比如magicajax等,可以返回DataSet等其它数据类型,只是将这个过程封装了的结果,本质上他们并没有什么太大的区别。

15.Error 与 Exception 的区别 ?  

16.AOP 和 IOC 

15和16太简单了吧,不写了...偷个懒~~

17.解释Servlet ? 

        Servlet是一个Java程序,是在服务器上运行以处理客户端请求并做出响应的程序。

servlet有良好的生存期,包括加载和实例化、初始化、处理请求以及服务结束。

相关文章

网友评论

      本文标题:面试题知识点整理

      本文链接:https://www.haomeiwen.com/subject/wvlrhxtx.html