前几天参加了阿里巴巴的电话面试,把他们问的问题都记录了下来,希望对那些正准备面试的人有用。

一、String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?
答:String是不可变的,StringBuffer是可变的;StringBuffer是线程安全的,StringBuilder是非线程安全的。
因而在大部分情况下字符串的拼接速度为:StringBuilder>StringBuffer>String
解释如下:
因为String是不可变的(通过ide的debugger可以发现其属性大都为final类型),因此每次对其操作改变其变量值,其实是生成一个新的对象,然后将变量引用指向新对象;因此速度慢。

StringBuffer则不同,对其操作即直接操作对象指向的引用,无需产生新对象,速度很快;它是线程安全的,在维护多线程的同步等也会消耗一点性能。

StringBuilder是jdk5之后新增的,其用法与StringBuffer完全一致,但它是线程不安全的,在单线程中最佳,因为其不需要维护线程的安全,因此是最快的。

内存效率。
字符串重复的概率很高,
当其不可变时,就可以多个变量共享了。
二、VECTOR,ARRAYLIST, LINKEDLIST的区别是什么?
答:1 ArrayList底层是采用数组实现的(并且改数组的类型是Object类型的)2 如果是jdk6的话,采用Array.of()方法来生成一个新的数组,如果是jdk5.0的话,使用的是System.arraycopy方法(将数组拷贝)
3 List list = new ArrayList();时,底层会生成一个长度为10的数组来存放对象,如果预先知道list
会存放多少个对象的话,最好通过new ArrayList(int length)的方式先确定数组的最小长度,如new
ArrayList(50),这样能提高底层的效率。
4 对于ArrayList与Vector来说,底层都是采用数组方式来实现的(该数组是一个Object类型的数组)
5 对于ArrayList,所有方法都不是同步的,对于Vector,大部分是public的方法都是同步的。
6、LinkedList底层是由双向循环链表实现的,对于ArrayList,查找速度非常快,增加和删除操作非常
慢。(本质上是由数组的特点来决定的)
7、对于LinkList,查找速度非常慢,增加和删除操作非常快。(本质上是由双向循环链表的特点来决定
的)
一、同步性

ArrayList,LinkedList是不同步的,而Vestor是的。所以如果要求线程安全的话,可以使用ArrayList或LinkedList,可以节省为同步而耗费开销。但在多线程的情况下,有时候就不得不使用Vector了。当然,也可以通过一些办法包装ArrayList,LinkedList,使他们也达到同步,但效率可能会有所降低。

二、数据增长
从内部实现机制来讲ArrayList和Vector都是使用Objec的数组形式来存储的。当你向这两种类型中增加元素的时候,如果元素的数目超出了内部数组目前的长度它们都需要扩展内部数组的长度,Vector缺省情况下自动增长原来一倍的数组长度,ArrayList是原来的50%,所以最后你获得的这个集合所占的空间总是比你实际需要的要大。所以如果你要在集合中保存大量的数据那么使用Vector有一些优势,因为你可以通过设置集合的初始化大小来避免不必要的资源开销。

三、检索、插入、删除对象的效率

ArrayList和Vector中,从指定的位置(用index)检索一个对象,或在集合的末尾插入、删除一个对象的时间是一样的,可表示为O(1)。但是,如果在集合的其他位置增加或移除元素那么花费的时间会呈线形增长:O(n-i),其中n代表集合中元素的个数,i代表元素增加或移除元素的索引位置。为什么会这样呢?以为在进行上述操作的时候集合中第i和第i个元素之后的所有元素都要执行(n-i)个对象的位移操作。
LinkedList中,在插入、删除集合中任何位置的元素所花费的时间都是一样的—O(1),但它在索引一个元素的时候比较慢,为O(i),其中i是索引的位置。

所以,如果只是查找特定位置的元素或只在集合的末端增加、移除元素,那么使用Vector或ArrayList都可以。如果是对其它指定位置的插入、删除操作,最好选择LinkedList

