面試寶典java基礎(chǔ)-常見問題匯總_第1頁
面試寶典java基礎(chǔ)-常見問題匯總_第2頁
面試寶典java基礎(chǔ)-常見問題匯總_第3頁
面試寶典java基礎(chǔ)-常見問題匯總_第4頁
面試寶典java基礎(chǔ)-常見問題匯總_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

·23期學(xué)員以3年工作經(jīng)驗(yàn)出去面試mysql5sql(sql語句limitMySQL的limit給分頁帶來了極大的方便,但數(shù)據(jù)量一大的時(shí)limit的性能就急劇下降。同樣是取10條數(shù)據(jù),下面兩句就不是一個(gè)數(shù)量級別的。1select*fromtablelimit2select*fromtablelimit 4、redismysql1、Redis中的事務(wù)(transaction)Redis最小的執(zhí)行單位,一個(gè)事務(wù)中令要么都執(zhí)行,要么都不執(zhí)行。Redis事務(wù)的實(shí)現(xiàn)需要用MULTIEXECRedisMULTI命令,然后依次發(fā)送需要在本次事務(wù)中處理令,最后再發(fā)送EXEC命令表示事務(wù)命令結(jié)束。首先要知道zookeeper。zookeeper是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟Hadoop項(xiàng)目中的一個(gè)子項(xiàng)目!集中式的配置管理在應(yīng)用集群中是非常常見的,一般商業(yè)公司都會(huì)實(shí)現(xiàn)一套集中的Zookeeper很容易實(shí)現(xiàn)這種集中式的配置管理,比如將APP1的所有配置配置到/APP1znode下,APP1所有機(jī)器一啟動(dòng)就對/APP1這個(gè)節(jié)點(diǎn)進(jìn)行(zk.exist("/APP1",true)),并Watcher每個(gè)機(jī)器都會(huì)收到通知,Watcher方法將會(huì)被執(zhí)行,那么應(yīng)用再取下數(shù)據(jù)即可 /APP1SERVERS,那么集群中每一個(gè)機(jī)器啟動(dòng)的時(shí)候都去這個(gè)節(jié)點(diǎn)下創(chuàng)建一個(gè)EPHEMERALserver1創(chuàng)建/APP1SERVERS/SERVER1(ip,保證不重復(fù)),server2/APP1SERVERS/SERVER2,然后SERVER1和SERVER2都watch/APP1SERVERS這個(gè)父節(jié)點(diǎn),那么也就是這個(gè)父節(jié)點(diǎn)下數(shù)據(jù)或者子節(jié)點(diǎn)變化都會(huì)通知對該的時(shí)候,其對應(yīng)的節(jié)點(diǎn)就會(huì),然后集群中所有對/APP1SERVERS進(jìn)行watch的客戶端另外有一個(gè)應(yīng)用場景就是集群選master,一旦master掛掉能夠馬上能從slave中選出一型變?yōu)镋PHEMERAL_SEQUENTIAL類型,這樣每個(gè)節(jié)點(diǎn)會(huì)自動(dòng)被,默認(rèn)規(guī)定最小的為master,所以當(dāng)對/APP1SERVERS節(jié)點(diǎn)做的時(shí)候,得出,而這個(gè)master宕機(jī)的時(shí)候,相應(yīng)的znode會(huì),然后新的服務(wù)器列表就被推送到客戶端,然后每個(gè)節(jié)點(diǎn)邏輯認(rèn)為最小節(jié)點(diǎn)為master,這樣就做到動(dòng)態(tài)master6publicclassSingleton1{privatestaticfinalSingleton1single=newpublicstaticSingleton1getInstance(){returnsingle;}}publicpublicclassSingleton2publicsynchronized staticSingleton2getInstance(){if(single==null){single=new}return}}importimportimport//SpringpublicclassSingleton3privatestaticMap<String,Singleton3>map=newHashMap<String,Singleton3>();Singleton3single=newSingleton3();map.put(single.getClass().getName(),single);}publicstaticSingleton3getInstance(Stringname)if(nameif(name==null)name=}if(map.get(name)==null){try{}catch(InstantiationExceptione){}catch(IllegalAccessExceptione){}catch(ClassNotFoundExceptione){}}return}publicStringabout(){return"o,Iam}publicstaticvoidmain(String[]args)Singleton3single3=Singleton3.getInstance(null);}}mavenMaven類描在生成過執(zhí)行,并在pom.xml中的<build/>元素進(jìn)行配在生成期間執(zhí)行,在pom.xml中的<reporting/>元素進(jìn)行配插描Java運(yùn)行JUnitJAR從當(dāng)前項(xiàng)目構(gòu)建WARAntmaven如何處理依賴的問題maven解決maven傳遞依m(xù)aven-project-info-reports-plugin如果用的是eclipserunas-build-Goalssite文件夾,里邊有個(gè)dependency.html,進(jìn)去就能看到詳細(xì)的依賴的信息?;蛘咧苯釉趀clipse中打開pom.xml文件這個(gè)選擇卡頁面左半部分顯示了詳細(xì)的jar包依賴樹右半部分則是maven將會(huì)的jar包。比如看到右半部分有2個(gè)asm的jar,版本不同。jar(xwork-corejarasm版本相對較低,不一定說是xwork-coreasm都是可以的)當(dāng)然也可以在dependencyhie開頭的選項(xiàng)卡中右半部分直接選中那個(gè)低版本的asm.jar。然后右鍵excludemaven...點(diǎn)擊確定會(huì)自動(dòng)生成上面的。mavenA依賴于B,BC,CA,造成一種環(huán)路,這樣的話會(huì)失敗。假設(shè)依賴AB,D也依賴于B,Bpom中有2個(gè)版本B1,B2(有可能是直接依賴,也有可能是間接依賴,那么maven會(huì)通過以下機(jī)制引入依賴:如果A直接依賴于B1,A-B1,D間接依賴于B2,例如D-C-B2,那么maven會(huì)有優(yōu)先選B1B2B1,B2都是間接依賴,例如A-C-B1,D-C-B2Bpom文件中優(yōu)先依賴了,A-C-B1pomD-C-B2B1.1靜態(tài)化的頁面為.html(.htm等)web服務(wù)freemarkVelocity等。2、fastDFS服務(wù)器將系統(tǒng)的web服務(wù)器、數(shù)據(jù)庫服務(wù)器、和文件服務(wù)器分開,通過將服務(wù)器專業(yè)化分工,以提高速度。因?yàn)楹臀募诘臅r(shí)候無論是IIS、Apache等服務(wù)器3、數(shù)據(jù)緩存服務(wù)器 商和地域帶來的用戶速度差異,比如ChinaNet和EduNet之間的差異就促使了很多網(wǎng)Linuxrsync等工具。6、負(fù)載均衡7、:CDN加速技術(shù)(這個(gè)比鏡像更好用CDN?CDNInternet中增加一層新的網(wǎng)絡(luò)架構(gòu),將的內(nèi)容發(fā)布到最接近用戶的網(wǎng)絡(luò)“邊緣”,使用戶可以nginx如果redis位節(jié)點(diǎn)中存入的大量數(shù)(十萬條當(dāng)添加新數(shù)據(jù)時(shí),是否也要?jiǎng)h掉十萬對應(yīng)的key?是否有其他解決方案保證能redis中數(shù)據(jù)是的?Redis的作用:1、Redisk/vlist,set,zset,hash等數(shù)據(jù)結(jié)構(gòu)的。、Redis支持?jǐn)?shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保持在磁盤中,重啟RedisSortedsetactivemqActiveMQSessionsession=mit操作,則表明,當(dāng)前事務(wù)期間內(nèi)所發(fā)送的消息都取消掉。此時(shí)無論commit或rollback,會(huì)commit“thisisadog)文檔一:Studentsshouldbeallowedtogooutwiththeirfriendsbutnotallowedtodrinkbeer.文檔二:MyfriendJerrywenttoschooltoseehisstudentsbutfoundthemwhichisnot去除停詞(stop所謂停詞(Stopword)就是一種語言中沒有具體含義,因而大多數(shù)情況下不會(huì)作為搜索的關(guān)theathis語言處理組件(linguisticprocessor)主要是對得到的詞元(Token)做一些語言相關(guān)的處理。對于英語,語言處理組件(LinguisticProcessor)一般做以下幾點(diǎn):語言處理組件(linguisticprocessor)處理得到的結(jié)果稱為詞(Term),例子中經(jīng)過語言處理drivedroveStemming和Stemminglemmatizationcars”到”cardriving”到”drivedrovedroedriingdrivese”變?yōu)椤盿te”變?yōu)椤眛iondrive”drove”到”drive”am,is,are”到”be”的 Stemminglemmatization111111112 11211221212222221212對詞(Term)“allow”來講,總共有兩篇文檔包含此詞(Term),詞(Term)后面的文檔鏈1ive”iviroveiveivioviveiveivi doesagoodjobatsoftwareindustry…”,這就與用戶的期望偏離太遠(yuǎn)了。 janpanandenglish”和” (scoring),分?jǐn)?shù)高比較越相關(guān),就越靠前。當(dāng)然還可以人工影響打分,比如搜索,就不一定完全按照相關(guān)性來的。“toturial”,不同的詞可能重要性不一樣,比如solr就比toturial重要,如果一個(gè)文檔出現(xiàn)了10toturial,但只出現(xiàn)了一次solr,而另一文檔solr出現(xiàn)了4次,toturial次,那么后者很有可能就是想要的搜的結(jié)果。這就引申出權(quán)重SpaceModel)Fequencey(tf,ermFrequency(df物以貴,大家都有的東西,自然就不那么貴重了,只有你專有的東西表示這個(gè)東西很珍空間向量模={term1,term2,……,termN}Vector={weight1,weight2,……,weightN}Query={term1,term2,……,termQueryVector={weight1,weight2,……,weight補(bǔ)充:Lucene:/guochunguang/articles/3641008.html/guochunguang/articles/3641008.htmlhttp的三次握手?socket有幾種狀態(tài)?sockethttp 位碼即tcp標(biāo)志位,有6種標(biāo)示:SYN(synchronous建立聯(lián)機(jī))ACK(acknowledgement確認(rèn))PSH(push傳送)FIN(finish結(jié)束)RST(reset重置)URG(urgent緊急))S(ack=j+1(syn=ksocket 沒有使用這個(gè)套接 ESTABLISHED連接已建立 套接字已經(jīng)關(guān)閉:正在等待關(guān)閉這個(gè)套接FIN_WAIT_1套接字已關(guān)閉,正在關(guān)閉連 FIN_WAIT_2套接字已關(guān)閉,正在等待 TIME_WAIT這個(gè)套接字已經(jīng)關(guān)閉,正在等 套接字的關(guān)閉傳socket底層編程(這個(gè)可以不用了解httphttp是網(wǎng)絡(luò)上層協(xié)議。底層還是socket短連接是發(fā)送數(shù)據(jù)時(shí)進(jìn)行聯(lián)接。發(fā)送完關(guān)閉( ip網(wǎng)絡(luò)中,傳輸層主要協(xié)議是:tcpudpweb中,httpio中,目前主要有:bio(阻塞)、nio(非阻塞)、aio(jdk7中新特性)。具體不作解RMI(java原生的)javaxml-rpcBinary-RPC用二進(jìn)制+httpsoapxml-rpc的一種封裝COBRA,jdk中activeMQ:jms的一種實(shí)現(xiàn)mina:nio.ApacheMINAisanetworkapplicationframeworkwhichhelpsusersdevelophighperformanceandhighscalabilitynetworkapplicationseasily。Itprovides·event-driven·asynchronousAPIovervarioustransportssuchasTCP/IPandUDP/IPviaJavaNIO.Hessian:Hessianremotingonhttp工具.RPC協(xié)議,因?yàn)椴捎肂urlap:Hessian差不多,xml-RPCmuleesb:spring-RemotingJboss-Remoting其他學(xué)員的面試問題匯總1、hibernatemybatis的異同之處SqlmybatisXMLsqljava對象和sql語句生成最終執(zhí)行的sql,最后將sql執(zhí)行的結(jié)果再生成java對象。Mybatissqlsql執(zhí)行性能,靈活度高,非常適合對關(guān)系數(shù)據(jù)模型要求不高的開發(fā),例如互聯(lián)網(wǎng)、企業(yè)運(yùn)營類軟件等,因?yàn)檫@類需求變化頻繁,一但需求變化要求成果輸出迅速。但是靈活的前提是mybatis無法做到數(shù)據(jù)庫無關(guān)性如果需要實(shí)現(xiàn)支持多種數(shù)據(jù)庫的則需要自定義多套sql的缺點(diǎn)是學(xué)習(xí)門檻高,要精通門檻更高,而且怎么設(shè)計(jì)O/R,在性能和對象模型之間Hibernate需要具有很強(qiáng)的經(jīng)驗(yàn)和能力才行。2app訂閱業(yè)務(wù),使用什么設(shè)計(jì)模式實(shí)現(xiàn)?應(yīng)用場景是模式,讓多個(gè)觀察者同時(shí)某一個(gè)對象。這個(gè)對象在狀態(tài)發(fā)生變化時(shí),會(huì)通知3、springmvc如何一個(gè)controller?注如果不基于注解:該類需要繼承CommandController或者其他很多參見spring幫助如果基于注解:在類名前加上 spring啟動(dòng)或者web服務(wù)啟動(dòng)spring會(huì)自動(dòng)掃描所有作用:就是告訴服務(wù)器這個(gè)類是MVC中的 這個(gè)類可以接收用戶請求處理用5、怎么事物?在spring配置文件spring支持編程式事務(wù)管理和式事務(wù)管理兩種方式編程式事務(wù)管理使用TrsctoTempte或者直接使用底層的PtformTrctongerprg使用TrnctoTempte。式事務(wù)管理建立在AP之上的。其本質(zhì)是對方法前后進(jìn)行,然后在目標(biāo)方法開始之前創(chuàng)建或者加入一個(gè)事務(wù),在執(zhí)行完目標(biāo)方法之后根據(jù)執(zhí)行情況提交或者回滾事務(wù)。式事務(wù)最大的優(yōu)點(diǎn)就是不需要通過編程的方式管理事務(wù),這樣就不需要在業(yè)務(wù)邏輯代碼中摻雜事務(wù)管理的代碼,只需在配置文件中做相關(guān)的事務(wù)規(guī)則(或通過基于@Transactional注解的,顯然式事務(wù)管理要優(yōu)于編程式事務(wù)管理,這正是prg倡導(dǎo)的非侵入式的開發(fā)方式。式事務(wù)管理使業(yè)務(wù)代碼不受污染一個(gè)普通的PO對象只要加上注解就可以獲得完全的事務(wù)支持和編程式事務(wù)相比式事務(wù)唯一不足地方是,后者的最細(xì)粒度只能作用到方法級別,無法做到像編程式事務(wù)那樣可以作用到代碼塊級別。但是即便有這樣的需求,也存在很,多變通的方法,比如,可以將需要進(jìn)行事務(wù)管理的代碼塊獨(dú)立為方tx和op名字空間的xmlTrnctol注解。顯然基于注解的方式更簡單易用,更清爽。7Ik把項(xiàng)目打成war面試問題分類一、JavaString類為final的session JavaGCJava內(nèi)存的問題定位:jmap,jstack的使用等struts1struts2Struts1Action類要擴(kuò)展自一個(gè)抽象基類。Struts1的一個(gè)共有的問題是面向抽象類Struts2的Action類實(shí)現(xiàn)了一個(gè)Action接口,連同其他接口一起實(shí)現(xiàn)可選擇和自定義的服務(wù)。Struts2提供一個(gè)名叫ActionSupport的基類實(shí)現(xiàn)一般使用的接口。雖然,Action接口不是必須的。任何使用execute方法的POJO對象可以被當(dāng)作Struts2Action對象Struts1Action類是單例類,因只有一個(gè)示例控制所有的請求。單例類策略造成了一定的限制且給開發(fā)帶來了額外的煩惱。Action資源必須是程安全或者同步的。Struts2Action對象每一個(gè)請求都實(shí)例化對象,所以沒有程安全的問題(實(shí)踐中,servlet容器生許多丟的對象對于每一個(gè)請求,多于一個(gè)的對象并不影響 Servlet依賴Struts1的Action類依賴于servletAPI以HttpServletRequestStruts2的Action不和容器有關(guān)。Servlet上下文被表現(xiàn)簡單的Maps,允許Action被獨(dú)立的測試。Struts2的Action可以 HttpServletRequest或者HttpServletResponse的需要。測試Struts1的主要 是execute方法 了ServletAPI。第 測試用例,提供Struts1的集合對象。Struts2ActionAction測試,設(shè)置屬性,然后調(diào)用方法。依賴注入Struts1使用ActionForm對象捕獲輸入。象Action一樣,所有的ActionForm必須擴(kuò)JavaBeanActionForm使用,開發(fā)者經(jīng)常創(chuàng)建多余的類捕獲輸入。DynaBeansActionFormStruts2Action屬性作輸入屬性,排除第二個(gè)輸入對象的需要。輸入屬性可能有豐富的對象類型這些類型有他們自己的屬性。Action的屬性可以通過庫。Struts2也支持對POJO。(類可以有不同的驗(yàn)證上下文未相同的類,但是不能不能包括驗(yàn)證子對象。Struts2支持手動(dòng)驗(yàn)證憑借validate方法和XWork驗(yàn)證框架。Xwork驗(yàn)證框架支持一連 Struts1Action必須共享 struts2springMVC是一個(gè)servlet即前端控制器,而是一個(gè)③Struts采用值棧 spring框架中需要哪些jar包,以及這些jar包的用Spring3.Xjar2.Xspring.jarosgi.springframework.asm-asmJar3.0.6.springframework.aspects-SpringAspectJSpringIoC(依賴注入)的基Spring-contextMVC方面Spring提供在基礎(chǔ)IoC功能的擴(kuò)展服務(wù),此外還提供許Spring3.0.6的工具Spring3.0.6TomcatJMSAPI整合第的ORM框架,如springJPASpringObject/XMlJavaXMLJunit做Spring還必須依賴第包Springcommons-logging-1[1].0.4.jar(只要是做Spring都需要這個(gè)包,否則工程起不來②使用SpringAOP功能時(shí)依賴的包 )commons-dbcp.jar(: commons-pool.jar(: srMVC的原 其與業(yè)務(wù)層、持久化層的WebApplicationContext建立關(guān)聯(lián)。springMVC@Controllerbeanspring上下文中,beanID 用來定 的URL,你可以為整個(gè)類定義一 把 publicclassTestController{} value:String[]設(shè)置 headers:Stringheaders一般結(jié)合methodRequestMethod.POSTparams: value的配置還可以采用模版變量的形式,例如:@RequestMap(value="/owners/{ownerIdmethod=RequestMethod.GET),這點(diǎn)將在介紹@PathVariable中詳細(xì)說明。 params的補(bǔ)充說明,你可以通過設(shè)置參數(shù)條件來限制 Java publicclass Controller{ (params="method=getList")publicStringgetList(){return} (value="/spList")publicStringgetSpecialList(){return}} .do?method=getList可以 到方法getList();而訪 .do/spList則會(huì)報(bào)錯(cuò).@PathVariable用于方法中的參數(shù),表示方法參數(shù)綁定到地址URLJava代碼 model)Ownerowner=ownerService.findOwner(ownerId);model.addAttribute("owner",owner);return} 沒有定義類似"/{ownerId}",這種變量,則使用在方法中@PathVariable會(huì)報(bào)錯(cuò)。int,String不起作用JavapublicList<String>populateItems(){List<String>lists=newArrayList<String>();returnlists;} (params=ModelMapmodel){ return"listBoard";}@ModelAttribute注解,populateItem()任何請求處理方法執(zhí)行前調(diào)用,SpringMVC會(huì)將該方法返回值以所以在②處, 就可以通過ModelMap入?yún)?到items屬性,當(dāng)執(zhí)行l(wèi)istAllBoard()請求處理方法時(shí),②處將在控制臺打印 對象中的items屬性。這個(gè)注解可以直接放在方法上,表示返回類型將會(huì)直接作為HTTP響應(yīng)字節(jié)流輸出(不被放置在Model,也不被 為視圖頁面名稱)。可以用于ajax。)URLid,URL.springframework.web.util.NestedServletException異常,提示無法將null轉(zhuǎn)換為基本數(shù)據(jù)類型.@RequestParam3@RequestParam(required:value:傳遞的參數(shù)名稱,String類型,Spring允 有選擇地指定ModelMap中的哪些屬性需要轉(zhuǎn)存sessionsessionModelMap@SessionAttributes實(shí)現(xiàn)的。@SessionAttributes@SessionAttributes("currUser將ModelMapcurrUser@SessionA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論