阿里巴巴java電話面試整理_第1頁
阿里巴巴java電話面試整理_第2頁
阿里巴巴java電話面試整理_第3頁
阿里巴巴java電話面試整理_第4頁
阿里巴巴java電話面試整理_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、阿里巴巴筆試題整理 lstringbuffer 的實現方式,容量如何擴充 l 了解 jvm 啟動參數嗎?verbosexmsxmx 的意思是什么? l 垃圾收集,火車算法 ljava 中的內存溢出和 c中的內存溢出,是一個概念嗎? lclassloader 的功能和工作模式要點:1、jvm 在運行時會產生三個 classloader:bootstrapclassloader、extensionclassloader 和 appclassloader,他們之間存在父子關系。1、了解 classloader 采用雙親委托模型的方式加載 class,從而更好的保證 java 平臺的安全。在此模型下,

2、當一個裝載器被請求裝載某個類時,它首先委托自己的 parent 去裝載,若 parent 能裝載,則返回這個類所對應的 class 對象,若 parent 不能裝載,則由 parent 的請求者去裝載。 ljvmgc 如何判斷對象是否需要回收,有哪幾種方式? 引用計數,對象引用遍歷;jvm 有哪幾種垃圾 回收機制?講講分代回收機制 考察對垃圾回收機制的了解程度。 ljava 類靜態(tài)屬性:staticxxxnewyyy,jvm 什么時候生成 yyy 這個類的對象? 考察靜態(tài)屬性的加載時間,加載順序(可以擴展到靜態(tài)成員和類加載機制) 。答案:類加載的時候。 l 反射是否可以調用私有方法在框架中的運

3、用 l 面向對象的特征有哪些方面抽象:抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象并不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節(jié)。抽象包括兩個方面,一是過程抽象,二是數據抽象。繼承:繼承是一種聯結類的層次模型,并且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類子類,而原始類稱為新類的基類父類。派生類可以從它的基類那里繼承方法和實例變量,并且類可以修改或增加新的方法使之更適合特殊的需要。封裝:封裝是把過程和數據包圍起來,對數據的

4、訪問只能通過已定義的界面。面向對象計算始于這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口訪問其他對象。多態(tài)性:多態(tài)性是指允許不同類的對象對同一消息作出響應。多態(tài)性包括參數化多態(tài)性和包含多態(tài)性。多態(tài)性語言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢,很好的解決了應用程序函數同名問題。 lerror、exception 和 runtimeexception 的區(qū)別,作用又是什么?基本問題。error 表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說內存溢出。不可能指望程序能處理這樣的情況。exception 表示一種設計或實現問題。也就是說,它表示

5、如果程序運行正常,從不會發(fā)生的情況 lreader 和 inputstream 區(qū)別reader 用于讀入 16 位字符, 也就是 unicode 編碼的字符而 inputstream 用于讀入 ascii 字符和二進制數據。 l和 equals 的區(qū)別比的是 java 的基本類型,是考慮值是否相等;比對象的變量類型,引用是否是指向同一個引用;equals 比的是內容是否相等。 lstringsquotaaquotquotbbquot 編譯器會做什么優(yōu)化如果答對了,stringsquotaabbquot會繼續(xù)問 stringsquotaaquotbb/bb 也是個字符串 ,編譯器會做什么優(yōu)化處

6、理 jdk1.4 和 jdk1.5 分別是newstringbuffer.appendquotaaquot.appendbb.tostring/1.4newstringbuilder.appendquotaaquot.appendbb.tostring/1.5 ljava 有那些基本數據類型,string 是不是基本數據類型,他們有何區(qū)別。java 數據類型:基本數據類型內置類型;擴展數據類型java 基本類型八種:boolean、 char16bit、byte8bit 有符號、short16bit 有符號、int32bit 有符號、long64bit 有符號、float32bit、doubl