三、HASHTABLE, HASGMAQ,TreeMap区别
四、ConcurrentMap和HashMap的区别
五、Tomcat,apache,jboss的区别
答:Apache全球应用最广泛的http服务器,免费,出自apache基金组织
Tomcat应用也算非常广泛的web服务器,支持部分j2ee,免费,出自apache基金组织
JBoss开源的应用服务器,比较受人喜爱,免费(文档要收费)
weblogic应该说算是业界第一的app server,全部支持j2ee1.4, 对于开发者,有免费使用一年的许可证,用起来比较舒服,出资BEA公司,呵呵,我用的就是这个,所以比较熟悉
jboss也支持j2ee
JBoss和WebLogic都含有Jsp和Servlet容器,也就可以做web容器,
JBoss和WebLogic也包含EJB容器,是完整的J2EE应用服务器
tomcat 只能做jsp和servlet的container
Jboss内嵌Tomcat… 处理静态页面Jboss的速度要比较快。
Jboss作为应用服务器,而Tomcat做web服务器。

六、GET POST区别
答案:(1)get是从服务器上获取数据,post是向服务器传送数据。
(1) 在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTML HEADER内提交。
(2) 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
(2) GET方式提交的数据最多只能有1024字节,而POST则没有此限制。
(3) 安全性问题。正如在(1)中提到,使用 Get 的时候,参数会显示在地址栏上,而 Post 不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用 get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用 post为好。

七、SESSION, COOKIE区别
答:具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。<br>同时我们也看到,由于才服务器端保持状态的方案在客户端也需要保存一个标识,所以session<br>机制可能需要借助于cookie机制来达到保存标识的目的,但实际上还有其他选择
八、Servlet的生命周期
答:Servlet是一种可以在Servlet容器中运行的组件,那么理所当然就应该有一个从创建到销毁的过程,这个过程我们可以称之为Servlet生命周期。Servlet的生命周期可以分为加载、实例化、初始化、处理客户请求和卸载五个阶段,体现在方法上主要是init()、service()和destroy()三个方法。生命周期的具体说明如下:
•Servlet容器完成加载Servlet类和实例化一个Servlet对象
•init()方法完成初始化工作,该方法由Servlet容器调用完成
•service()方法处理客户端请求,并返回响应结果
•destroy()方法在Servlet容器卸载Servlet之前被调用,释放一些资源

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/luwei42768/archive/2008/10/31/3191455.aspx
九、HTTP 报文包含内容
十、Statement与PreparedStatement的区别,什么是SQL注入,如何防止SQL注入
答:一.代码的可读性和可维护性.
二.PreparedStatement尽最大可能提高性能.
三.最重要的一点是极大地提高了安全性.
SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别

十一、redirect, foward区别
Foward(转发)
使用:

HttpServletRequest.getRequestDispatcher(URL).forward(request, response)
或者 HttpServletContext.getRequestDispatcher(URL).forward(request, response)
原理:
当使用转发时, JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程。
特点:
浏览器中所显示的URL不会被修改.
由于request并没有中止,所以其中的对象仍然可用.

Redirect(重定向)
使用:

HttpServletResponse.sendRedirect(URL);
原理:
重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求
特点:
当你使用重定向时,浏览器中所显示的URL会变成新页面的URL.
由于重定向方式产生了一个新的请求,所以经过一次重定向后,request内的对象将无法使用。

