




已閱讀5頁,還剩90頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
開發(fā)人員面試寶典(Java版)八維云計(jì)算學(xué)院2015-3-24目錄1基礎(chǔ)篇61.1Java介紹61.2J2SE、J2EE、J2ME三者區(qū)別61.3JDK、JRE、JVM區(qū)別61.4JDK常用的包71.5Java中的基本數(shù)據(jù)類型71.6Java中switch接受的幾種數(shù)據(jù)類型81.7String、StringBuffer、StringBuilder區(qū)別81.8Char型變量能不能存儲(chǔ)一個(gè)漢字?81.9=和equals方法的區(qū)別81.10靜態(tài)變量和實(shí)例變量的區(qū)別91.11Integer和int的區(qū)別91.12Math.round()的使用91.13構(gòu)造器是否可以被重寫91.14抽象類和接口的區(qū)別91.15新建對(duì)象有幾種方式101.16&和&的區(qū)別101.17面向?qū)ο笫裁刺匦?11.18面向?qū)ο笾卸鄳B(tài)特性111.19List,set,Collection,Collections111.20線程和進(jìn)程的區(qū)別111.21Jvm內(nèi)存結(jié)構(gòu)121.22內(nèi)存泄露和內(nèi)存溢出121.23解析xml文件的幾種技術(shù)121.24Dom4j與sax之間的對(duì)比131.25java Exception體系結(jié)構(gòu)131.26抽象類和接口的區(qū)別141.27修飾符的作用141.28HashMap和Hashtable的區(qū)別141.29字節(jié)流和字符流的區(qū)別151.30運(yùn)行異常和檢查異常有何不同151.31error和exception的區(qū)別151.32舉例最常用的五個(gè)運(yùn)行時(shí)異常151.33Sleep和wait的區(qū)別151.34多線程有幾種實(shí)現(xiàn)方式161.35啟動(dòng)一個(gè)線程用run還是start161.36List和Map的區(qū)別161.37說出ArrayList,Vector, LinkedList的存儲(chǔ)性能和特性171.38Java序列化171.39堆和棧的區(qū)別171.40什么時(shí)候用斷言171.41Java中會(huì)有內(nèi)存泄露嗎181.42簡述反射的作用182Servlet篇192.1Servlet概述192.2九大隱式對(duì)象202.3page和pageContext的區(qū)別202.4GET和POST的區(qū)別202.5轉(zhuǎn)發(fā)與重定向的區(qū)別202.6四大作用域介紹212.7session和cookie的區(qū)別212.8request和session的區(qū)別212.9報(bào)錯(cuò)狀態(tài)碼222.10常見協(xié)議及默認(rèn)的端口號(hào)222.11對(duì)過濾器的理解223腳本篇233.1onready和onload的區(qū)別233.2對(duì)jQuery簡單介紹233.3XML和Json的特點(diǎn)233.4對(duì)JQuery中Ajax介紹243.5對(duì)Ajax介紹244框架篇254.1Struts1運(yùn)行原理254.2Struts2運(yùn)行原理254.3Hibernate運(yùn)行原理264.4Spring運(yùn)行原理274.5SpringMVC運(yùn)行原理274.6Struts1和Struts2區(qū)別284.7SpringMVC、Struts1和Struts2區(qū)別294.8Struts2在的type類型294.9Struts2的常用標(biāo)簽294.10Hibernate可get和load的區(qū)別304.11Hibernate、Ibatis、JDBC區(qū)別304.12Hibernate與JDBC區(qū)別304.13Hibernate兩大配置文件304.14Hibernate中的事務(wù)處理314.15Hibernate三種狀態(tài)及如何轉(zhuǎn)換314.16Hibernate中的五大核心接口314.17Hibernate緩存概述324.18SSH概述324.19分頁步驟334.20如何防止表單重復(fù)提交334.21通過Struts2來解決表單重復(fù)提交334.22攔截器335數(shù)據(jù)庫篇355.1JDBC連接數(shù)據(jù)庫步驟355.2數(shù)據(jù)庫連接池355.3jdbc分段批量提交的時(shí)候出現(xiàn)異常怎么處理?355.4JDBC批量處理數(shù)據(jù)365.5Oracle分頁語句365.6MySQL分頁語句365.7Oracle基本數(shù)據(jù)類型375.8id、rowid、rownum的區(qū)別375.9主鍵和唯一索引的區(qū)別?375.10Preparedstatement和statement的區(qū)別385.11數(shù)據(jù)庫三范氏385.12視圖概述385.13存儲(chǔ)過程概述385.14索引概述395.15Ibatis批量406業(yè)務(wù)場景篇426.1Spring的概述426.2事務(wù)概述436.3權(quán)限概述446.4OSCache業(yè)務(wù)場景446.5線程概述446.6Ajax請(qǐng)求Session超時(shí)問題456.7Java線程池概述466.8OSCache概述476.9OSCache+autocomplete+單例業(yè)務(wù)場景476.10緩存概述476.11實(shí)現(xiàn)頁面靜態(tài)化業(yè)務(wù)場景486.12servlet線程安全描述486.13(jbpm4)工作流引擎描述:496.14JPBM業(yè)務(wù)場景506.15Ant描述506.16FreeMarker描述516.17webService描述516.18oracle索引概述526.19oracle存儲(chǔ)過程536.20Junit 業(yè)務(wù)場景536.21Apache+Tomcat 實(shí)現(xiàn)負(fù)載均衡及seesion復(fù)制536.22Ant業(yè)務(wù)場景546.23maven業(yè)務(wù)場景556.24bugfree的操作步驟556.25Axis2 的配置566.26spring定時(shí)器566.27Ext概述576.28lucene的概述576.29線程池作用586.30jbpm是如何和spring進(jìn)行整合586.31Tomcat優(yōu)化586.32memcached的介紹607優(yōu)化篇607.1代碼優(yōu)化607.2業(yè)務(wù)優(yōu)化617.3sql優(yōu)化617.4防sql注入637.5數(shù)據(jù)庫中常用術(shù)語657.6深入java虛擬機(jī)以及大數(shù)據(jù)651 基礎(chǔ)篇1.1 Java介紹Java是面向?qū)ο蟮模缙脚_(tái)的,它通過java虛擬機(jī)來進(jìn)行跨平臺(tái)操作,它可以進(jìn)行自動(dòng)垃圾回收的(c語言是通過人工進(jìn)行垃圾回收)。java還會(huì)進(jìn)行自動(dòng)分配內(nèi)存。(c語言是通過指定進(jìn)行分配內(nèi)存的),只需要new一個(gè)對(duì)象,這個(gè)對(duì)象占用了多少空間,不需要我們來管,java虛擬機(jī)負(fù)責(zé)管這些,用完之后也不需要我們來釋放,java虛擬機(jī)會(huì)自動(dòng)釋放。1.2 J2SE、J2EE、J2ME三者區(qū)別Java SE = Java Standard Edition=j2se = java 標(biāo)準(zhǔn)版Java EE = Java Enterprise Edition=j2ee= java 企業(yè)版Java ME = Java Mobile Edition=j2me = java 移動(dòng)版三者特點(diǎn):J2SE主要用于桌面程序(swing),控制臺(tái)開發(fā)(main程序)。J2EE企業(yè)級(jí)開發(fā)(JSP,EJB,Spring MVC,Struts,hibernate,ibatis等),用于企業(yè)級(jí)軟件開發(fā),網(wǎng)絡(luò)開發(fā),web開發(fā)。J2ME嵌入式開發(fā)(手機(jī),小家電,PDA)。蘋果的ios,黑莓。三者之間的關(guān)系:Java SE(Java Platform,Standard Edition,Java標(biāo)準(zhǔn)版)就是基于JDK和JRE的。Java SE為Java EE提供了基礎(chǔ)。Java EE除了基于我們這個(gè)所謂的Java SE外,還新加了企業(yè)應(yīng)用所需的類庫。1.3 JDK、JRE、JVM區(qū)別Jdk【Java Development ToolKit】就是java開發(fā)工具箱, JDK是整個(gè)JAVA的核心里邊包含了jre,它除了包含jre之外還包含了一些javac的工具類,把java源文件編譯成class文件,java文件是用來運(yùn)行這個(gè)程序的,除此之外,里邊還包含了java源生的API,eger在rt的jar包里邊【可以在項(xiàng)目中看到】,通過rt這個(gè)jar包來調(diào)用我們的這些io流寫入寫出等。JDK有以下三種版本:J2SE,standard edition,標(biāo)準(zhǔn)版,是我們通常用的一個(gè)版本J2EE,enterpsise edtion,企業(yè)版,使用這種JDK開發(fā)J2EE應(yīng)用程序J2ME,micro edtion,主要用于移動(dòng)設(shè)備、嵌入式設(shè)備上的java應(yīng)用程序Jre【Java Runtime Enviromental】是java運(yùn)行時(shí)環(huán)境,那么所謂的java運(yùn)行時(shí)環(huán)境,就是為了保證java程序能夠運(yùn)行時(shí),所必備的一基礎(chǔ)環(huán)境,也就是它只是保證java程序運(yùn)行的,不能用來開發(fā),而jdk才是用來開發(fā)的,所有的Java程序都要在JRE下才能運(yùn)行。包括JVM和JAVA核心類庫和支持文件。與JDK相比,它不包含開發(fā)工具編譯器、調(diào)試器和其它工具。Jre里邊包含jvm。Jvm:【Java Virtual Mechinal】因?yàn)閖re是java運(yùn)行時(shí)環(huán)境,java運(yùn)行靠什么運(yùn)行,而底層就是依賴于jvm,即java虛擬機(jī),java虛擬機(jī)用來加載類文件,java中之所以有跨平臺(tái)的作用,就是因?yàn)槲覀兊膉vm。三者關(guān)系:J2se是基于jdk和jre,JDK是整個(gè)JAVA的核心里邊包含了jre,Jre里邊包含jvm。1.4 JDK常用的包java.lang: 這個(gè)是系統(tǒng)的基礎(chǔ)類,比如String、Math、Integer、System和Thread,提供常用功能。java.io: 這里面是所有輸入輸出有關(guān)的類,比如文件操作等。: 這里面是與網(wǎng)絡(luò)有關(guān)的類,比如URL,URLConnection等。java.util : 這個(gè)是系統(tǒng)輔助類,特別是集合類Collection,List,Map等。java.sql: 這個(gè)是數(shù)據(jù)庫操作的類,Connection,Statememt,ResultSet等。1.5 Java中的基本數(shù)據(jù)類型數(shù)據(jù)類型大小byte(字節(jié))1(8位)shot(短整型)2(16位)int(整型)4(32位)long(長整型)8(32位)float(浮點(diǎn)型)4(32位)double(雙精度)8(64位)char(字符型)2(16位)boolean(布爾型)1位附加:String是基本數(shù)據(jù)類型嗎?(String不是基本數(shù)據(jù)類型)String的長度是多少,有限制?(長度受內(nèi)存大小的影響)1.6 Java中switch接受的幾種數(shù)據(jù)類型short, int, byte,charenum(JDK1.5以后支持)String(JDK1.7以后支持)1.7 String、StringBuffer、StringBuilder區(qū)別String字符串常量不可變使用字符串拼接時(shí)是不同的2個(gè)空間。StringBuffer字符串變量可變線程安全,字符串拼接直接在字符串后追加。StringBuilder字符串變量可變非線程安全,字符串拼接直接在字符串后追加。1、 StringBuilder執(zhí)行效率高于StringBuffer高于String。2、 String是一個(gè)常量,是不可變的,所以對(duì)于每一次+=賦值都會(huì)創(chuàng)建一個(gè)新的對(duì)象,StringBuffer和StringBuilder都是可變的,當(dāng)進(jìn)行字符串拼接時(shí)采用append方法,在原來的基礎(chǔ)上進(jìn)行追加,所以性能比String要高,又因?yàn)镾tringBuffer是線程安全的而StringBuilder是線程非安全的,所以StringBuilder的效率高于StringBuffer。3、 對(duì)于大數(shù)據(jù)量的字符串的拼接,采用StringBuffer,StringBuilder。4、 另一種說法,JDK1.6做了優(yōu)化,通過String聲明的字符串在進(jìn)行用“+”進(jìn)行拼接時(shí),底層調(diào)用的是StringBuffer,所以性能上基本和后兩者沒有什么區(qū)別。1.8 Char型變量能不能存儲(chǔ)一個(gè)漢字?char型變量是用來存儲(chǔ)Unicode編碼的字符的,unicode編碼字符集中包含了漢字,補(bǔ)充說明:unicode編碼占用兩個(gè)字節(jié),所以,char類型的變量也是占用兩個(gè)字節(jié)。1.9 =和equals方法的區(qū)別“=”如果前后比較的是對(duì)象,則比較的是對(duì)象的地址,如果前后是數(shù)字,則比較的數(shù)值。“equals”如果前后是對(duì)象,比較的是對(duì)象的地址。如果比較的對(duì)象重寫了equals方法,則有可能比較的是“值”。像八個(gè)基本數(shù)據(jù)類型的封裝類、String、File、Date都比較的是值。1.10 靜態(tài)變量和實(shí)例變量的區(qū)別在語法定義上的區(qū)別:靜態(tài)變量前要加static關(guān)鍵字,而實(shí)例變量前則不加。在程序運(yùn)行時(shí)的區(qū)別:實(shí)例變量屬于某個(gè)對(duì)象的屬性,必須創(chuàng)建了實(shí)例對(duì)象,其中的實(shí)例變量才會(huì)被分配空間,才能使用這個(gè)實(shí)例變量。靜態(tài)變量不屬于某個(gè)實(shí)例對(duì)象,而是屬于類,所以也稱為類變量,只要程序加載了類的字節(jié)碼,不用創(chuàng)建任何實(shí)例對(duì)象,靜態(tài)變量就會(huì)被分配空間,靜態(tài)變量就可以被使用了??傊瑢?shí)例變量必須創(chuàng)建對(duì)象后才可以通過這個(gè)對(duì)象來使用,靜態(tài)變量則可以直接使用類名來引用。1.11 Integer和int的區(qū)別int是java提供的8種原始數(shù)據(jù)類型之一,意思整型,占用4字節(jié)。Integer是java為int提供的封裝類,是引用數(shù)據(jù)類型。int的默認(rèn)值為0,而Integer的默認(rèn)值為null,即Integer可以區(qū)分出未賦值和值為0的區(qū)別,int則無法表達(dá)出未賦值的情況。 1.12 Math.round()的使用Math類中提供了三個(gè)與取整有關(guān)的方法:ceil、floor、round,這些方法的作用與它們的英文名稱的含義相對(duì)應(yīng),例如,ceil的英文意義是天花板,該方法就表示向上取整,Math.ceil(11.3)的結(jié)果為12,Math.ceil(-11.3)的結(jié)果是-11;floor的英文意義是地板,該方法就表示向下取整,Math.ceil(11.6)的結(jié)果為11,Math.ceil(-11.6)的結(jié)果是-12;最難掌握的是round方法,它表示“四舍五入”,算法為Math.floor(x+0.5),即將原來的數(shù)字加上0.5后再向下取整,所以,Math.round(11.5)的結(jié)果為12,Math.round(-11.5)的結(jié)果為-11。1.13 構(gòu)造器是否可以被重寫構(gòu)造器Constructor不能被繼承,因此不能重寫Override,但可以被重載Overload。1.14 抽象類和接口的區(qū)別含有abstract修飾符的class即為抽象類,abstract類不能創(chuàng)建的實(shí)例對(duì)象。含有abstract方法的類必須定義為abstract class,abstract class類中的方法不必是抽象的。abstract class類中定義抽象方法必須在具體(Concrete)子類中實(shí)現(xiàn),所以,不能有抽象構(gòu)造方法或抽象靜態(tài)方法。如果的子類沒有實(shí)現(xiàn)抽象父類中的所有抽象方法,那么子類也必須定義為abstract類型。接口(interface)可以說成是抽象類的一種特例,接口中的所有方法都必須是抽象的。接口中的方法定義默認(rèn)為public abstract類型,接口中的成員變量類型默認(rèn)為public static final。下面比較一下兩者的語法區(qū)別:1. 抽象類可以有構(gòu)造方法,接口中不能有構(gòu)造方法。2. 抽象類中可以有普通成員變量,接口中沒有普通成員變量3. 抽象類中可以包含非抽象的普通方法,接口中的所有方法必須都是抽象的,不能有非抽象的普通方法。4. 抽象類中的抽象方法的訪問類型可以是public,protected和默認(rèn)類型,但接口中的抽象方法只能是public類型的,并且默認(rèn)即為public abstract類型。5. 抽象類中可以包含靜態(tài)方法,接口中不能包含靜態(tài)方法6. 抽象類和接口中都可以包含靜態(tài)成員變量,抽象類中的靜態(tài)成員變量的訪問類型可以任意,但接口中定義的變量只能是public static final類型,并且默認(rèn)即為public static final類型。7. 一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,但只能繼承一個(gè)抽象類。下面接著再說說兩者在應(yīng)用上的區(qū)別:接口更多的是在系統(tǒng)架構(gòu)設(shè)計(jì)方法發(fā)揮作用,主要用于定義模塊之間的通信契約;而抽象類在代碼實(shí)現(xiàn)方面發(fā)揮作用,可以實(shí)現(xiàn)代碼的重用。1.15 新建對(duì)象有幾種方式1. 使用new關(guān)鍵字2. 使用反射,調(diào)用newInstance3. 使用clone方法4. 使用序列化與反序列化5. 動(dòng)態(tài)代理(Proxy類和CGLIB)1.16 &和&的區(qū)別&和&都可以用作邏輯與的運(yùn)算符,&為短路與,&不是短路與。另外&可以做為整數(shù)的位運(yùn)算符例1:對(duì)于if(str != null& !str.equals(“”)表達(dá)式,當(dāng)str為null時(shí),后面的表達(dá)式不會(huì)執(zhí)行,所以不會(huì)出現(xiàn)NullPointerException如果將&改為&,則會(huì)拋出NullPointerException異常。例2:If(x=33 &+y0) y會(huì)增長,if(x=33 & +y0)不會(huì)增長。備注:這道題先說兩者的共同點(diǎn),再說出&和&的特殊之處,并列舉一些經(jīng)典的例子來表明自己理解透徹深入、實(shí)際經(jīng)驗(yàn)豐富。1.17 面向?qū)ο笫裁刺匦詫?duì)于面向?qū)ο蟮奶匦?,一般有兩種說法:一種是有三大特性,分別是封裝,繼承,多態(tài),一種說法是有四大特性,封裝,繼承,多態(tài),抽象。講三大特性的時(shí)候更多一些,注意,這里的提問方式是面向?qū)ο蟮奶匦?,而不是Java的特性。1.18 面向?qū)ο笾卸鄳B(tài)特性多態(tài)是面向?qū)ο蠛苤匾囊粋€(gè)特性,轉(zhuǎn)型是多態(tài)的具體體現(xiàn)。多態(tài)還包括重載和重寫。轉(zhuǎn)型:轉(zhuǎn)型分為向上轉(zhuǎn)型和向下轉(zhuǎn)型。向上轉(zhuǎn)型是子類對(duì)象轉(zhuǎn)換成父類對(duì)象,直接轉(zhuǎn)就可以,向下轉(zhuǎn)型是父類對(duì)象轉(zhuǎn)換成子類對(duì)象,這需要強(qiáng)轉(zhuǎn),在轉(zhuǎn)換過程中要保證此父類對(duì)象“本體”是由子類對(duì)象實(shí)例化的。重載:重載發(fā)生在同一個(gè)類中,在該類中如果存在多個(gè)同名方法,但是方法的參數(shù)類型和個(gè)數(shù)不一樣,那么說明該方法被重載了。重寫:重寫發(fā)生在子類繼承父類的關(guān)系中,父類中的方法被子類繼承,方法名,返回值類型,參數(shù)完全一樣,但是方法體不一樣,那么說明父類中的該方法被子類重寫了。1.19 List,set,Collection,Collections1、 List和Set都是接口,他們都繼承于接口Collection,List是一個(gè)有序的可重復(fù)的集合,而Set的無序的不可重復(fù)的集合。Collection是集合的頂層接口,Collections是一個(gè)封裝了眾多關(guān)于集合操作的靜態(tài)方法的工具類,因?yàn)闃?gòu)造方法是私有的,所以不能實(shí)例化。2、 List接口實(shí)現(xiàn)類有ArrayList,LinkedList,Vector。ArrayList和Vector是基于數(shù)組實(shí)現(xiàn)的,所以查詢的時(shí)候速度快,而在進(jìn)行增加和刪除的時(shí)候速度較慢LinkedList是基于鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),所以在進(jìn)行查詢的時(shí)候速度較慢但在進(jìn)行增加和刪除的時(shí)候速度較快。又因?yàn)閂ector是線程安全的,所以他和ArrayList相比而言,查詢效率要低。1.20 線程和進(jìn)程的區(qū)別1、 進(jìn)程定義的是應(yīng)用程序與應(yīng)用程序之間的邊界,通常來說一個(gè)進(jìn)程就代表一個(gè)與之對(duì)應(yīng)的應(yīng)用程序。不同的進(jìn)程之間不能共享代碼和數(shù)據(jù)空間,而同一進(jìn)程的不同線程可以共享代碼和數(shù)據(jù)空間。2、 一個(gè)進(jìn)程可以包括若干個(gè)線程,同時(shí)創(chuàng)建多個(gè)線程來完成某項(xiàng)任務(wù),便是多線程。實(shí)現(xiàn)線程的兩種方式:繼承Thread類,實(shí)現(xiàn)Runable接口。1.21 Jvm內(nèi)存結(jié)構(gòu)Java虛擬機(jī)的內(nèi)存結(jié)構(gòu)分為堆(heap)和棧(stack),堆里面存放是對(duì)象實(shí)例也就是new出來的對(duì)象。棧里面存放的是基本數(shù)據(jù)類型以及引用數(shù)據(jù)類型的地址。對(duì)于所謂的常量是存儲(chǔ)在方法區(qū)的常量池里面。堆是先進(jìn)先出棧是先進(jìn)后出1.22 內(nèi)存泄露和內(nèi)存溢出內(nèi)存泄露 (memory leak),是指應(yīng)用程序在申請(qǐng)內(nèi)存后,無法釋放已經(jīng)申請(qǐng)的內(nèi)存空間。一次內(nèi)存泄露危害可以忽略,但如果任其發(fā)展最終會(huì)導(dǎo)致內(nèi)存溢出(out of memory)。如讀取文件后流要進(jìn)行及時(shí)的關(guān)閉以及對(duì)數(shù)據(jù)庫連接的釋放。內(nèi)存溢出(out of memory)是指應(yīng)用程序在申請(qǐng)內(nèi)存時(shí),沒有足夠的內(nèi)存空間供其使用。如我們?cè)陧?xiàng)目中對(duì)于大批量數(shù)據(jù)的導(dǎo)入,采用分段批量提交的方式。1.23 解析xml文件的幾種技術(shù)解析xml的幾種技術(shù)1. dom4j 、2.sax、3.jaxb、4.jdom、5.dom1、 dom4jdom4j是一個(gè)Java的XML API,類似于jdom,用來讀寫XML文件的。dom4j是一個(gè)非常優(yōu)秀的Java XML API,具有性能優(yōu)異、功能強(qiáng)大和極端易用使用的特點(diǎn),同時(shí)它也是一個(gè)開放源代碼的軟件。2、 saxSAX(simple API for XML)是一種XML解析的替代方法。相比于DOM,SAX是一種速度更快,更有效的方法。它逐行掃描文檔,一邊掃描一邊解析。而且相比于DOM,SAX可以在解析文檔的任意時(shí)刻停止解析,但任何事物都有其相反的一面,對(duì)于SAX來說就是操作復(fù)雜。3、 JaxbJAXB(Java Architecture for XML Binding) 是一個(gè)業(yè)界的標(biāo)準(zhǔn),是一項(xiàng)可以根據(jù)XML Schema產(chǎn)生Java類的技術(shù)。該過程中,JAXB也提供了將XML實(shí)例文檔反向生成Java對(duì)象樹的方法,并能將Java對(duì)象樹的內(nèi)容重新寫到XML實(shí)例文檔。從另一方面來講,JAXB提供了快速而簡便的方法將XML模式綁定到Java表示,從而使得Java開發(fā)者在Java應(yīng)用程序中能方便地結(jié)合XML數(shù)據(jù)和處理函數(shù)。1.24 Dom4j與sax之間的對(duì)比dom4j不適合大文件的解析,因?yàn)樗且幌伦訉⑽募虞d到內(nèi)存中,所以有可能出現(xiàn)內(nèi)存溢出,sax是基于事件來對(duì)xml進(jìn)行解析的,所以他可以解析大文件的xml,也正是因?yàn)槿绱?,所以dom4j可以對(duì)xml進(jìn)行靈活的增刪改查和導(dǎo)航,而sax沒有這么強(qiáng)的靈活性,所以sax經(jīng)常是用來解析大型xml文件,而要對(duì)xml文件進(jìn)行一些靈活(crud)操作就用dom4j。1.25 java Exception體系結(jié)構(gòu)java 異常是程序運(yùn)行過程中出現(xiàn)的錯(cuò)誤。Java把異常當(dāng)作對(duì)象來處理,并定義一個(gè)基類java.lang.Throwable作為所有異常的超類。在Java API中定義了許多異常類,分為兩大類,錯(cuò)誤Error和異常Exception。其中異常類Exception又分為運(yùn)行時(shí)異常(RuntimeException)和非運(yùn)行時(shí)異常(非runtimeException),也稱之為不檢查異常(Unchecked Exception)和檢查異常(Checked Exception)。1、 Error與Exception Error是程序無法處理的錯(cuò)誤,比如OutOfMemoryError、ThreadDeath等。這些異常發(fā)生時(shí),Java虛擬機(jī)(JVM)一般會(huì)選擇線程終止。Exception是程序本身可以處理的異常,這種異常分兩大類運(yùn)行時(shí)異常和非運(yùn)行時(shí)異常。程序中應(yīng)當(dāng)盡可能去處理這些異常。 2、 運(yùn)行時(shí)異常和非運(yùn)行時(shí)異常a) 運(yùn)行時(shí)異常: 都是RuntimeException類及其子類異常:i. IndexOutOfBoundsException 索引越界異常ii. ArithmeticException:數(shù)學(xué)計(jì)算異常iii. NullPointerException:空指針異常iv. ArrayOutOfBoundsException:數(shù)組索引越界異常v. ClassNotFoundException:類文件未找到異常vi. ClassCastException:造型異常(類型轉(zhuǎn)換異常)這些異常是不檢查異常(Unchecked Exception),程序中可以選擇捕獲處理,也可以不處理。這些異常一般是由程序邏輯錯(cuò)誤引起的。非運(yùn)行時(shí)異常:是RuntimeException以外的異常,類型上都屬于Exception類及其子類。從程序語法角度講是必須進(jìn)行處理的異常,如果不處理,程序就不能編譯通過。如:IOException、文件讀寫異常FileNotFoundException:文件未找到異常EOFException:讀寫文件尾異常MalformedURLException:URL格式錯(cuò)誤異常SocketException:Socket異常SQLException:SQL數(shù)據(jù)庫異常1.26 抽象類和接口的區(qū)別1. 抽象類由public abstract修飾,接口由public interface修飾。2. 類(抽象類也是類)只支持單繼承,但接口可以實(shí)現(xiàn)多個(gè)接口。接口不是類,接口和類同屬于Java中的一個(gè)類型。3. 抽象類里由構(gòu)造器、常量、變量、抽象方法、普通方法構(gòu)成,接口里只包括常量和抽象方法,沒有構(gòu)造器和普通方法。4. 是否是使用抽象類還是接口,主要看想要實(shí)現(xiàn)什么樣的事情,如果側(cè)重于描述事務(wù),應(yīng)該選擇抽象類,如果側(cè)重于定義功能,建議選擇使用接口。1.27 修飾符的作用修飾符同一個(gè)類中同一個(gè)包中子類中全局privateYesDefaultYesYesprotectedYesYesYespublicYesYesYesYes1.28 HashMap和Hashtable的區(qū)別1、 HashMap和Hashtable是Map接口下的兩個(gè)實(shí)現(xiàn)類,因?yàn)镸ap對(duì)象是鍵值對(duì)的,所以此兩類也是鍵值對(duì)的。2、 HashMap是線程非安全的,Hashtable是線程安全的,所以HashMap的效率高于Hashtable。3、 HashMap允許鍵或值為null,鍵最多只可以有一個(gè)為null,值不受限制。而Hashtable鍵或值都不許為null。注意:Hashtable中的“t”是小寫的。1.29 字節(jié)流和字符流的區(qū)別以stream結(jié)尾都是字節(jié)流,以reader和writer結(jié)尾都是字符流,兩者的區(qū)別就是讀寫的時(shí)候一個(gè)是按字節(jié)讀寫,一個(gè)是按字符。在實(shí)際使用時(shí)差不多。在讀寫文件需要對(duì)內(nèi)容按行處理,比如比較特定字符,處理某一行數(shù)據(jù)的時(shí)候一般會(huì)選擇字符流。只是讀寫文件,和文件內(nèi)容無關(guān)的,一般選擇字節(jié)流。1.30 運(yùn)行異常和檢查異常有何不同異常表示程序運(yùn)行過程中可能出現(xiàn)的非正常狀態(tài),運(yùn)行時(shí)異常表示虛擬機(jī)的通常操作中可能遇到的異常,是一種常見運(yùn)行錯(cuò)誤。java編譯器要求方法必須聲明拋出可能發(fā)生的非運(yùn)行時(shí)異常,但是并不要求必須聲明拋出未被捕獲的運(yùn)行時(shí)異常。1.31 error和exception的區(qū)別error 表示恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問題。比如說內(nèi)存溢出,不可能指望程序能處理這樣的情況。exception表示一種設(shè)計(jì)或?qū)崿F(xiàn)問題,也就是說,它表示如果程序運(yùn)行正常,從不會(huì)發(fā)生的情況。1.32 舉例最常用的五個(gè)運(yùn)行時(shí)異常NullPointerException空指針、ArrayIndexOutOfBoundsException數(shù)組越界、ClassCastException 類轉(zhuǎn)換異常、IllegelArgumentException輸入輸出異常、SecurityException 權(quán)限不夠。1.33 Sleep和wait的區(qū)別(網(wǎng)上的答案:sleep是線程類(Thread)的方法,導(dǎo)致此線程暫停執(zhí)行指定時(shí)間,給執(zhí)行機(jī)會(huì)給其他線程,但是監(jiān)控狀態(tài)依然保持,到時(shí)后會(huì)自動(dòng)恢復(fù)。調(diào)用sleep不會(huì)釋放對(duì)象鎖。 wait是Object類的方法,對(duì)此對(duì)象調(diào)用wait方法導(dǎo)致本線程放棄對(duì)象鎖,進(jìn)入等待此對(duì)象的等待鎖定池,只有針對(duì)此對(duì)象發(fā)出notify方法(或notifyAll)后本線程才進(jìn)入對(duì)象鎖定池準(zhǔn)備獲得對(duì)象鎖進(jìn)入運(yùn)行狀態(tài)。)sleep就是正在執(zhí)行的線程主動(dòng)讓出cpu,cpu去執(zhí)行其他線程,在sleep指定的時(shí)間過后,cpu才會(huì)回到這個(gè)線程上繼續(xù)往下執(zhí)行,如果當(dāng)前線程進(jìn)入了同步鎖,sleep方法并不會(huì)釋放鎖,即使當(dāng)前線程使用sleep方法讓出了cpu,但其他被同步鎖擋住了的線程也無法得到執(zhí)行。wait是指在一個(gè)已經(jīng)進(jìn)入了同步鎖的線程內(nèi),讓自己暫時(shí)讓出同步鎖,以便其他正在等待此鎖的線程可以得到同步鎖并運(yùn)行,只有其他線程調(diào)用了notify方法(notify并不釋放鎖,只是告訴調(diào)用過wait方法的線程可以去參與獲得鎖的競爭了,但不是馬上得到鎖,因?yàn)殒i還在別人手里,別人還沒釋放。如果notify方法后面的代碼還有很多,需要這些代碼執(zhí)行完后才會(huì)釋放鎖,可以在notfiy方法后增加一個(gè)等待和一些代碼,看看效果),調(diào)用wait方法的線程就會(huì)解除wait狀態(tài)和程序可以再次得到鎖后繼續(xù)向下運(yùn)行。對(duì)于wait的講解一定要配合例子代碼來說明,才顯得自己真明白。1.34 多線程有幾種實(shí)現(xiàn)方式多線程有兩種實(shí)現(xiàn)方法,分別是繼承Thread類與實(shí)現(xiàn)Runnable接口同步的實(shí)現(xiàn)方面有五種,分別是synchronized、wait與notify、sleep、suspend、joinsynchronized: 一直持有鎖,直至執(zhí)行結(jié)束wait():使一個(gè)線程處于等待狀態(tài),并且釋放所持有的對(duì)象的lock,需捕獲異常。sleep():使一個(gè)正在運(yùn)行的線程處于睡眠狀態(tài),是一個(gè)靜態(tài)方法,需捕獲異常,不釋放鎖。notify():喚醒一個(gè)處于等待狀態(tài)的線程,注意的是在調(diào)用此方法的時(shí)候,并不能確切的喚醒某一個(gè)等待狀態(tài)的線程,而是由JVM確定喚醒哪個(gè)線程,而且不是按優(yōu)先級(jí)。notityAll():喚醒所有處入等待狀態(tài)的線程,注意并不是給所有喚醒線程一個(gè)對(duì)象的鎖,而是讓它們競爭。1.35 啟動(dòng)一個(gè)線程用run還是start啟動(dòng)一個(gè)線程是調(diào)用start()方法,使線程就緒狀態(tài),以后可以被調(diào)度為運(yùn)行狀態(tài),一個(gè)線程必須關(guān)聯(lián)一些具體的執(zhí)行代碼,run()方法是該線程所關(guān)聯(lián)的執(zhí)行代碼。1.36 List和Map的區(qū)別一個(gè)是存儲(chǔ)單列數(shù)據(jù)的集合,另一個(gè)是存儲(chǔ)鍵和值的雙列數(shù)據(jù)的集合,List中存儲(chǔ)的數(shù)據(jù)是有順序,并且允許重復(fù);Map中存儲(chǔ)的數(shù)據(jù)是沒有順序的,其鍵是不能重復(fù)的,它的值是可以有重復(fù)的。1、 List有重復(fù)值,Map沒有重復(fù)key,但可以有重復(fù)值2、 List有序,Map不一定有序3、 List只能存單列值,Map可以存雙列值1.37 說出ArrayList,Vector, LinkedList的存儲(chǔ)性能和特性1. ArrayList和Vector使用數(shù)組存儲(chǔ)元素;LinkedList使用鏈表存儲(chǔ)元素2. ArrayList和Vector插入刪除數(shù)據(jù)時(shí),需要搬運(yùn)數(shù)據(jù),效率較差;LinkedList使用鏈表,不需要搬運(yùn)數(shù)據(jù),效率高3. ArrayList和Vectory查詢時(shí),按數(shù)組下標(biāo)查詢,不需要遍歷,效率高;LinkedList需要遍歷,查詢效率底1.38 Java序列化序列化是把內(nèi)存Java對(duì)象保存到存儲(chǔ)介質(zhì)中,反序列化就是把存儲(chǔ)介質(zhì)中的數(shù)據(jù)轉(zhuǎn)化為Java對(duì)象。Java通過ObjectInputStream和ObjectOutputStream實(shí)現(xiàn)序列化和反序列化。需要進(jìn)行序列化的對(duì)象的類必須實(shí)現(xiàn)Serializable接口,通常情況下需要滿足以下條件:1. 強(qiáng)烈建議手動(dòng)生成serialVersionUID常量2. 如果需要加解密的話,需要實(shí)現(xiàn)兩個(gè)方法readObject和writeObject方法3. 如果使用Hibernate二級(jí)緩存或其它緩存服務(wù)器的話,對(duì)象必須是可序列化的4. 如果需要遠(yuǎn)程調(diào)用對(duì)象或傳值的話,則對(duì)像需要序列化5. 序列化類的可序列化成員必須也是可序列化的,不需要序列化的屬性用transient修飾1.39 堆和棧的區(qū)別Java的內(nèi)存分為兩類,一類是棧內(nèi)存,一類是堆內(nèi)存。棧中存儲(chǔ)的是當(dāng)前線程的方法調(diào)用、基本數(shù)據(jù)類型和對(duì)象的引用,棧是有序的。堆中存儲(chǔ)的是對(duì)象的值,堆是無序的。方法中的局部變量使用final修飾后,放在堆中,而不是棧中。1.40 什么時(shí)候用斷言assertion(斷言)在軟件開發(fā)中是一種常用的調(diào)試方式,很多開發(fā)語言中都支持這種機(jī)制。在實(shí)現(xiàn)中,assertion就是在程序中的一條語句,它對(duì)一個(gè)boolean表達(dá)式進(jìn)行檢查,一個(gè)正確程序必須保證這個(gè)boolean表達(dá)式的值為true;如果該值為false,說明程序已經(jīng)處于不正確的狀態(tài)下,assert將給出警告或退出。一般來說,assertion用于保證程序最基本、關(guān)鍵的正確性。assertion檢查通常在開發(fā)和測(cè)試時(shí)開啟。為了提高性能,在軟件發(fā)布后,assertion檢查通常是關(guān)閉的。1.41 Java中會(huì)有內(nèi)存泄露嗎會(huì),原因:如果對(duì)象被集合類引用時(shí),如果只是添加,而不刪除,會(huì)引起內(nèi)存泄漏,嚴(yán)重時(shí)會(huì)發(fā)出內(nèi)存溢出。Java中的內(nèi)存泄露的情況:長生命周期的對(duì)象持有短生命周期對(duì)象的引用就很可能發(fā)生內(nèi)存泄露。內(nèi)存泄露的另外一種情況:當(dāng)一個(gè)對(duì)象被存儲(chǔ)進(jìn)HashSet或HashMap中以后,就不能修改這個(gè)對(duì)象中的那些參與計(jì)算哈希值的字段了,否則,對(duì)象修改后的哈希值與最初存儲(chǔ)進(jìn)HashSet集合中時(shí)的哈希值就不同了,在這種情況下,即使在contains方法使用該對(duì)象的當(dāng)前引用作為的參數(shù)去HashSet集合中檢索對(duì)象,也將返回找不到對(duì)象的結(jié)果,這也會(huì)導(dǎo)致無法從HashSet集合中單獨(dú)刪除當(dāng)前對(duì)象,造成內(nèi)存泄露。1.42 簡述反射的作用假如我們有兩個(gè)程序員,一個(gè)程序員在寫程序的時(shí)候,需要使用第二個(gè)程序員所寫的類,但第二個(gè)程序員并沒完成他所寫的類。那么第一個(gè)程序員的代碼能否通過編譯呢?這是不能通過編譯的。利用Java反射的機(jī)制,就可以讓第一個(gè)程序員在沒有得到第二個(gè)程序員所寫的類的時(shí)候,來完成自身代碼的編譯。Java的反射機(jī)制它知道類的基本結(jié)構(gòu),這種對(duì)Java類結(jié)構(gòu)探知的能力,我們稱為Java類的“自審”。大家都用過Jcreator和eclipse。當(dāng)我們構(gòu)建出一個(gè)對(duì)象的時(shí)候,去調(diào)用該對(duì)象的方法和屬性的時(shí)候。一按點(diǎn),編譯工具就會(huì)自動(dòng)的把該對(duì)象能夠使用的所有的方法和屬性全部都列出來,供用戶進(jìn)行選擇。這就是利用了Java反射的原理,是對(duì)我們創(chuàng)建對(duì)象的探知、自審。2 Servlet篇2.1 Servlet概述Servlet是一個(gè)web容器,我們通常用的servlet是httpservlet,而httpservlet又是繼承于genericservlet,而genericservlet又實(shí)現(xiàn)了servlet接口。servlet的生命周期是 :先進(jìn)行實(shí)例化,然后是初始化,然后是提高服務(wù),然后銷毀,最后不可用,在這五個(gè)生命周期,其中,初始化是調(diào)用的init方法,這個(gè)方法只有一個(gè),而提高服務(wù)的時(shí)候調(diào)用的是service方法,而我們具體在我們所寫的這個(gè)方法中,因?yàn)槲覀兝^承了httpservlet,其實(shí)就是對(duì)應(yīng)了doGet(),doPost(),這種方法,然后據(jù)我了解,servlet是單例的。非線程安全的,我們通常有一下幾種方案來解決:第一種,繼承SingleThreadModel但是這樣每次都會(huì)創(chuàng)建一個(gè)新的servlet實(shí)例,但這樣消耗服務(wù)器的內(nèi)存,降低了性能,并且這個(gè)接口現(xiàn)在已經(jīng)過時(shí)了,不推薦使用。第二種:我們盡量避免使用全局變量,就我個(gè)人而言,我比較喜歡使用這種方法。第三種,我們可以通過使用ThreadLocal, 內(nèi)部結(jié)構(gòu)是一個(gè)Map結(jié)構(gòu),用當(dāng)前線程作為key,他會(huì)創(chuàng)建多個(gè)副本。get,set方。第四種,我們當(dāng)然還可以來加鎖,進(jìn)行解決線程問題。而且我還知道,向我們這種常用的MVC框架,struts1,spring這些MVC框架,都是基于servlet發(fā)展而來的,就比如struts1 的核心總控制器是ActionServlet,而springMVC的前端總控制器是dispatchServlet,在項(xiàng)目我們?cè)?jīng)用serlet來生成 圖片驗(yàn)證碼的,防止用戶進(jìn)行暴力破解(別人問了,再回答)servlet的配置文件 web.xml ImageCodeServlet org.leopard.code.ImageCodeServlet ImageCodeServlet /d描述:我在web.xml中,我首先需要寫一個(gè)servlet標(biāo)簽,servlet標(biāo)簽中有兩個(gè)子標(biāo)簽,一個(gè)叫servlet-name,這個(gè)name可以隨便起,但是要保證唯一性,除此之外,在這個(gè)servlet-name下有一個(gè)servlet-class,這個(gè)servlet-class對(duì)應(yīng)的就是我后臺(tái)提高服務(wù)的servlet,除此之外還有一個(gè)servlet-mapping,這個(gè)里邊首先有一個(gè)servl-name。,這個(gè)servl-name首先要保證和上邊的servlet-name保持一致,除此之外還有一個(gè)url-pattern,這是一個(gè)虛擬路徑,是用來發(fā)送請(qǐng)求的url地址。2.2 九大隱式對(duì)象輸入/輸出對(duì)象: request(也屬于作用域通信對(duì)象) response out作用域通信對(duì)象: session application pageContextServlet 對(duì)象: page config錯(cuò)誤對(duì)象: exception2.3 page和pageContext的區(qū)別page是servlet對(duì)象;使用this關(guān)鍵字,它的作用范圍是在同一頁面。pageContext是作用域通信對(duì)象;通常使用setAttribute()和getAttribute()來設(shè)置和獲取存放對(duì)象的值。2.4 GET和POST的區(qū)別1、 get是從服務(wù)器上獲取數(shù)據(jù),post是向服務(wù)器傳送數(shù)據(jù)。2、 get傳送的數(shù)據(jù)量較小,不能大于2KB。post傳送的數(shù)據(jù)量較大,一般被默認(rèn)為不受限制。3、 get安全性非常低,post安全性較高。但是執(zhí)行效率卻比Post方法好。4、 在進(jìn)行文件上傳時(shí)只能使用post而不能是get。2.5 轉(zhuǎn)發(fā)與重定向的區(qū)別1、 從數(shù)據(jù)共享上區(qū)別:forword是一個(gè)請(qǐng)求的延續(xù),可以共享request作用域的數(shù)據(jù)。redirect開啟一個(gè)新的請(qǐng)求,不可以共享request作用域的數(shù)據(jù),但可以通過URL方式進(jìn)行數(shù)據(jù)發(fā)送。2、 從地址欄上區(qū)別:forword轉(zhuǎn)發(fā)地址欄不發(fā)生變化,redirect轉(zhuǎn)發(fā)地址欄發(fā)生變化。3、 從性能上區(qū)別:forword性能要高于redirect。4、 常見使用上的區(qū)別:因?yàn)樯闲阅苌嫌袇^(qū)別,在本系統(tǒng)中請(qǐng)求跳轉(zhuǎn)建議使用forword,如果是跨域訪問,建議使用redirect。2.6 四大作用域介紹四個(gè)作用域從大到?。篴ppliactionsessionrequestpage application:全局作用范圍,整個(gè)應(yīng)用程序共享.生命周期為:應(yīng)用程序啟動(dòng)到停止。 session:會(huì)話作用域,當(dāng)用戶首次訪問時(shí),產(chǎn)生一個(gè)新的會(huì)話,以后服務(wù)器就可以記住這個(gè)會(huì)話狀態(tài)。 request:請(qǐng)求作用域,就是客戶端的一次請(qǐng)求。 page:一個(gè)JSP頁面。以上作用范圍使越來越小, request和page的生命周期都是短暫的,他們之間的區(qū)別就是:一個(gè)request可以包含多個(gè)page頁(include,forward)。2.7 session和cookie的區(qū)別session是存儲(chǔ)在服務(wù)器端,cookie是存儲(chǔ)在客戶端的,所以從安全來講session的安全性要比cookie高,然后我們獲取session里的信息是通過存放在會(huì)話cookie里的sessionid獲取的。又由于session是存放在服務(wù)器的內(nèi)存中,所以session里的東西不斷增加會(huì)造成服務(wù)器的負(fù)擔(dān),所以需要把很重要的信息才存儲(chǔ)在session中,而把一些次要東西存儲(chǔ)在客戶端的cookie里,然后cookie確切的說分為兩大類分為會(huì)話cookie和持久化cookie,會(huì)話cookie確切的說是,存放在客戶端瀏覽器的內(nèi)存中,所以說他的生命周期和瀏覽器是一致的,瀏覽器關(guān)了會(huì)話cookie也就消失了,然而持久化cookie是存放在客戶端硬盤中,而持久化cookie的生命周期就是我們?cè)谠O(shè)置cookie時(shí)候設(shè)置的那個(gè)保存時(shí)間,然后我們考慮一問題當(dāng)瀏覽器關(guān)閉時(shí)session會(huì)不會(huì)丟失,從上面敘述分析session的信息是通過會(huì)話cookie的sessionid獲取的,當(dāng)瀏覽器關(guān)閉的時(shí)候會(huì)話cookie
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 大學(xué)國際貿(mào)易試題及答案
- 齊齊哈爾高等師范專科學(xué)?!冬F(xiàn)代生物醫(yī)學(xué)與諾貝爾獎(jiǎng)》2023-2024學(xué)年第一學(xué)期期末試卷
- 衡陽師范學(xué)院《幼兒美術(shù)(3)》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南省邵陽縣2024年數(shù)學(xué)七年級(jí)第一學(xué)期期末監(jiān)測(cè)試題含解析
- 遼寧石化職業(yè)技術(shù)學(xué)院《普通生態(tài)學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 冀中職業(yè)學(xué)院《巖土測(cè)試技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年安徽省定遠(yuǎn)縣七上數(shù)學(xué)期末統(tǒng)考試題含解析
- 濟(jì)南工程職業(yè)技術(shù)學(xué)院《實(shí)驗(yàn)動(dòng)物學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024-2025學(xué)年陜西省寶雞市渭濱區(qū)清姜路中學(xué)數(shù)學(xué)七年級(jí)第一學(xué)期期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 安徽現(xiàn)代信息工程職業(yè)學(xué)院《幼兒故事插畫》2023-2024學(xué)年第一學(xué)期期末試卷
- 淺談小班幼兒進(jìn)餐問題及良好用餐習(xí)慣的養(yǎng)成
- 牛津自然拼讀
- 單位政審證明
- 陜西省榆林市2022-2023學(xué)年高一下學(xué)期期末考試化學(xué)試題(含答案)
- 冶金企業(yè)重大事故隱患判定檢查表
- 2023年藥學(xué)考試-中藥學(xué)(副高)考試高頻試題(歷年真題)帶答案
- 西北農(nóng)林科技大學(xué)自主招生考試綜合素質(zhì)測(cè)試面試試題答題技巧匯總
- 《導(dǎo)彈制導(dǎo)原理》
- 《綠色建筑概論》整套教學(xué)課件
- 2021年中國美術(shù)學(xué)院輔導(dǎo)員招聘考試題庫及答案解析
- 年產(chǎn)3萬噸硫酸鉀,1.8萬噸副產(chǎn)工業(yè)鹽項(xiàng)目建設(shè)可行性研究報(bào)告
評(píng)論
0/150
提交評(píng)論