7、e64bit.java 里面整數長度固定,且沒有提供無符號整型。內置類型也稱作基本類型primitivetypes,是其他類型的基礎。所有的其他類型包括 java 核心庫和用戶自定義類型都是通過基本類型擴展而來的。 這些類型是我們描述對象最基本的方式。 比如:判斷是否使用 boolean;衡量大小、長度使用各種整型包括 shortintlong和浮點數float 和 double;表達字符使用 char;而處理二進制數據塊使用 byte。 lobject 類中有哪些方法 lhashcode 的作用 hashcode 有哪些算法 l 如果在 hashcode 中返回常量 1,會有什么結果?在 h

8、ashmap 中,所有這個類的對象都會互相出現 hash 沖突,從而使 hashmap 的查找性能降級為線性查找 lchar 型變量中能不能存貯一個中文漢字為什么 能,因為 java 在內部使用 utf8 l 字節(jié)流/字符流 lio 和 nio 本質不同在實際項目使用場景及如何使用主要考察 nio 使用場景 l 用過哪些集合類?能分別說下他們的應用場景嗎?主要考察集合這塊系統學習能力及實際應用習慣 l 列舉幾個 javacollection 類庫中的常用類, 對應算法arraylistlinkedlist 試簡述其類結構 常用集合類, hashmaphashtable lhashmap 和 h

9、ashtable 的區(qū)別。 llist、set、map 是否都繼承自 collection 接口?hashmap 中是否任何對象都可以做為 key用戶自定義 對象做為 key 有沒有什么要求?listset 繼承自 collection 接口;map 接口是一組成對的鍵值對象,map 中不能有重復的 key。擁有自己的內部排列機制;用戶自定義的類實例對象做為 key,主要考察應試者對 hashcode/equals的了解情況;arraylist 中的對象排序主要考察應試者對 collections 集合輔助類的應用熟練情況,如果不清楚 collections 中 sort的使用,回答通過遍歷可

10、實現,可以順著問些排序的算法。 l 一個 java 對象作為 map 的 key 時需要滿足的前提條件是什么?需要重載 equals 及 hashcode 方法,考查基本的 java 中的約定是否掌握。 l 什么是 java 序列化,如何實現 java 序列化?序列化就是一種用來處理對象流的機制,所謂對象流也就是將對象的內容進行流化??梢詫α骰蟮膶ο筮M行讀寫操作,也可將流化后的對象傳輸于網絡之間。序列化是為了解決在對對象流進行讀寫操作時所引發(fā)的問題。序列化的實現: 將需要被序列化的類實現 serializable 接口,該接口沒有需要實現的方法,implementsserializable只

11、是為了標注該對象是可被序列化的,然后使用一個輸出流如:fileoutputstream來構造一個objectoutputstream對象流對象,接著,使用 objectoutputstream 對象的 writeobjectobjectobj方法就可以將參數為 obj 的對象寫出即保存其狀態(tài),要恢復的話則用輸入流。 l 集合類型。常問如果集合中 key 值是自己定義的類,hashmap 該怎么處理,list 能怎樣方便的排序 linterface 和 abstratclass 的區(qū)別 llistmapset 的區(qū)別 l 多線程 同步的原理 l 如何停止一個線程?thread.setdeamon

12、的含義 l 多線程有幾種實現 同步和并發(fā)是如何解決的 什么叫守護線程,用什么方法實現守護線程 l 啟動一個線程是用 run還是 start l 解釋是一下什么是線程安全?舉例說明一個線程不安全的例子。解釋 synchronized 關鍵字的作用?;镜木€程安全問題,需要有線程安全的編程意識。 l 說出數據連接池的工作機制是什么解決什么問題 l 何時用覆蓋,何時用重載?構造器 constructor 是否可被覆蓋/重載?覆蓋是用來實現多態(tài);重載是用來使 api 更簡潔易懂。constructor 不可以被覆蓋,可以被重載。 l 假設 a 為一個基類, 和 a2 都繼承 a。 a1 能不能寫 ax