怎么选择是重定向还是转发呢?通常情况下转发更快,而且能保持request内的对象,所以他是第一选择。但是由于在转发之后,浏览器中URL仍然指向开始页面,此时如果重载当前页面,开始页面将会被重新调用。如果你不想看到这样的情况,则选择重定向。
十二、关于JAVA内存模型,一个对象(两个属性,四个方法)实例化100次,现在内存中的存储状态,
几个对象,几个属性,几个方法。
十三、谈谈Hibernate的理解,一级和二级缓存的作用,在项目中Hibernate都是怎么使用缓存的
十四、反射讲一讲,主要是概念,都在哪需要反射机制,反射的性能,如何优化
十五、谈谈Hibernate与Ibatis的区别,哪个性能会更高一些
十六、对Spring的理解,项目中都用什么?怎么用的?对IOC、和AOP的理解及实现原理
十七、线程同步,并发操作怎么控制
十八、描述struts的工作流程。
十九、Tomcat的session处理,如果让你实现一个tomcatserver,如何实现session机制
二十、关于Cache(Ehcache,Memcached)
二一、sql的优化相关问题
二二、oracle中 rownum与rowid的理解,一千条记录我查200到300的记录怎么查?
二三、如何分析ORACLE的执行计划?
二四、 DB中索引原理,种类,使用索引的好处和问题是什么?
二五、JVM垃圾回收实现原理。垃圾回收的线程优先级。
二六、jvm 最大内存设置。设置的原理。结合垃圾回收讲讲。
1.Spring对action,biz,dao三类对象的bean配置有什么不同?
2.Hibernate对于“有相同ID的不同对象在session中被锁定”的情况,怎么解决?
3.关于有限状态自动机的一个问题。
4.关于后缀表达式的一个问题。
5.Oracle树查询语法。
6.关于设计模式的一个问题。

时间: 2024-10-03 09:13:33

前几天参加了阿里巴巴的电话面试,把他们问的问题都记录了下来,希望对那些正准备面试的人有用。的相关文章

大V云集!参加首届阿里巴巴在线技术峰会的八大理由

这次峰会阿里集团首次改变传统线下分享模式,力邀集团内9位技术大V,通过视频在线实时互动的形式集中与开发者们进行交流.期间,将深度分享电商架构.安全.数据处理.数据库.多应用部署.互动技术.Docker持续交付与微服务等技术积累,以及各方向技术在阿里集团的最新应用实践.通过"在线"的新模式,业内开发者能够获得更好更完整的技术会议体验. 首届阿里巴巴在线技术峰会  欢迎报名 为了更好帮助开发者了解内容框架,特别总结参加首届阿里巴巴在线技术峰会的八大理由:   一.出品人层层把关    二.

对于《前女子体操全国冠军交友不慎染毒瘾》一事,陆指导也表示目前还没有找到与文章内容相符的人

<北京青年报>刊登了<中国女子体操押宝何可欣>一文,文中提到"中国体操女队在19日公布了伦敦奥运会五人主力名单中的四个,剩下的一个空缺将在何可欣.谭思欣以及江钰源之间产生.虽然这独缺的一席直到现在还没有对外公布,但是在中国女队教练组的心中已经有了明确的答案曾在北京奥运会获得高低杠金牌的何可欣."随后,中国体操女队教练组组长陆善真(微博博客)在腾讯博客发文,质疑文章的真实性,并对此表示担忧.同时,对于<前女子体操全国冠军交友不慎染毒瘾>一事,陆指导也表

阿里巴巴的IPO使得今年上市的所有企业都相形见绌

摘要: 查看最新行情 导语:<纽约时报>网站今天发表评论文章称, 阿里巴巴 的IPO使得今年上市的所有企业都相形见绌.然而,这并不会影响其他公司和投资者对IPO的热情,将有更多的公司   查看最新行情 导语:<纽约时报>网站今天发表评论文章称, 阿里巴巴 的IPO使得今年上市的所有企业都相形见绌.然而,这并不会影响其他公司和投资者对IPO的热情,将有更多的公司受其鼓舞而考虑上市. 以下为文章全文: 中国互联网巨头阿里巴巴周五的IPO没有让大家失望,这场众人期待已久的盛事,使今年上市

奥林巴斯前CEO将参加董事会议

