面试过程中遇到的问题

1.HTTP与HTPPS的区别

HTTP传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常的不安全,为了保证这些数据能够安全的加密传输,于是网景公司设计了SSL协议用于对HTTP协议传输的数据进行加密,从此诞生了HTTPS协议。
HTTP与HTTPS的主要区别如下:

(1)https协议需要到ca申请证书,一般免费证书较少,因而需要一定的费用。
(2)http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
(3)http和https使用的是完全不同的链接方式,用的端口也不一样,前者是80,后者是443.
(4)http的链接很简单,是无状态的;https协议是由ssl+http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

2.有状态回话的bean与无状态回话的bean的区别

有状态(Stateful)
(1)可以在不同的方法调用间保持针对各个客户端的状态。
(2)与客户端的联系必须被维持,这样做开销要大一些。
(3)有状态也可以这样理解,它存在存储能力,也就是说至少有一个属性来标志它目前的状态。
注意:有状态会话的bean,每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即"有状态";一旦用户灭亡(调用结束或者实例结束),bean的生命期
也告结束。即每个用户最初都回得到一个初始的bean。
无状态(Stateless)
(1)在不同方法调用间不保留任何状态。
(2)事务处理必须在一个方法中结束,这样占用资源较少,还可以被共享。
(3)无状态从字面理解就是没有能够标识它目前状态属性的bean。
注意:无状态回话的bean一旦实例化就会被加进回话池中,每个用户都可以共享。即使用户已经消亡,bean的生命周期也不一定结束,它可能依然存活在会话池中,供其他用户
调用。由于没有特定的用户,那么也就不能保持某一用户的状态,所以叫无状态bean。但无状态会话的bean并非没有状态,如果他有自己的属性(变量),那么这些变量
就会受到所有调用它的用户的影响,这些是在实际中必须要注意的。
总结:
无状态的会话bean不保持任何与客户端的会话状态,发给bean的每一次请求需要同时提供数据来进行请求处理。有状态的会话bean,与之相反,可以保持状态,并且可以
在与用户的多次会话中存在。
有状态的bean带来了支持会话状态的好处但同时付出了性能的代价。无状态会话bean具有更好的性能,但却又不具备与客户端的亲和力。Strusts2中将Action与ActionForm
合二为一,就有了状态,因为每次请求都创建一个新的实例,所以没有线程安全的问题,Struts1的Action采用的是单例模式,仅有Action的一个实例来处理所有的请求。

3.JSP九大内置对象以及简述作用

(1)request 请求对象,代表了客户端的请求信息,作用域为request。
(2)response 响应对象,主要是将JSP处理过的对象传回到客户端,,作用域为page。
(3)pageContext 页面上下文对象,作用是取得任何范围的参数,通过它可以获取JSP页面的out、request、response、session、application等对象。(page)
(4)page 页面对象,代表JSP本身,类似于java编程中的this指针。(page)
(5)out 输出对象,用于在web浏览器内输出信息,并且管理应用服务器上的输出缓冲区,一个输出流。(page)
(6)config 配置对象,主要用于获取服务器的配置信息,通过pageContext的getServletConfig()方法可以获取一个config对象,当一个Servlet容器初始化时,容器把某些
信息通过config对象传递给Servlet,开发者可以在web.xml文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。(page)
(7)application 应用程序对象,可以将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application
的生命周期更长,类似于系统的全局变量。
服务器在启动时就产生了Application对象,当客户在访问的网站的所有网页之间浏览时,这个application对象都是同一个,直到服务器关闭。但于session对象不同的是,
所有客户的Applocation对象都是同一个,即为共享的Application。(application)
(8)session 会话对象,它在第一个JSP页面被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个页面结束,被称为
一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间来回切换,服务器应当通过某种办法知道这是同一个客户,就需要session对象。
当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个session对象,同时分配一个String类型的ID号,JSP引擎同时将这个ID号发送到客户端,存放在Cookie
中。
session对象是由服务器自动创建的与用户请求相关的对象,服务区为每个用于都产生一个session对象,用于保存该用户的信息,跟踪用户的操作状态。
session对象内部使用Map类型来保存数据,value可以是复杂的对象类型,而不仅仅局限于String。(session)
(9)exception 例外对象,显示异常信息。(page)

4.简述HashMap底层的实现原理

HashMap概述:

HashMap是基于哈希表的Map接口的非同步实现,此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证顺序恒久不变。

HashMap的数据结构:

在java编程语言中,最基本的结构就两种,一个是数组,另一个就是模拟指针(引用)。所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个链表散列的数据结构,即数组和链表的结合体。HashMap底层就是一个数组结构,数组中的每一项又是一个链表。当新建一个HashMap的时候,就会初始化一个数组。
我们往HashMap中put元素的时候,先根据key的hashCode重新计算hash值,根据hash值得到这个元素在数组中的位置(下标)。如果数组该位置上已经存放其他元素了,那么在这个位置上的元素将以链表的形式存放,新加入的放在链头,最先加入的放在链尾。

5.MySql与Oracle主键的区别

(1)Oracle是大型数据库,而Mysql是中小型数据库,Mysql是开源的,而Oracle价格非常高。
(2)Oracle支持大并发,大访问量。
(3)主键:Mysql一般使用自动增长类型(auto_increment)。Oracle没有自动增长类型,主键一般使用的序列,插入记录时将序列号的下一个值付给该字段即可(start with、
NOMAXVALUE、NOMINVALUE)。
(4)单引号的处理,Mysql里面可以用双引号包起字符串,Oracle里面只能用单引号。
(5)空字符串的处理。Mysql的非空字段也有空的内容,Oracle里面定义了非空字段就不允许有空的内容。
(6)字符串的模糊比较。Mysql中使用LIKE ‘%字符串%’ ,Oracle中也可以使用LIKE‘%字符串%’,但这种方法不能使用索引,效率低。

6.数据库的四大索引简述

索引定义:

索引好比是一本书前面的目录,能加快数据库的查询速度。索引是对数据库表中的一个或者多个列的值进行排序的结构。

建立索引的优缺点:

优点:

(1)大大加快数据的检索速度。
(2)创建唯一性索引,保证数据库表中每一行数据的唯一性。
(3)加速表和表之间的链接。
(4)在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。

缺点:

(1)索引需要占据数据表以外的物理存储空间。
(2)创建索引和维护索引需要花费一定的时间。
(3)当对表进行更新操作时,索引需要被重建,这样降低了数据的维护速度。

MySql索引类型:

(1)primary 主键索引,非空切唯一。
(2)unique 唯一索引。
(3)index 普通索引。
(4)fulltext 全文索引。
创建索引的方法:ALTER mytable ADD UNIQUE [indexName] ON (username(length)) ;
也可在创建表的时候直接指定:CREATE TABLE mytable( ID INT NOT NULL, 
username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username(length)) );
删除索引的方法:DROP INDEX [indexName] ON mytable; 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值