阿里巴巴校园招聘面试试题合集总结doc_第1页
阿里巴巴校园招聘面试试题合集总结doc_第2页
阿里巴巴校园招聘面试试题合集总结doc_第3页
阿里巴巴校园招聘面试试题合集总结doc_第4页
阿里巴巴校园招聘面试试题合集总结doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.forward和redirect差异从地址栏显示来说forward是服务器央求资源,服务器直接接见目标地址的URL,把那个URL的响应内容读取过来,尔后把这些内容再发给阅读器.阅读器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.redirect是服务端依照逻辑,发送一个状态码,告诉阅读器重新去央求那个地址.所以地址栏显示的是新的URL.从数据共享来说forward:转发页面和转发到的页面能够共享request里面的数据.redirect:不能够共享数据.从运用地方来说forward:一般用于用户登陆的时候,依照角色转发到相应的模块redirect:一般用于用户注销登陆时返回主页面和跳转到其他的网站等

.

.从效率来说forward:高.redirect:低.2.servlet3.ArrayList

的几个方法dogetdopost里装了Person

差异

Person

类的属性年龄来排序HashMap的键值可否能够是任意对象面试总结第一自我介绍1.2.3.针对2webservlet对应的是哪一个部分4.由前两个问题牵引出web.xml5.对spring认识吗6.springspring7.8.9.10.11.123MVC4567SE8Struts用的什么版本。10Struts2Struts1有什么差异。11Spring的AOP121.第一自我介绍2.问最熟悉的项目3.画出STRUTS框架响应jsp的流程图.4.针对2webservlet对应的是哪一个部分由前两个问题牵引出web.xml对spring认识吗7.springspring8.9.Struts基层的相关知识10.11.12.第一自我介绍在你所用过的框架中你比较喜欢那个问你做过的这些项目中那个收获最大,收获到了什么4.ibatis和Hibernate的差异5.servlet的生命周期spring的两个主要特点(AOP和IOC)说一下你所理解的J2EE是什么为什么说JBOSS吻合J2EE的要求,而TOMCAT不吻合J2EE的要求Hibernate的优点和缺点你以为在项目中最重要的是什么若是分给你的任务,你感觉完成有困难,你会怎么办最后你对支付宝有什么要问的这是依照问你项目而延伸的一些Sql,UML特别感兴趣。主要问1.2.历有没有作假。回答必然不要考虑。3.4.你的人5.6.7..8.Oracle中的分页Sql9.简单地向一个不懂计算机的人说明一下java的多态。说一下你知道的java设计模式。11.struts,spring中应用了哪写java12.说下springspring代理模式的类图。13.14.UML图。1简单介绍自己依照你的介绍提问mvc开发模式有哪些模式你的人生规划业余爱好近来所做的项目中除了你做的模块,还有哪些你都去过哪做项目总结:依照面试官不同样,他可能喜欢的人也不同样,这个面试官喜欢做事有计划的你对Java说说Hashtable与HashMap平时用过的ListArrayList和LinkedListArrayList和LinkedList的ArrayListProperties线程安全?===============================================(我提到了Struts2)请说一下Struts2(从源代码角度出发)CGLIB我以为他会接着问CGLIB,请说一下Struts2是如何把Action交给Spring你们页面的表单请说一下Struts2======================================================请说一下线程池的中断策略(4个)请说一下Tomcat如何实现动向部署请说一下Java你认识最新的ServletStringBuffer与StringBuilder请说一下Tomcat可否能够说说Java他说没关系--请说一些Mysql由于我从前有提还了解一些什么其他的技术范围。SOA=====================================================时间赶-----PS二。==================================================================你对Java的JavaHashMap,Hashtable,HashSet,ArrayList,Vector,LinkedList,Collections,Arrays;说说Hashtable与HashMap的差异(源代码级别)1.最明显的差异在于Hashtable是同步的(每个方法都是synchronized)HashMap则不是.2.HashMap继承至AbstractMap,Hashtable继承至Dictionary,前者为Map其内部已经实现了Map所需它的子类只需要实现它的少量方法即可拥有Map且该类已过时3.两者检测可否含有keyhashHashMap内部需要将key的hash码重新计Hashtable则直接利用key自己的hash码来做考据。HashMap:Java代码inthash=(key==null)?0:hash(key.hashCode());-----staticinthash(inth){h^=(h>>>20)^(h>>>12);returnh^(h>>>7)^(h>>>4);}inthash=(key==null)?0:hash(key.hashCode());-----staticinthash(inth){h^=(h>>>20)^(h>>>12);returnh^(h>>>7)^(h>>>4);}HashtableJava代码inthash=key.hashCode();Java代码inthash=key.hashCode();4.HashMap内部为16*0.75,Hashtable为11*0.75HashMap:Java代码1.staticfinalintDEFAULT_INITIAL_CAPACITY=16;staticfinalfloatDEFAULT_LOAD_FACTOR=0.75f;publicHashMap(){this.loadFactor=DEFAULT_LOAD_FACTOR;5.threshold=(int)(DEFAULT_INITIAL_CAPACITY*DEFAULT_LOAD_FACTOR);6.table=newEntry[DEFAULT_INITIAL_CAPACITY];init();}JavastaticfinalintDEFAULT_INITIAL_CAPACITY=16;staticfinalfloatDEFAULT_LOAD_FACTOR=0.75f;publicHashMap(){this.loadFactor=DEFAULT_LOAD_FACTOR;threshold=(int)(DEFAULT_INITIAL_CAPACITY*DEFAULT_LOAD_FACTOR);table=newEntry[DEFAULT_INITIAL_CAPACITY];init();}Hashtable:JavapublicHashtable(){this(11,0.75f);}-----publicHashtable(intinitialCapacity,floatloadFactor){..........this.loadFactor=loadFactor;table=newEntry[initialCapacity];threshold=(int)(initialCapacity*loadFactor);}publicHashtable(){this(11,0.75f);}-----publicHashtable(intinitialCapacity,floatloadFactor){..........this.loadFactor=loadFactor;table=newEntry[initialCapacity];threshold=(int)(initialCapacity*loadFactor);}ArrayListArrayListLinkedList