13、newa1?能不能寫 a1x1x?能不能寫 a2x2 x?axnewa1可以;a1x1x 需要加強制轉換才能編譯通過;a2x2x 需要加強制轉換才能編譯通過,但是運行期會拋出 classcastexception l 如果 a 和 b 對象循環(huán)引用,是否可以被 gc?可以。 l 了解過哪些 jdk5 的新特性,舉例描述下相應的特性? lxml 有哪些解析技術區(qū)別是什么答:有 domsaxstax 等dom: 處理大型文件時其性能下降的非常厲害。這個問題是由 dom 的樹結構所造成的,這種結構占用的內存較多,而且 dom 必須在解析文件之前把整個文檔裝入內存 適合對 xml 的隨機訪問 sax:

14、不現于 domsax 是事件驅動型的 xml 解析方式。它順序讀取 xml 文件,不需要一次全部裝載整個文件。當遇到像文件開頭,文檔結束, 或者標簽開頭與標簽結束時,它會觸發(fā)一個事件,用戶通過在其回調事件中寫入處理代碼來處理 xml文件,適合對 xml 的順序訪問stax:streamingapiforxmlstax l 知道范型的實現機制嗎? lsocket 編程通常出現的異常有哪些,什么情況下會出現 l 運行時異常與一般異常有何異同 ljava 異常大致分類并舉出相應異常類及在實際項目各層是如何處理異常的?考察異常設計及注意能力 l 解釋 java 中內存泄漏,并舉例說明考查 java 的

15、垃圾回收原理,區(qū)別于 c的內存泄漏,java 中主要是引用未被釋放造成。commentsmostrecent: 2009331 下午 5:23 作者: 馮春培 發(fā)表于: 2009331 下午 5:23 排序算法有哪些,優(yōu)缺點 簡介常用集合類,以及對應算法arraylistlinkedlisthashmaphashtable arraylist 數組 linkedlist 鏈表 hashmaphashtable 散列表 散列表的知識,碰撞如何解決? 鏈接法,開放尋址法 鏈接法,開放尋址法 散列函數,什么是好的散列函數? 減少碰撞 查找的平均時間復雜度 o1 散列函數,什么是好的散列函數 查找的平

16、均時間復雜度 二叉查找樹,查找的平均時間復雜度 和 oh 紅黑樹的特點 動態(tài)規(guī)劃和貪心算法的區(qū)別 字符串匹配算法,描述 kmp 最長公共字串,lcs 有限狀態(tài)機,fsm 遞歸算法的前提條件,如何優(yōu)化 出現重復性子問題。 一種優(yōu)化方法是保持中間結果,避免重復計算 collections.sort 如何使用,使用哪種排序算法? 優(yōu)化的快速 優(yōu)化的快速 框架 ampweb/applicationserver jboss 端口在哪個配置文件中修改 web 端口在 serverdefaultdeployjbosswebtomcat55.sar 的 server.xml 中 hibernate/ibati

17、s,兩者的區(qū)別,簡單的實現 ibatis 和 hibernate 框架,在性能調優(yōu)方面都各有什么方式? 主要考察框架更深層次的使用 hibernate: session.lock的含義,session.merge的含義,session.saveorupdate的含義,session.flush的含 義主要考察對 hibernate 二級緩存和臟數據檢查的了解hibernate 一級和二級緩存,使用 hibernate 實現集群部署,需要注意些什么考察緩存的理解和運用,hibernate 如何使用緩存,一級和二級緩存的作用域(session 的緩存和 sessionfactory的緩存),使用緩

18、存在分布式上有沒有考慮到數據及時性和一致性的問題。ibatis:sql 語句中用gt特殊符號,怎么辦structs,常問 structs 底層有幾個 servletstruts 框架,url 通常是.do 結尾,如何修改為.xy?利用 j2ee 那塊技術及原理是什么?主要考察基本配置掌握和配置基于的原理mvc 的概念 談一下自己最熟悉的 web 框架?要點:1、對框架的整體把握。2、對框架底層實現機制是否了解。spring 的核心理念是什么?spring 提供了哪兩種事物處理方式,采用了 java 的什么技術spring 提供了編程式事務處理和聲明式事務處理。spring 中的事務處理實際上就

