没有合适的资源?快使用搜索试试~ 我知道了~
首页阿里巴巴常考面试题及汇总答案.docx
阿里巴巴常考面试题及汇总答案.docx

阿里巴巴常考面试题及汇总答案.docx,阿里巴巴常考面试题及汇总答案.docx,阿里巴巴常考面试题及汇总答案.docx
资源详情
资源评论
资源推荐

阿里巴巴常考面试题及汇总答案
转载 年 月 日
标签:
阿里面试
原文地址: !!
一、String,StringBuer, StringBuilder 的区别是什么?String 为什么是不可变的?
答:、"! 是字符串常量,"!#$% 和 "!#$! 都是字符串变量。后两者的
字符内容可变,而前者创建后内容不可变。
、"! 不可变是因为在 &'( 中 "! 类被声明为一个 ) 类。
、"!#$% 是线程安全的,而 "!#$! 是非线程安全的。
:线程安全会带来额外的系统开销,所以 "!#$! 的效率比 "!#$% 高。如果对
系统中的线程是否安全很掌握,可用 "!#$%,在线程不安全处加上关键字
" !*。
二、Vector,ArrayList, LinkedList 的区别是什么?
答:、+、, -! 都是以类似数组的形式存储在内存中,-!-! 则以链表的
形式进行存储。
、-! 中的元素有序、允许有重复的元素," 中的元素无序、不允许有重复元素。
、+ 线程同步,, -!、-!-! 线程不同步。
.、-!-! 适合指定位置插入、删除操作,不适合查找;, -!、+ 适合查找,
不适合指定位置的插入、删除操作。
、, -! 在元素填满容器时会自动扩充容器大小的 /,而 + 则是 /,因此
, -! 更节省空间。
00000详见:11122!..2
三、HashTable, HashMap,TreeMap 区别?
答:、34 线程同步,35 非线程同步。
、34 不允许6键7值8有空值,35 允许6键7值8有空值。
、34 使用 9$2!,35 使用 :。
.、34 中 数组的默认大小是 ,增加方式的 ;<,35 中 数
组的默认大小是 ,增长方式一定是 的指数倍。
、45 能够把它保存的记录根据键排序,默认是按升序排序。
详见:111*2!2=>

五、Tomcat,Apache,JBoss 的区别?
答:、, 是 3 服务器,42 是 1 服务器,&# 是应用服务器。
、, 解析静态的 2 文件;42 可解析 动态页面、也可充当 容器。
详见:!! 2
六、GET,POST 区别?
答:基础知识:3 的请求格式如下。
6?$0!8000000主要包含三个信息:、请求的类型(@94 或 AB"4),、要访问的资源(如C
C!2C!),、3 版本()
68000000000用来说明服务器要使用的附加信息
60!80000000这是 3 的规定,必须空一行
D6?$E 8F000请求的内容数据
区别:
、@ 是从服务器端获取数据,A 则是向服务器端发送数据。
、在客户端,@ 方式通过 GH- 提交数据,在 GH- 地址栏可以看到请求消息,该消息被编码过;A
数据则是放在 320 内提交。
、对于 @ 方式,服务器端用 H?$I$ "! 获取变量的值;对用 A 方式,服务器端用
H?$J2 获取提交的数据值。
.、@ 方式提交的数据最多 . 字节,而 A 则没有限制。
、@ 方式提交的参数及参数值会在地址栏显示,不安全,而 A 不会,比较安全。
详见:11121K!2
七、Session, Cookie 区别
答:、"! 由应用服务器维护的一个服务器端的存储空间;L! 是客户端的存储空
间,由浏览器维护。
、用户可以通过浏览器设置决定是否保存 L!,而不能决定是否保存 "!,因为
"! 是由服务器端维护的。
、"! 中保存的是对象,L! 中保存的是字符串。
.、"! 和 L! 不能跨窗口使用,每打开一个浏览器系统会赋予一个 "!:',此时
的 "!:' 不同,若要完成跨浏览器访问数据,可以使用,!!。
、"!、L! 都有失效时间,过期后会自动删除,减少系统开销。
详见:111!22.2
八、Servlet 的生命周期
答:大致分为 . 部:" 类加载EE8实例化EE8服务EE8销毁
0000下图是 42 中 " 时序图。

、M0L! 向 " 容器N42O发出 3 请求。
、" 容器接收 L! 端的请求。
、" 容器创建一个 3H?$ 对象,将 L! 的请求信息封装到这个对象中。
.、" 创建一个 3H 对象。
、" 调用 3" 对象的 ! 方法,把 3H?$ 对象和 3H
对象作为参数传递给 3" 对象中。
、3" 调用 3H?$ 对象的方法,获取 3 请求,并进行相应处理。
、处理完成 3" 调用 3H 对象的方法,返回响应数据。
、" 容器把 3" 的响应结果传回客户端。
0000其中的 个方法说明了 " 的生命周期:
、!!NO:负责初始化 " 对象。
、!NO:负责响应客户端请求。
、 NO:当 " 对象推出时,负责释放占用资源。
详见:$ $! 2.
九、HTTP 报文包含内容
答:主要包含四部分:
、?$0!
、0!