LinkedList

4ListList

2

Vector.ArrayListLinkedList1.ArrayListLinkedListJava(ArrayList)privatetransientObject[]elementData;3.5.(LinkedList)privatetransientEntry<E>header=newEntry<E>(null,null,null);/8.//.10.privatestaticclassEntry<E>{11.Eelement;//12.Entry<E>next;//13.Entry<E>previous;//Entry(Eelement,Entry<E>next,Entry<E>previous){this.element=element;this.next=next;this.previous=previous;}19.}Java20.(ArrayList)21.privatetransientObject[]elementData;22.25.(LinkedList)26.privatetransientEntry<E>header=newEntry<E>(null,null,null);/27.28.//.29.privatestaticclassEntry<E>{30.Eelement;//31.Entry<E>next;//32.Entry<E>previous;//Entry(Eelement,Entry<E>next,Entry<E>previous){this.element=element;this.next=next;this.previous=previous;}38.}

Object.24.2.

ArrayList

继承于

AbstractList,

而LinkedList

继承于

AbstractSequentialList.

两者都实现了

List问形式趋向于Java代码1.publicclassArrayList<E>extendsAbstractList<E>2.---------------------------------------------------------------------------------------publicclassLinkedList<E>extendsAbstractSequentialList<E>Java代码publicclassArrayList<E>extendsAbstractList<E>5.---------------------------------------------------------------------------------------6.publicclassLinkedList<E>extendsAbstractSequentialList<E>3.ArrayListLinkedListArrayList上一点谈到了ArrayListJava代码24.25.(LinkedList)26.privatetransientEntry<E>header=newEntry<E>(null,null,null);/链表头27.28.//内部链表类.29.privatestaticclassEntry<E>{30.Eelement;//数据元素31.Entry<E>next;//前驱32.Entry<E>previous;//后驱Entry(Eelement,Entry<E>next,Entry<E>previous){this.element=element;this.next=next;this.previous=previous;}38.}2.

ArrayList

继承于

AbstractList,

而LinkedList

AbstractSequentialList.