19、是基于動態(tài)的 aop面向方面編程機制實現的。spring 在默認情況下會使用 java的動態(tài)代理機制,因為 java 的動態(tài)代理機制要求其代理的對象必須實現一個接口。并且在該接口中定義準備進行代理的方法。而對于沒有實現任何接口的 javabean,spring 是通過 cglib 來實現的。中心接口 :rg.springframework.transaction.platformtransactionmanager.編程式事務處理:transactiontemplate 能夠以編程的方式實現事務處理。聲明式事務處理:spring 對多種 orm 框架提供了很好的支持,結合事務管理描述在 spr

20、ing 中使用 hibernate 或 ibatis 的方法。springbean 生命周期當組合不同的?芷諢剖? 例如, 類層次中使用了不同的生命周期機制 開發(fā)者必須注意這些機制的應用順序,下面是初始化方法中的順序:postconstruct 元注釋initializingbean 的 afterpropertiesset定義自定義 init方法配置析構方法調用順序是相同的:predestroy 元注釋disposablebean 的 destroy定義自定義 destroy方法一般人會答 scope單例,多態(tài),sessionrequest 等這里會再問 spring 的單例和設計模式的單例

21、的區(qū)別,設計模式的單例怎么實現,注意什么(多線程)spring 屬性注入的實現一般人會回答通過反射get/set我問題的本意是問以下這個類圖的springaop 解決了什么問題,spring 如何實現 aop?主要了解應聘人員對 spring 原理的理解,對 aop 的理解,考察反射和 cglib 的了解。springbeanfactoryfactorybean 的區(qū)別spring 的事務管理 ,springbean 注入的幾種方式di 的幾種方式:接口注入、setter 方法注入、構造方法注入,可展開問下各種 di 的適用場景;第二點主要考察應試者對 springaop 是否真正研究并使用過

22、,由于具體的聲明式事務配置細節(jié)可能記不下來,只要能描述出主要的配置情況和命名匹配規(guī)則,事務屬性的了解即可,也可以根據情況順便問些動態(tài)代理相關的問題;j2ee 采用什么技術實現分布式事務,如何實現,講講原理,為什么需要兩階段提交,能解決哪些問題,哪些問題不能解決。jms 的模式兩種模式apache,tomcat 和 weblogic 的最根本區(qū)別jboss 端口在哪個配置文件中修改數據庫oracle 三層分頁實現sql 注入原理 樂觀鎖,悲觀鎖 數據庫操作的性能瓶頸通常在哪里1000 萬級別訪問,在數據庫和 java 程序上考慮哪些來進行性能優(yōu)化jdbc 中, batchsizefetchsiz

23、e 的使用batchsize 更新的數量fetchsize 一次從數據庫取的數量jdbc 中,statementpreparedstatementcallablestatement 的區(qū)別是什么statement 接口提供了執(zhí)行語句和獲取結果的基本方法。preparedstatement 接口添加了處理 in 參數的方法;preparedstatement:對于同一條語句的多次執(zhí)行statement 每次都要把 sql 語句發(fā)送給數據庫這樣做效率明顯不高而如果數據庫支持預編譯preparedstatement 可以先把要執(zhí)行的語句一次發(fā)給它然后每次執(zhí)行而不必發(fā)送相同的語句效率當然提高當然如果數

24、據庫不支持預編譯preparedstatement 會象 statement 一樣工作只是效率不高而不需要用戶工手干預.另外 preparedstatement 還支持接收參數.在預編譯后只要傳輸不同的參數就可以執(zhí)行大大提高了性能.防止 sql 注入 數據庫數據文件和索引為什么需要收縮,如何實現收縮 性能方面。多數結合多線程、同步來問,以提取一張大表數據來作為例子 解決性能的方法 用 jdbc 定義一個帶事務性的數據庫操作主要步驟是什么?數據庫的事務特性 acid 是怎么理解的?項目中數據庫設計時范式是怎么考慮的,主要步驟:通過驅動器管理器獲取連接接口。獲得 statement 或它的子類。設

