1.说说Hashcode的作用,与 equal 有什么区别?
他们同样用于鉴定2个对象是否相等的,java集合中有 list 和 set 两类,其中 set不允许元素重复实现,那么这个不允许重复实现的方法,如果用 equal 去比较的话,比如说存在1000个元素,你 new 一个新的元素出来,需要去调用1000次 equal 去逐个和他们比较是否是同一个对象,这样会大大降低效率。hashcode实际上是返回对象的存储地址,如果这个位置上没有元素,就把元素直接存储在上面,如果这个位置上已经存在元素,这个时候才去调用equal方法与新元素进行比较,相同的话就不存了,散列到其他地址上。
2.当数据比较多做搜索的时候响应比较慢,怎么提高数据查询效率(数据库优化)?
(1)比如优化查询语句,将限定性强的where条件放前,用exists代替in操作等;
(2)或者最直接的优化就是硬件方面优化,提高机器性能,增加硬件等;
(3)优化索引,建立有效的索引并检查和修复缺少的统计信息等;
(4)数据库系统文件优化,将数据文件、索引文件、日志文件放置在不同的磁盘上,提高并行度等。
3.servlet执行流程?
(1)客户端发送请求,Get方式或者Post方式都可以,以a标签形式发送请求或form表单提交方式。
(2)在web.xml中配置mapping和url。
(3)同样是在web.xml中,通过mapping找到name属性一样的mapping,再通过其name属性下的servlet-class找到对应的类。
(4)根据servlet-class我们找到请求对应的类信息,根据请求方式确定调用doGet()方法或者doPost()方法。
4. springMVC的执行流程
(1)用户发送请求到前端控制器
(2)前端控制器收到请求调用处理器映射器
(3)处理器映射器根据请求URL找到具体的处理器,生出处理器对象以及处理器拦截器,返回给 前端控制器
(4)前端控制器通过处理器适配器调用处理器
(5)执行处理器Controller
(6)处理器执行完成后返回ModelAndView
(7)处理器适配器将执行结果ModelAndView返回给前端控制器
(8)前端控制器将ModelAndView传给视图解析器
(9)视图解析器解析后返回具体view
(10)前端控制器对view进行渲染视图(即将模型数据填充到视图中)
(11)前端控制器响应用户
5.你知道线程同步与阻塞的关系?同步一定阻塞吗?阻塞一定同步的吗?
线程同步与否跟阻塞非阻塞没关系,同步是个过程,阻塞是线程的一种状态。多个线程操作共享变量时可能会出现竞争。这时需要同步来防止两个以上的线程同时进入临界区内,在这个过程中后进入临界区的线程将阻塞,等待先进入的线程走出临界区。
6.TCP如何保证可靠传输?说说三次握手的过程?
在TCP的连接中,数据流必须以正确的顺序送达对方。TCP的可靠性是通过顺序编号和确认ACK来实现的。TCP 连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。第一次是客户端发起连接;第二次表示服务器收到了客户端的请求;第三次则表示客户端收到了服务器的反馈。
7.数据库中的范式有哪些?
第一范式:数据库中的表(所有字段值)都是不可分割的原子数据项。第二范式:数据库表中的每一列都和主键相关,而不能只和主键的某一部分相关。第三范式:数据库表中每一列数据都和主键直接相关,不能间接相关。范式是为了减小数据冗余。
8. 你知道数据库中的索引的结构?在什么情况下适合建索引?
数据库中索引的结构是一种排序的数据结构,数据库索引是通过B树和变形的B+树实现的。什么情况下不适合建立索引:对于在查询过程中很少使用或参考的列;对于那些只有很少数据值的列;对于那些定义为image,text和bit数据类型的列;当修改性能远大于检索性能。根据系统自身的环境情况,有效的限制执行线程的数量,使得运行效果达到最佳。线程主要是通过控制执行的线程的数量,超出数量的线程排队等候,等待有任务执行完毕,再从队列最前面取出任务执行。