、0!
.、?$0
详见:$!$!!
十、Statement 与 PreparedStatement 的区别,什么是 SQL 注入,如何防止 SQL 注入
答:、A"2 支持动态设置参数,"2 不支持。
、A"2 可避免如类似单引号的编码麻烦,"2 不可以。
、A"2 支持预编译,"2 不支持。
.、在 ? 语句出错时 A"2 不易检查,而 "2 则更便于查错。
、A"2 可防止 "? 助于,更加安全,而 "2 不行。
详见:2K!*!!P!.
什么是 "I- 注入:
通过 ? 语句的拼接达到无参数查询数据库数据目的的方法。
如将要执行的 sql 语句为select * from table where name =
"+appName+",利用 appName 参数值的输入,来生成恶意的 sql 语句,
如将['or'1'='1'] 传入可在数据库中执行。
因此可以采用 PrepareStatement 来避免 Sql 注入,在服务器端接收参数
数据后,进行验证,此时 PrepareStatement 会自动检测,而 Statement
不行,需要手工检测。
十一、sendRedirect, foward 区别
答:、1 是服务器端控制页面转向,在客户端的浏览器地址中不会显示转向后的地址;
H! 则是完全的跳转,浏览器中会显示跳转的地址并重新发送请求链接。
原理:1 是服务器请求资源,服务器直接访问目标地址的 GH-,把那个 GH- 的响应内
容读取过来,然后再将这些内容返回给浏览器,浏览器根本不知道服务器发送的这些内
容是从哪来的,所以地址栏还是原来的地址。
0000! 是服务器端根据逻辑,发送一个状态码,告诉浏览器重新去请求的那个地址,
浏览器会用刚才的所有参数重新发送新的请求。
详见:$! 2.
十二、关于 &,+, 内存模型,一个对象(两个属性,四个方法)实例化 次,现在内存中的
存储状态,几个对象,几个属性,几个方法。
答:由于 &,+, 中 1 出来的对象都是放在堆中,所以如果要实例化 次,将在堆中产生 个对
象,一般对象与其中的属性、方法都属于一个整体,但如果属性和方法是静态的,就是用 ! 关
键字声明的,那么属于类的属性和方法永远只在内存中存在一份。
详见:112*?2=>.

十三、谈谈 Hibernate 的理解,一级和二级缓存的作用,在项目中 Hibernate 都是怎么使
用缓存的。
答:3! 是一个开发的对象关系映射框架(BH5)。它对 &'#L 进行了非常对象封装,
3! 允许程序员采用面向对象的方式来操作关系数据库。
3! 的优点:
、程序更加面向对象
、提高了生产率
、方便移植
.、无入侵性。
缺点:
、效率比 &'#L 略差
、不适合批量操作
、只能配置一种关联关系
3! 有四种查询方式:
、、 方法,根据 ! 号查询对象。
、3!0?$ 0$
、标准查询语言
.、通过 ? 查询
3! 工作原理:
、配置 ! 对象关系映射文件、启动服务器
、服务器通过实例化 L)$! 对象,读取 !K2 文件的配置内容,并根据相关的需
求建好表以及表之间的映射关系。
、通过实例化的 L)$! 对象建立 "!J 实例,通过 "!J 实例创建
"! 对象。
.、通过 "! 对象完成数据库的增删改查操作。
3! 中的状态转移
临时状态(!)
、不处于 ! 缓存中
、数据库中没有对象记录
是如何进入临时状态的:、通过 1 语句创建一个对象时。、刚调用 ! 的 方法时,
从 ! 缓存中删除一个对象时。
持久化状态N!O
、处于 ! 缓存中
、持久化对象数据库中没有对象记录
、! 在特定的时刻会保存两者同步
如何进入持久化状态:、! 的 NO方法。、! 的 NONO方法返回的对象。
、! 的 )NO方法返回的 ! 集合中存放的对象。.、"! 的 $NONO方法。
流离状态()
、不再位于 ! 缓存中
、游离对象由持久化状态转变而来,数据库中还没有相应记录。
如何进入流离状态:、"! 的 NO。"! 的 !NO方法,从缓存中删除一个对象。
具体如下图所示:
剩余23页未读,继续阅读








安全验证
文档复制为VIP权益,开通VIP直接复制

评论1