25、置 statement 中的參數。執(zhí)行 statement。關閉 statement。關閉連接接口可以再問一些批處理的問題,statement/preparestatement 的區(qū)別等等.acid:原子性atomicity、一致性consistency、隔離性isolation、持久性durability;范式和表關聯主要是了解下應試者是否在項目中做過設計;有很多應試者確實對表關聯不清楚 表關聯時,內連接,左連接,右連接怎么理解?web 開發(fā)js 中的原型ajax 感受,有什么缺點?你使用的是 ajax 的那種框架?ajax 如何解決跨域問題 談一下 servlet 的生命周期,是否有線程安

26、全問題,如何解決?答案:過程:1、servlet 容器負責加載和實例化 servlet,servlet 服務器啟動時或者第一次接收 servlet 請求時。2、在 servlet 實例化之后,容器將調用 servlet 的 init方法初始化這個對象。3、servlet 容器調用 servlet 的 service方法對請求進行處理。4、當需要釋放內存或者容器關閉時,容器就會調用 servlet 實例的 destroy方法。在 destroy方法調用之后,容器會釋放這個 servlet 實例,該實例隨后會被 java 的垃圾收集器所回收。要點:1、過程描述清楚。2、清楚 servlet 在容器

27、中是單實例的即 servlet 是線程不安全的,不允許在 servlet 中定義全局的類對象。javaservletapi 中 forward 與 redirect的區(qū)別前者僅是容器中控制權的轉向,在客戶端瀏覽器地址欄中不會顯示出轉向后的地址后者則是完全的跳轉,瀏覽器將會得到跳轉的地址,并重新發(fā)送請求鏈接。這樣,從瀏覽器的地址欄中可以看到跳轉后的鏈接地址。所以,前者更加高效,在前者可以滿足需要時,盡量使用 forward方法,并且,這樣也有助于隱藏實際的鏈接。在有些情況下,比如,需要跳轉到一個其它服務器上的資源,則必須使用 sendredirect方法 解釋 xss、xsrf,及舉例說明??疾?/p>

28、是否對客戶端 web 技術有了解,重要的是是否有安全意識。http 請求中 session 實現原理?如果客戶端禁止 cookie 能實現 session 嗎?考查會話 cookie 及 session 實現的基本原理,對 http 協議了解理程度。httpget 和 post 區(qū)別考查是否對基本 http 協議有所了解。get 和 post 提交數據方式不一樣:get 請求提交數據有限,通過在 url 中添加參數方式傳送數據。post 請求除了有 get 請求一樣的能力外, post 請求還可能通過發(fā)送請求是附加數據的方式傳送文本或二進制數據 在 web 開發(fā)中, redirect 與 fo

29、rward 做跳轉有什么區(qū)別?web 應用服務器對用戶請求通常返回一些狀態(tài)碼, 用請描述下分別以 4 和 5 開頭的狀態(tài)碼forwardredirect 是 web 頁面的兩種不同的路由關系,貌似相同,但還是有許多差別的,一、forward 由 javax.servlet.requestdispatcher 來封裝由包容器 container 提供 requestdispatcher 接口的實現二、redirect 由 httpservletresponse.sendredirectstringlocation來支持差別:兩種都可以對用戶的 request 進行轉發(fā),但是還是有許多的不同,差別最主要集中在如下幾個方面:1、forward 共亨 request 范圍內的對象而 redirect 則不行,即:如果一個 javabean 被聲明為 request 范圍的話,則被 forward 到的資源也可以訪問這個 javabean而 redriect 則不行。2、forward 與 include 基本上都是轉發(fā)到 context 內部的資源,而 redirect 可以重定向到外部的資源如:req.sendredriectquotquo

溫馨提示

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

評論

0/150

提交評論