List问形式趋向于Java代码publicclassArrayList<E>extendsAbstractList<E>---------------------------------------------------------------------------------------publicclassLinkedList<E>extendsAbstractSequentialList<E>Java代码publicclassArrayList<E>extendsAbstractList<E>---------------------------------------------------------------------------------------6.publicclassLinkedList<E>extendsAbstractSequentialList<E>3.ArrayListLinkedList要慢。ArrayList上一点谈到了ArrayListJava代码1.publicvoidensureCapacity(intminCapacity){modCount++;intoldCapacity=elementData.length;if(minCapacity>oldCapacity){ObjectoldData[]=elementData;//这里扩大的大小为原大小的大概60%intnewCapacity=(oldCapacity*3)/2+1;if(newCapacity<minCapacity)9.newCapacity=minCapacity;10.//创办一个指定大小的新数组来覆盖原数组elementData=Arrays.copyOf(elementData,newCapacity);}}publicvoidensureCapacity(intminCapacity){modCount++;intoldCapacity=elementData.length;if(minCapacity>oldCapacity){ObjectoldData[]=elementData;//这里扩大的大小为原大小的大概60%intnewCapacity=(oldCapacity*3)/2+1;if(newCapacity<minCapacity)9.newCapacity=minCapacity;10.//创办一个指定大小的新数组来覆盖原数组elementData=Arrays.copyOf(elementData,newCapacity);}}Properties线程安全吗?Properties继承于Hashtable,,所以它是线程安全的.其特点是:load()Java代码<SPANstyle="FONT-WEIGHT:normal">publicsynchronizedvoidload(InputStreaminStream)throwsIOException{将输入流变换成LineReaderload0(newLineReader(inStream));}privatevoidload0(LineReaderlr)throwsIOException{char[]convtBuf=newchar[1024];intlimit;intkeyLen;intvalueStart;charc;booleanhasSep;booleanprecedingBackslash;一行一行办理while((limit=lr.readLine())>=0){c=0;keyLen=0;valueStart=limit;hasSep=false;precedingBackslash=false;//下面用2个循环来办理key,valuewhile(keyLen<limit){c=lr.lineBuf[keyLen];//needcheckifescaped.if((c=='='||c==':')&&!precedingBackslash){valueStart=keyLen+1;hasSep=true;break;}elseif((c==''||c=='\t'||c=='\f')&&!precedingBackslash){valueStart=keyLen+1;

break;}if(c=='\\'){precedingBackslash=!precedingBackslash;}else{precedingBackslash=false;}keyLen++;}while(valueStart<limit){c=lr.lineBuf[valueStart];if(c!=''&&c!='\t'&&c!='\f'){if(!hasSep&&(c=='='||c==':')){hasSep=true;}else{break;}}valueStart++;}Stringkey=loadConvert(lr.lineBuf,0,keyLen,convtBuf);Stringvalue=loadConvert(lr.lineBuf,valueStart,limit-valueStart,convtBuf);//Hashtable内部的方法.put(key,value);}}</SPAN>Java代码<SPANstyle="FONT-WEIGHT:normal">publicsynchronizedvoidload(InputStreaminStream)throwsIOException{将输入流变换成LineReaderload0(newLineReader(inStream));}privatevoidload0(LineReaderlr)throwsIOException{char[]convtBuf=newchar[1024];intlimit;intkeyLen;intvalueStart;charc;booleanhasSep;booleanprecedingBackslash;一行一行办理while((limit=lr.readLine())>=0){c=0;keyLen=0;valueStart=limit;hasSep=false;precedingBackslash=false;//下面用2个循环来办理key,valuewhile(keyLen<limit){c=lr.lineBuf[keyLen];//needcheckifescaped.if((c=='='||c==':')&&!precedingBackslash){valueStart=keyLen+1;hasSep=true;break;}elseif((c==''||c=='\t'||c=='\f')!precedingBackslash){valueStart=keyLen+1;break;}if(c=='\\'){precedingBackslash=!precedingBackslash;}else{precedingBackslash=false;}keyLen++;}while(valueStart<limit){c=lr.lineBuf[valueStart];if(c!=''&&c!='\t'&&c!='\f'){if(!hasSep&&(c=='='||c==':')){hasSep=true;}else{}

break;}valueStart++;}Stringkey=loadConvert(lr.lineBuf,0,keyLen,convtBuf);Stringvalue=loadConvert(lr.lineBuf,valueStart,limit-valueStart,convtBuf);//

Hashtable

内部的方法

.put(key,value);}}</SPAN>

LineReader

Properties

Java

