java實習(xí)生的有關(guān)面試題
java實習(xí)生的有關(guān)面試題
Java常見的數(shù)據(jù)結(jié)構(gòu)有Collection和Map,其中Collection接口下包括List和Set接口,下面就由學(xué)習(xí)啦小編為大家介紹一下java實習(xí)生的有關(guān)面試題的文章,歡迎閱讀。
java實習(xí)生的有關(guān)面試題篇1
java的數(shù)據(jù)結(jié)構(gòu)你用過那些?map與set的本質(zhì)區(qū)別是什么
數(shù)據(jù)結(jié)構(gòu):是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。
依據(jù)邏輯關(guān)系,數(shù)據(jù)結(jié)構(gòu)分為:線性和非線性數(shù)據(jù)結(jié)構(gòu)。
java中常見的數(shù)據(jù)結(jié)構(gòu)有:
(1)數(shù)組
(2)集合類——Collection(list(ArrayList,LinkedList),set(HashSet))
List 是鏈表(接口),是可以允許出現(xiàn)重復(fù)值的。它的具體實現(xiàn)類:ArrayList和LinkedList
set 是集合(接口),不允許出現(xiàn)重復(fù)值。它的具體實現(xiàn)類HashMap
ArrayList 實現(xiàn)鏈表的內(nèi)部結(jié)構(gòu)是用數(shù)組(Array)。查找高效,修改低效
LinkedList 實現(xiàn)鏈表的內(nèi)部結(jié)構(gòu)是鏈表(Linked)。查找低效,修改高效
set是集合(接口),不允許出現(xiàn)重復(fù)值
Iterator迭代器
簡介:java提供的迭代器接口進(jìn)行java collection的遍歷。Iterator模式是用于遍歷類的標(biāo)準(zhǔn)訪問方法
所有的繼承Coollection的集合類子類,都有Iterator()方法用于反饋迭代器,程序額可以獲取這個迭代器對象對Collection對象中的元素進(jìn)行遍歷。
(3)鍵值對容器 ——Map
Map是一種把鍵對象和值對象進(jìn)行關(guān)聯(lián)的容器
指出:像set一樣,一個Map容器中的鍵對象不允許重復(fù),這是為了保證查找結(jié)果的一致性。
Map與Set的區(qū)別
Map是用來存放鍵值對的,需要轉(zhuǎn)成set由迭代器進(jìn)行遍歷!(加強(qiáng)for循環(huán)除外)
Map m=new Map();
Set s=m.keySet()
Set是無序而且不可用重復(fù)的!
java實習(xí)生的有關(guān)面試題篇2
Map與Set的本質(zhì)區(qū)別有:Set不能包含重復(fù)的元素,最多有一個空值,繼承自Collection接口,底層是Map實現(xiàn)機(jī)制。Map不能包含重復(fù)的鍵,每個鍵最多對應(yīng)一個映射的值,不能有空值鍵。兩接口提供的方法不完全一樣。
Java常見的數(shù)據(jù)結(jié)構(gòu)有Collection和Map,其中Collection接口下包括List和Set接口,其下又有多個實現(xiàn)類如List下有ArrayList、LinkedList和Vector等實現(xiàn)類,Set下有HashSet、LinkedSet等實現(xiàn)類和SortedSet接口,HashSet下有LinkedHashSet子類,SortedSet接口下有TreeSet實現(xiàn)類。Map接口下有HashMap(有LinkedHashMap子類)、HashTable(有Properties子類)實現(xiàn)類和SortedMap接口(有TreeMap實現(xiàn)類)。
JAVA的數(shù)據(jù)結(jié)構(gòu)主要有List、Set、Map、ArrayList、HashSet、HashMap、Properties等。
Spring整合ORM框架時,事務(wù)管理用哪些類?是Spring控制事物的提交還是ORM框架控制?同一事物中執(zhí)行兩個更新操作,它的工作原理是怎么樣的
Spring整合ORM框架時事務(wù)管理用的是相應(yīng)ORM框架的事務(wù)管理器類如Hibernate對應(yīng)于 HibernateTransactionManager,JPA對應(yīng)于JpaTransactionManager等。
整合過后可配置由Spring控制事務(wù)的提交。
事務(wù)提交前執(zhí)行兩個更新操作。其工作原理是采用AOP編程的原理來進(jìn)行控制。
Spring整合ORM框架時事務(wù)管理用的是相應(yīng)ORM框架的事務(wù)管理器類如Hibernate對應(yīng)于HibernateTransactionManager,JPA對應(yīng)于JpaTransactionManager等。整合過后可配置由Spring控制事務(wù)的提交。事務(wù)提交前執(zhí)行兩個更新操作。其工作原理是采用AOP編程的原理來進(jìn)行控制。
Http協(xié)議你了解嗎?文件上傳時,進(jìn)度條的設(shè)計原理是什么
超文本傳送協(xié)議 (hypertext transport protocol)
一種詳細(xì)規(guī)定了瀏覽器和萬維網(wǎng)服務(wù)器之間互相通信的規(guī)則,通過因特網(wǎng)傳送萬維網(wǎng)文檔的數(shù)據(jù)傳送協(xié)議。
HTTP工作在TCP/IP協(xié)議體系中的TCP協(xié)議上。
客戶機(jī)和服務(wù)器必須都支持 HTTP,才能在萬維網(wǎng)上發(fā)送和接收 HTML 文檔并進(jìn)行交互。
HTTP是一個屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議,由于其簡捷、快速的方式,適用于分布式超媒體信息系統(tǒng)。
HTTP主要特點:簡單快速 靈活 無連接 無狀態(tài)
一般來說,上傳也好,下載也好,都要用到JavaI/O。 而計算進(jìn)度的原理,不就是已經(jīng)傳輸?shù)拇笮∨c總大小的比值嘛。 這樣就簡單了,就拿最基本的OutputStream來說,它的基本的寫出方法為 void write(byte[] b) ,實際上寫出的過程不就是通過InputStream循環(huán)讀,然后OutputStream循環(huán)寫嘛。 你只要事先通過File類取得文件的總大小,然后在讀入或?qū)懗龅难h(huán)里加一個簡單的進(jìn)度計算的步驟,每讀取或?qū)懗鲆淮?,就將已傳輸大小增加b.length,求出比值,更新進(jìn)度條。具體的計算間隔,可以根據(jù)循環(huán)次數(shù)或時間間隔來定。 編碼上,估計要用到I/O流,F(xiàn)ile,Socket以及Thread。 因為你是使用fileupload插件,所以最好查看一下它的實現(xiàn)代碼,已決定如何將進(jìn)度功能加入其中。
Http協(xié)議即超文本傳輸協(xié)議,屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議。它支持客戶/服務(wù)器模式,簡單快速、靈活、無連接和無狀態(tài)。http請求由請求行、消息報頭、請求正文組成,http響應(yīng)由狀態(tài)行、消息報頭和響應(yīng)正文組成。
文件上傳時進(jìn)度條的設(shè)計原理:在java中主要用到I/O原理,已上傳的數(shù)據(jù)值除以文件總大小的比值即實時進(jìn)度的值。通過File類獲取文件的總大小,在讀取或?qū)懗鑫募r加一個進(jìn)度計算的步驟,每讀取或?qū)懗鲆淮尉陀嬎氵M(jìn)度值,更新進(jìn)度條。
查詢一個字段值有重復(fù)的表,要去除重復(fù)項,SQL語句怎么寫
select distinct xx,xx,xx from xxx
java中的Annotation的工作原理是什么
一個 annotation類型被定義為runtime retention后,它才是在運行時可見,當(dāng)class文件被裝載時被保存在class文件中的annotation才會被虛擬機(jī)讀取
Annotation提供一種機(jī)制,將程序的元素如:類,方法,屬性,參數(shù),本地變量,包和元數(shù)據(jù)聯(lián)系起來。這樣編譯器可以將元數(shù)據(jù)存儲在Class文件中。這樣虛擬機(jī)和其它對象可以根據(jù)這些元數(shù)據(jù)來決定如何使用這些程序元素或改變它們的行為。
分層架構(gòu)中,Dao層的作用是什么?如果不要DAo層,能不能實現(xiàn)DAO層時的優(yōu)點
Dao層又叫數(shù)據(jù)訪問對象層, 封裝數(shù)據(jù)庫的底層操作細(xì)節(jié)如數(shù)據(jù)庫的連接及對數(shù)據(jù)的CRUD等操作,它不但屏蔽了數(shù)據(jù)存儲最終介質(zhì)的不同,也屏蔽了具體實現(xiàn)技術(shù)的不同。一般在其上還會有Service層來封裝業(yè)務(wù)操作進(jìn)行進(jìn)一步的解耦。不用DAO層也能實現(xiàn)Dao層時的優(yōu)點如自己封裝一個類似Dao層功能的數(shù)據(jù)庫操作模板類,可參考Spring的DAO層思想
HibernateDaoSupport,ActionSupport等類中所指的Support,是不是一種設(shè)計模式?若是,那說說你對這種感設(shè)計模式的理解
它們用到了IoC和工廠模式,即依賴注入,將程序代碼中依賴對象的管理交由相應(yīng)的容器去管理如在配置文件中進(jìn)行注入配置
對數(shù)據(jù)庫的存儲的存儲過程熟悉嗎?對css熟悉嗎
層疊樣式表(Cascading Style Sheet)簡稱“CSS”,通常又稱為“風(fēng)格樣式表(Style Sheet)”,它是用來進(jìn)行網(wǎng)頁風(fēng)格設(shè)計的。它是一種用來表現(xiàn)HTML或 XML 等文件式樣的計算機(jī)語言。
相對于傳統(tǒng)HTML的表現(xiàn)而言,CSS能夠?qū)W(wǎng)頁中的對象的位置排版進(jìn)行像素級的精確控制,支持幾乎所有的字體字號樣式,擁有對網(wǎng)頁對象盒模型的能力,并能夠進(jìn)行初步交互設(shè)計,是目前基于文本展示最優(yōu)秀的表現(xiàn)設(shè)計語言。
在網(wǎng)頁上使用樣式表有三種方法可以在站點網(wǎng)頁上使用樣式表:
將網(wǎng)頁鏈接到外部樣式表。
在網(wǎng)頁上創(chuàng)建嵌入的樣式表。
應(yīng)用內(nèi)嵌樣式到各個網(wǎng)頁元素。
每一種方法均有其優(yōu)缺點:
當(dāng)要在站點上所有或部份的網(wǎng)頁上一致地應(yīng)用相同樣式時,可使用外部樣式表。在一個或多個外部樣式表中定義樣式,并將它們鏈接到所有網(wǎng)頁,便能確保所有網(wǎng)頁外觀的一致性。
當(dāng)人們只是要定義當(dāng)前網(wǎng)頁的樣式,可使用嵌入的樣式表。嵌入的樣式表是一種級聯(lián)樣式表,“嵌”在網(wǎng)頁的 標(biāo)記符內(nèi)。嵌入的樣式表中的樣式只能在同一網(wǎng)頁上使用。
使用內(nèi)嵌樣式以應(yīng)用級聯(lián)樣式表屬性到網(wǎng)頁元素上。
如果網(wǎng)頁鏈接到外部樣式表,為網(wǎng)頁所創(chuàng)建的內(nèi)嵌的或嵌入式樣式將擴(kuò)充或覆蓋外部樣式表中的指定屬性。
java實習(xí)生的有關(guān)面試題篇3
說說Struts2的工作原理
一個請求在Struts2框架中的處理分為以下幾個步驟:
1.客戶端發(fā)出一個指向servlet容器的請求(tomcat);
2.這個請求會經(jīng)過圖中的幾個過濾器,最后會到達(dá)FilterDispatcher過濾器
3.過濾器FilterDispatcher是struts2框架的心臟,在處理用戶請求時,它和請求一起相互配合訪問struts2
的底層框架結(jié)構(gòu)。在web容器啟動時,struts2框架會自動加載配置文件里相關(guān)參數(shù),并轉(zhuǎn)換成相應(yīng)的類。
4.如果找到需要調(diào)用的Action,過濾器會把請求的處理交給ActionProxy。ActionProxy為Action的代理對象
。ActionProxy通過ConfigurationManager詢問框架的配置文件,找到需要調(diào)用的Action類。
5.ActionProxy創(chuàng)建一個ActionInvocation的實例。ActionInvocation在ActionProxy層之下,它表示了
Action的執(zhí)行狀態(tài),或者說它控制的Action的執(zhí)行步驟。它持有Action實例和所有的Interceptor。
6.ActionInvocation實例使用命名模式來調(diào)用,1. ActionInvocation初始化時,根據(jù)配置,加載Action相
關(guān)的所有Interceptor。2. 通過ActionInvocation.invoke方法調(diào)用Action實現(xiàn)時,執(zhí)行Interceptor。在
調(diào)用Action的過程前后,涉及到相關(guān)攔截器(intercepetor)的調(diào)用。
7. 一旦Action執(zhí)行完畢,ActionInvocation負(fù)責(zé)根據(jù)struts.xml中的配置找到對應(yīng)的返回結(jié)果。返回結(jié)果
通常是(但不總是,也可能是另外的一個Action鏈)一個需要被表示的JSP或者FreeMarker的模版。
怎樣實現(xiàn)分頁顯示的?具體原理怎么樣?Hibernate的setMaxResults和setFirstResult內(nèi)部是怎么實現(xiàn)分頁查詢的?
實現(xiàn)一個分頁組件,可自實現(xiàn)或借用相應(yīng)框架的實現(xiàn)。原理是求出所查數(shù)據(jù)總記錄數(shù),設(shè)置每頁要顯示的記錄數(shù),然后計算每頁要顯示的第一條記錄數(shù),根據(jù)每頁要顯示的記錄數(shù)和總記錄數(shù)來求出頁數(shù)等。
Hibernate的setMaxResults和setFirstResult內(nèi)部是通過SQL語句來實現(xiàn)分頁查詢的,
Hibernate框架的設(shè)計有什么不好的地方
XML配置麻煩、映射文件可能過于冗余、查詢慢、對海量數(shù)據(jù)無能為力、太對象化限制了查詢、級聯(lián)關(guān)系也影響查詢速度等。 當(dāng)然,最新版本的Hibernate采用EJB3注解的方式,大大的提高了它的應(yīng)用效率。
你是怎么樣實現(xiàn)分頁顯示的?具體原理怎么樣?Hibernate的setMesResults和setFirsResult內(nèi)部是怎么實現(xiàn)分布查詢的
Struts,Hibernate,Spring等框架,你最熟悉哪個?有沒有讀過它的源代碼?你用過Spring框架的那些功能
學(xué)習(xí)JSF,Richface,JBoss Seam,JBPM該按什么順序,步驟去學(xué)習(xí)?
先需要學(xué)習(xí)JAVA EE 相關(guān)技術(shù),如JSF2,EJB3,學(xué)完這些技術(shù)后,就可以學(xué)習(xí)Seam技術(shù)和Richface.