新浪科技讯 北京时间11月23日上午消息,奥林巴斯前CEO迈克尔·伍德福德(Michael Woodford)周二表示,他将于本周受邀参加该公司的董事会议.对于希望伍德福德重返奥林巴斯,并执掌大权的投资者而言,这将是一个积极信号.尽管仍然受到财务丑闻的 困扰,但由于投资者猜测奥林巴斯有望避免退市命运,该公司股价周二大涨20%,报收于869日元(约合11.29美元).在上月被奥利巴斯解雇后,伍德福德便对该公司的账目进行公开质疑.奥林巴斯目前正在接受监管者.检察官和警方的调查.伍德福德在离开伦敦前往

美前政府官员否认窃听特朗普助手电话

据美媒报道,美国总统特朗普暗示其前任奥巴马总统的国家安全顾问苏珊·赖斯去年窃听了特朗普助手与外国人的谈话,并为了政治目的而寻求暴露这些人的身份.赖斯4日驳斥说,这完全不是事实. 资料图 赖斯表示,特朗普一个月前指责奥巴马对他进行监听是毫无事实根据的.一些议员和情报官员也否认了这一说法.但是特朗普最近两天不断在推特上发文,"以肯定的语气引述新闻报道说, 赖斯下令对特朗普进行监听. 赖斯说,在她担任白宫重要职务期间,每天都要审阅美国情报报告,并常常要求情报人员透露在对外国人进行日常监视期间被窃听到的

想在30岁前财务自由?看看福布斯评选的30位科创新贵都在做啥

互联网科技创业热潮,赶上资本寒冬,发展不易,首先得生存.这里统计了目前炙手可热的30家公司,他们的涉及职业培训.灾害评估.生物评估--等多种领域,最抢眼的地方,莫过于他们都还未超过30岁!现在我们快来先睹为快福布斯最新评选的30位科技圈新贵.  -1-  Ian Crosby, 29岁 首席执行官和联合创始人,Bench 摄影:Jamel Toppin for Forbes Ian Crosby在温哥华的公司将软件和人工统计结合,为小型企业提供了强有力的会计服务,包括财务报表,支出及税务准备.C

忆,那些年在北理工的戎码岁月

        两年前,我本科毕业写了这样一篇文章:< 回忆自己的大学四年得与失 >,感慨了自己在北理软院四年的所得所失:两年后,我离开了帝都,回到了贵州家乡,准备开启一段新的教师生涯,在此也写一篇文章纪念下吧!        还是那句话:这篇文章是写给自己的,希望很多年之后,回想起自己北京的六年时光,也是美好的回忆.文章可能有点长,但希望大家像读小说一样耐心品读,看完之后也能温馨一笑或唏嘘摇头,闭上眼睛想想你自己的大学生活吧,很享受的!        同时,这也是自己的第200篇原创文章,三

毕业多年的程序员重拾英语考雅思

昨天雅思成绩出来了,我的听力,阅读,写作,口语分数分别是5.5,5.5,5,6.这样算下来总分是5.5.可能对于大多人而言这个成绩不算什么,但是对于我来说却不容易(至少在一年前我想考到这样的分数绝对是不可能).这个分数也满足了我这次考雅思的目的,因为如果要去澳洲出差拿457签证的一个新要求是雅思成绩必须达到听说读写每门成绩5分以上.现在签证流程已经在走了,估计1月初就会到澳洲. 在查到雅思成绩单的时候我还是有些小兴奋的,这说明我的英语在这一年来有了巨大的进步.同时我想将我整个学英语的过程记录下来

在硅谷面试:如何证明你是最优秀的?

文/尹汝杰众所周知,现今世界的所有竞争归根结底都是对人的竞争,硅谷自然也不例外,众多企业为了吸引人才都使尽浑身解数,但这并不意味着来者不拒,因为所有公司都希望得到最好的,而筛选的途径就是面试,所以要想成为硅谷的一员,就必须在面试时即证明你是优秀的.我的面试经历1994年5月,我第一次参加面试,那时我正在斯坦福大学攻读计算机科学的硕士学位,许多当时的顶级公司,包括Oracle. Sybase. HP. IBM等等,都去斯坦福做校园招聘,一天,我收到系里群发的一封email,是Tandem Comp