代码<SPANstyle="FONT-WEIGHT:normal">classLineReader{publicLineReader(InputStreaminStream){this.inStream=inStream;inByteBuf=newbyte[8192];}publicLineReader(Readerreader){this.reader=reader;inCharBuf=newchar[8192];}byte[]inByteBuf;char[]inCharBuf;char[]lineBuf=newchar[1024];intinLimit=0;intinOff=0;InputStreaminStream;Readerreader;/***读取一行**@return*@throwsIOException*/intreadLine()throwsIOException{intlen=0;charc=0;booleanskipWhiteSpace=true;//空白booleanisCommentLine=false;//说明booleanisNewLine=true;//可否新行.booleanappendedLineBegin=false;//加至行开始booleanprecedingBackslash=false;//反斜杠booleanskipLF=false;while(true){if(inOff>=inLimit){//定数量的字节并将其储藏在缓冲区数组inCharBuf/inByteBuf中,这里

从输入流中读取一区分字节流和字符流inLimit=(inStream==null)?reader.read(inCharBuf)inStream.read(inByteBuf);inOff=0;//读取到的为空.if(inLimit<=0){if(len==0||isCommentLine){return-1;}returnlen;}}if(inStream!=null){//ISO8859-1来解码c=(char)(0xff&inByteBuf[inOff++]);}else{c=inCharBuf[inOff++];}if(skipLF){skipLF=false;if(c=='\n'){continue;}}if(skipWhiteSpace){if(c==''||c=='\t'||c=='\f'){continue;}if(!appendedLineBegin&&(c=='\r'||c=='\n')){continue;}skipWhiteSpace=false;appendedLineBegin=false;}if(isNewLine){isNewLine=false;if(c=='#'||c=='!'){//.isCommentLine=true;continue;}}//读取真切的属性内容if(c!='\n'&&c!='\r'){//这里近似于ArrayList的内容

.lineBuf[len++]=c;if(len==lineBuf.length){intnewLength=lineBuf.length*2;if(newLength<0){newLengthInteger.MAX_VALUE;}

=char[]buf=newchar[newLength];System.arraycopy(lineBuf,0,buf,0,lineBuf.length);lineBuf=buf;}if(c=='\\'){precedingBackslash=!precedingBackslash;}else{precedingBackslash=false;}}else{//reachedEOL文件结束if(isCommentLine||len==0){isCommentLine=false;isNewLine=true;skipWhiteSpace=true;len=0;continue;}if(inOff>=inLimit){inLimit=(inStream==null)?reader.read(inCharBuf)inStream.read(inByteBuf);inOff=0;if(inLimit<=0){returnlen;}}char[]buf=newchar[newLength];System.arraycopy(lineBuf,0,buf,0,lineBuf.length);lineBuf=buf;}if(c=='\\'){precedingBackslash=!precedingBackslash;}else{precedingBackslash=false;}}else{//reachedEOL文件结束if(isCommentLine||len==0){isCommentLine=false;isNewLine=true;skipWhiteSpace=true;len=0;continue;}if(inOff>=inLimit){inLimit=(inStream==null)?reader.read(inCharBuf):inStream.read(inByteBuf);inOff=0;if(inLimit<=0){returnlen;}}if(precedingBackslash){len-=1;skipWhiteSpace=true;appendedLineBegin=true;precedingBackslash=false;if(c=='\r'){skipLF=true;}}else{returnlen;}}}}}</SPAN>Java代码<SPANstyle="FONT-WEIGHT:normal">classLineReader{publicLineReader(InputStreaminStream){this.inStream=inStream;inByteBuf=newbyte[8192];}publicLineReader(Readerreader){this.reader=reader;inCharBuf=newchar[8192];

}byte[]inByteBuf;char[]inCharBuf;char[]lineBuf=newchar[1024];intinLimit=0;intinOff=0;InputStreaminStream;Readerreader;/**读取一行*@return@throwsIOException*/intreadLine()throwsIOException{intlen=0;charc=0;booleanskipWhiteSpace=true;//空白booleanisCommentLine=false;//说明booleanisNewLine=true;//可否新行.booleanappendedLineBegin=false;//加至行开始booleanprecedingBackslash=false;//反斜杠booleanskipLF=false;while(true){if(inOff>=inLimit){//从输入流中读取必然数量的字节并将其储藏在缓冲区数组inCharBuf/inByteBuf中,这里区分字节流和字符流inLimit=(inStream==null)?reader.read(inCharBuf):inStream.read(inByteBuf);inOff=0;//读取到的为空.if(inLimit<=0){if(len==0||isCommentLine){return-1;}returnlen;}}if(inStream!=null){//ISO8859-1来解码c=(char)(0xff&inByteBuf[inOff++]);}else{c=inCharBuf[inOff++];}if(skipLF){skipLF=false;if(c=='\n'){continue;}}if(skipWhiteSpace){if(c==''||c=='\t'||c=='\f'){continue;}if(!appendedLineBegin&&(c=='\r'||c=='\n')){continue;}skipWhiteSpace=false;appendedLineBegin=false;}if(isNewLine){isNewLine=false;if(c=='#'||c=='!'){//.isCommentLine=true;continue;}}//读取真切的属性内容if(c!='\n'&&c!='\r'){//这里近似于ArrayList的内容.lineBuf[len++]=c;if(len==lineBuf.length){intnewLength=lineBuf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论