阿里巴巴校园招聘面试试题合集总结doc

上传人:8****5 IP属地:山东 文档编号:230284683 上传时间:2022-11-30 格式:DOCX 页数:19 大小:533.46KB
收藏 版权申诉 举报
阿里巴巴校园招聘面试试题合集总结doc_第1页
第1页 / 共19页
阿里巴巴校园招聘面试试题合集总结doc_第2页
第2页 / 共19页
阿里巴巴校园招聘面试试题合集总结doc_第3页
第3页 / 共19页
阿里巴巴校园招聘面试试题合集总结doc_第4页
第4页 / 共19页
阿里巴巴校园招聘面试试题合集总结doc_第5页
第5页 / 共19页

《阿里巴巴校园招聘面试试题合集总结doc》

简介:

本资源由会员分享,可在线阅读,更多相关《阿里巴巴校园招聘面试试题合集总结doc(19页珍藏版)》请在人人文库网上搜索。

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2880490353     

copyright@ 2020-2023  renrendoc.com 人人文库版权所有   联系电话:18081923626

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!