编程语言习题集(1)
從今天開始,我們新開了一個欄目,叫做編程語言習題集,供大家對于常見的語言(Java、C#、C++、python、js)等進行相關的練習。與數理邏輯不同的是,我們這里是混合的,只挑選出容易錯的題目來進行講解。
1. C/C++
1.1 Math.round(11.5) 等于多少 (). Math.round(-11.5) 等于多少 ( ) 
 A.11 ,-11 
 B.11 ,-12 
 C.12 ,-11 
 D.12 ,-12
參考答案:C
解析:Math類中提供了三個與取整有關的方法:ceil,floor,round,這些方法的作用于它們的英文名稱的含義相對應,例如:
ceil的英文意義是天花板,該方法就表示向上取整,Math.ceil(11.3)的結果為12,Math.ceil(-11.6)的結果為-11;
floor的英文是地板,該方法就表示向下取整,Math.floor(11.6)的結果是11,Math.floor(-11.4)的結果-12;
最難掌握的是round方法,他表示“四舍五入”,算法為Math.floor(x+0.5),即將原來的數字加上0.5后再向下取整,所以,Math.round(11.5)的結果是12,Math.round(-11.5)的結果為-11.
1.2有如下程序段
#include <iostream> using namespace std;class A {public:~A() {cout << "~A()";} }; class B{public:virtual ~B() {cout << "~B()"; } }; class C: public A, public B {public:~C() {cout << "~C()";} }; int main() {C * c = new C;B * b1 = dynamic_cast<B *>(c);A * a2 = dynamic_cast<A *>(b1);delete a2; }則程序輸出為: 
 A.~C()~B()~A() 
 B.~C()~A()~B() 
 C.A)B)都有可能 
 D.以上都不對
參考答案:D
解析:main()函數中,第一句只用了new,調用了構造函數,沒用delete,不會調用析構函數,內存泄露。
第二句、第三句只是定義了指向不同對象的指針,不會產生對象,所以構造函數、析構函數都沒調用,最后一句delete調用析構函數,因為基類A的析構函數不是虛函數,所以只調用A的析構函數,輸出:~A().
如果A的析構函數加上virtual, 輸出:~C()~B()~A(),與直接delete c輸出一樣。 析構函數聲明為虛函數,這樣析構時,先調用派生類的析構函數,再調用基類的析構函數,防止內存泄露。
1.3有這樣一個類:
class Eye {public:void Look(void); };現在希望定義一個Head類,也想實現Look的功能,應該使用()方法,實現代碼重用。 
 A.繼承 
 B.組合 
 C.模板 
 D.過濾
參考答案:B
解析:組合是在新類中以原有類的對象作為數據成員,繼承是在不改變現有的類的基礎上,采用現有類的形式并在其中添加新代碼,組合一般用于在新類中使用現有類的功能而不是他的接口的情況,就是新類用戶看到的只是為新類所定義的接口。
而繼承則是用于在新類需要向基類轉化的情況(多態),這也是組合和繼承使用的最清晰的判斷方法。
簡單來講:組合就是從小到大,而繼承則是從大到小。
1.4若 a 是 float 型變量,b 是 unsigned 型變量,以下輸入語句中合法的是()。 
 A.scanf(“%6.2f%d”,&a,&b); 
 B.scanf(“%f%n”,&a,&b); 
 C.scanf(“%f%3o”,&a,&b); 
 D.scanf(“%f%f”,&a,&b);
參考答案:BC
解析: 
 A.浮點數類型定義寬度不能定義精度,所以%6.2是不對的,如果是%6則正確。還需要注意的是寬度是uint類型的,別定義為負數;scanf不存在printf那種左右對齊的限定符
B.%n用于接受一個uint,代表到%n為止所輸入的字符數,其本身不消耗字符
C.u/o/x分別代表10/8/16進制的無符號數輸入
D.整型數不能用浮點數模式輸入,因為整型數和浮點型的機內表示完全不同,混用會導致未定義的結果
2. Java
2.1下面不屬于HttpServletRequest接口完成功能的是? 
 A.讀取cookie 
 B.讀取HTTP頭 
 C.設定響應的content類型 
 D.讀取路徑信息
參考答案:C
解析:A: request.getCookies();
B: request.getHeader(String s);
C: response.setContentType(“text/html;charset=utf-8”);
D: request.getContextPath();/request.getServletPath();
可以看到C是response完成的結果,在請求的時候是不能設定響應的Content類型的。
2.2檢查程序,是否存在問題,如果存在指出問題所在,如果不存在,說明輸出結果。
public class HelloB extends HelloA {public HelloB(){}{System.out.println("I’m B class");}static{System.out.println("static B");}public static void main(String[] args){new HelloB();} } class HelloA {public HelloA(){}{System.out.println("I’m A class");}static{System.out.println("static A");} }A. static A\nI’m A class\nstatic B\nI’m B class 
 B.I’m A class\nI’m B class\nstatic A\nstatic B 
 C.static A\nstatic B\nI’m A class\nI’m B class 
 D.I’m A class\nstatic A\nI’m B class\nstatic B
參考答案:C 
 解析: 
 1.靜態代碼塊 2.構造代碼塊3.構造方法執行順序是1>2>3
明白他們是干嘛的就理解了。
1.靜態代碼塊:是在類的加載過程的第三步初始化的時候進行的,主要目的是給類變量賦予初始值。
2.構造代碼塊:是獨立的,必須依附載體才能運行,Java會把構造代碼塊放到每種構造方法的前面,用于實例化一些共有的實例變量,減少代碼量。
3.構造方法:用于實例化變量。
1是類級別的,2、3是實例級別的,自然1要優先23.
再就是明白一點:對子類得主動使用會導致對其父類得主動使用,所以盡管實例化的是子類,但也會導致父類的初始化和實例化,且優于子類執行。
2.3關于struts框架,下面那些說法是正確的? 
 A.Struts中無法完成上傳功能 
 B.Struts框架基于MVC模式 
 C.Struts框架容易引起流程復雜、結構不清晰等問題 
 D.Struts可以有效地降低項目的類文件數目
參考答案:B 
 解析:A,structs可以進行文件上傳
B,structs基于MVC模式,MVC是模型,視圖,控制器,是一種設計模式
C,structs框架讓流程結構更清晰
D,structs需要很多 action類,會增加類文件數目
2.4關于sleep()和wait(),以下描述錯誤的一項是( ) 
 A.sleep是線程類(Thread)的方法,wait是Object類的方法; 
 B.sleep不釋放對象鎖,wait放棄對象鎖 
 C.sleep暫停線程、但監控狀態仍然保持,結束后會自動恢復 
 D.wait后進入等待鎖定池,只有針對此對象發出notify方法后獲得對象鎖進入運行狀態
參考答案:D
解析:ava中的多線程是一種搶占式的機制,而不是分時機制。搶占式的機制是有多個線程處于可運行狀態,但是只有一個線程在運行。
wait()和sleep()的共同點 : 
 1. 他們都是在多線程的環境下,都可以在程序的調用處阻塞指定的毫秒數,并返回。 
 2. wait()和sleep()都可以通過interrupt()方法 打斷線程的暫停狀態 ,從而使線程立刻拋出InterruptedException。 
 如果線程A希望立即結束線程B,則可以對線程B對應的Thread實例調用interrupt方法。如果此刻線程B正在wait/sleep/join,則線程B會立刻拋出InterruptedException,在catch() {} 中直接return即可安全地結束線程。 
需要注意的是,InterruptedException是線程自己從內部拋出的,并不是interrupt()方法拋出的。對某一線程調用 interrupt()時,如果該線程正在執行普通的代碼,那么該線程根本就不會拋出InterruptedException。但是,一旦該線程進入到 wait()/sleep()/join()后,就會立刻拋出InterruptedException 。
wait()和sleep()的不同點 : 
 1.每個對象都有一個鎖來控制同步訪問。Synchronized關鍵字可以和對象的鎖交互,來實現線程的同步。 sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得其他線程可以使用同步控制塊或者方法。 
 2.wait,notify和notifyAll只能在同步控制方法或者同步控制塊里面使用,而sleep可以在任何地方使用 
 3.sleep必須捕獲異常,而wait,notify和notifyAll不需要捕獲異常 
 4.sleep是線程類(Thread)的方法,導致此線程暫停執行指定時間,給執行機會給其他線程,但是監控狀態依然保持,到時后會自動恢復。調用sleep不會釋放對象鎖。 
 5.wait是Object類的方法,對此對象調用wait方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發出notify方法(或notifyAll)后本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態。
2.5JAVA反射機制主要提供了以下哪些功能? 
 A.在運行時判斷一個對象所屬的類 
 B.在運行時構造一個類的對象 
 C.在運行時判斷一個類所具有的成員變量和方法 
 D.在運行時調用一個對象的方法
參考答案:A B C D 
 解析:JAVA反射機制是在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。
Java反射機制主要提供了以下功能: 
 在運行時判斷任意一個對象所屬的類; 
 在運行時構造任意一個類的對象; 
 在運行時判斷任意一個類所具有的成員變量和方法; 
 在運行時調用任意一個對象的方法; 
 生成動態代理。
2.6final、finally和finalize的區別中,下述說法正確的有? 
 A.final用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。 
 B.finally是異常處理語句結構的一部分,表示總是執行。 
 C.finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源的回收,例如關閉文件等。 
 D.引用變量被final修飾之后,不能再指向其他對象,它指向的對象的內容也是不可變的。
參考答案:A B
解析: 
 一.final
如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變量必須在new一個對象時初始化(即只能在聲明變量或構造器或代碼塊內初始化),而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能覆蓋(重寫)。
二.finally
在異常處理時提供 finally 塊來執行任何清除操作。如果拋出一個異常,那么相匹配的 catch 子句就會執行,然后控制就會進入 finally 塊(如果有的話)。
三.finalize
方法名。Java 技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的。
注意:finalize不一定被jvm調用,只有當垃圾回收器要清除垃圾時才被調用。
2.7Java類Demo中存在方法func0、func1、func2、func3和func4,請問該方法中,哪些是不合法的定義?( )
public class Demo{float func0(){byte i=1;return i;}float func1(){int i=1;return;}float func2(){short i=2;return i;}float func3(){long i=3;return i;}float func4(){double i=4;return i;} }A.func1 
 B.func2 
 C.func3 
 D.func4
參考答案:AD
解析:數據類型的轉換,分為自動轉換和強制轉換。自動轉換是程序在執行過程中 “ 悄然 ” 進行的轉換,不需要用戶提前聲明,一般是從位數低的類型向位數高的類型轉換;強制類型轉換則必須在代碼中聲明,轉換順序不受限制。
自動轉換按從低到高的順序轉換。不同類型數據間的優先關系如下: 
 低 ———————————————> 高 
 byte,short,char-> int -> long -> float -> double
而由大到小需要強制轉換,由小到大不需要。
3.C#
3.1定義以下泛型: 
 Internal sealed class DictionaryStringKey:Dictionary{} 
 哪個選項不會拋出異常() 
 A.Type t=typeof(Dictionary<,>); 
 Object o=Activator.CreateInstance(t); 
 B.Type t=typeof(DictionaryStringKey<>); 
 Object o=Activator.CreateInstance(t); 
 C.Type t=typeof(DictionaryStringKey); 
 Object o=Activator.CreateInstance(t);
參考答案:C
解析:選C 在.NET中,CLR會為應用程序使用的每個類型創建一個內部數據結構,這種數據結構成為:類型對象(type Object)。
具有泛型類型參數的類型仍然是類型,CLR同樣會為它創建一個內部類型對象。無論是引用類型(類)、值類型(結構)、接口類型,還是委托類型,這一點都是成立的。
然而,具有泛型類型參數的類型稱之為:開放類型(open type),CLR禁止構造開放類型的任何實例。這一點類似于CLR禁止構造結構類型的實例。
代碼引用一個泛型類型時,可指定一組泛型類型實參,假如所有類型實參傳遞的都是實際數據類型,類型就稱為封閉類型(closed type)。
CLR允許構造封閉類型的實例,然而,當代碼引用一個泛型類型的時候,可能會留下一些泛型類型實參未指定,這會在CLR中創建一個新的開放類型的對象,而且不能創建該類型的實例。
3.2下列描述錯誤的是:( ) 
 A.類不可以多繼承而接口可以 
 B.抽象類自身可以定義成員而接口不可以 
 C.抽象類和接口都不能被實例化 
 D.一個類可以有多個基類和多個基接口
參考答案:D(BD)
解析:參考答案給出的是D,但是其實嚴格意義上講,B也是錯的,接口也是可以定義常量成員的。
如果按照時間分類的話,類的成員分為靜態成員(類)和實例成員(對象)。如果按照存儲類型的話,可分為屬性、方法、索引、代理、事件、嵌套類和字段。而靜態常量也是屬于成員的。
3.3下面不是面向對象的基本原則的是? 
 A.單一職責原則(Single-Resposibility Principle) 
 B.開放封閉原則(Open-Closed principle) 
 C.抽象類原則(Abstract-Class principle) 
 D.依賴倒置原則(Dependecy-Inversion Principle) 
 E.接口隔離原則(Interface-Segregation Principle)
參考答案:C
解析:五個基本原則:
單一職責原則(Single-Resposibility Principle):一個類,最好只做一件事,只有一個引起它的變化。單一職責原則可以看做是低耦合、高內聚在面向對象原則上的引申,將職責定義為引起變化的原因,以提高內聚性來減少引起變化的原因。
開放封閉原則(Open-Closed principle):軟件實體應該是可擴展的,而不可修改的。也就是,對擴展開放,對修改封閉的。
Liskov替換原則(Liskov-Substituion Principle):子類必須能夠替換其基類。這一思想體現為對繼承機制的約束規范,只有子類能夠替換基類時,才能保證系統在運行期內識別子類,這是保證繼承復用的基礎。
接口隔離原則(Interface-Segregation Principle):使用多個小的專門的接口,而不要使用一個大的總接口。
依賴倒置原則(Dependecy-Inversion Principle):依賴于抽象。具體而言就是高層模塊不依賴于底層模塊,二者都同依賴于抽象;抽象不依賴于具體,具體依賴于抽象。
全部連起來就是一個單詞:立方體(solid),很好記!!!
3.4ASP中Session對象默認有效期為多少分鐘? 
 A.10 
 B.20 
 C.30 
 D.60
參考答案:B
解析:ASP中默認的時間20分鐘
JSP使用TomCat服務器,默認是30分鐘。
3.5以下關于 ref 和 out 描述哪些項是正確的?() 
 A.使用ref參數,傳遞到ref參數的參數必須是最先初始化 
 B.使用out參數,傳遞到out參數的參數必須最先初始化 
 C.使用ref參數,必須將參數作為ref參數顯式傳遞到方法 
 D.使用out參數,必須將參數作為out參數顯示傳遞到方法
參考答案:A C D
解析:out、ref都是引用傳遞,傳遞后使用都會改變原有的值,引用傳遞都需要顯示傳遞到方法。
ref 是有進有出,即能將參數傳進去,函數里對變量的改變在函數結束時會改變值,因此需要在傳遞進去前初始化。
out 是只出不進,即將參數傳進去時值是無效的,out會把參數清空,所以無法將一個值從 out 傳遞進去。
4js
4.11==true的返回值是true,這句話是否正確? 
 A.正確 
 B.錯誤
參考答案:A
看到很多說的類型轉化其實有點錯誤,并不是把1轉化成true,而是把true轉化成1。
在==的隱式轉化中,是對兩邊進行Number(),Number(true) = 1 
 具體的,在轉換不同的數據類型時,相等和不相等操作符都會遵循下列基本規則:
如果有一個操作數是布爾值,則在比較之前先將其轉換為數值——false轉換為0,而true轉換為1;
如果一個操作符是字符串,另一個操作數是數值,在比較相等性之前先將字符串轉換為數值;
如果一個操作數是對象,另一個操作數不是,則調用對象的valueof()方法,用得到的基本類型值按照前面的規則進行比較;
這兩個操作符在進行比較時則要遵循下列規則。 
 (1) null和undefined是相等的。 
 (2) 要比較相等性之前,不能將null和undefined轉換成其他任何值。 
 (3) 如果有一個操作數是NaN,則相等操作符返回false,而不相等操作符返回true。重要提示:即使兩個操作數都是NaN,相等操作符也返回false,因為按照規則,NaN不等于NaN。 
 (4) 如果兩個操作數都是對象,則比較它們是不是同一個對象。如果兩個操作數都指向同一個對象,則相等操作符返回true;否則返回false。
4.2下面不屬于ajax事件的是? 
 A.ajaxComplete(callback) 
 B.ajaxSuccess(callback) 
 C.$.post(url) 
 D.ajaxSend(callback)
參考答案:C
解析:$.post(url)是ajax請求; 
 ajax的事件是: 
 ajaxComplete(callback) 
 ajaxError(callback) 
 ajaxSend(callback) 
 ajaxStart(callback) 
 ajaxStop(callback) 
 ajaxSuccess(callback)
4.3表達式 ”2”+3+4 的值為? 
 A.”27” 
 B.9 
 C.”234” 
 D.”9”
參考答案:C
解析: 
 1、“+”是左關聯,表達式相當于(“2”+3)+4 
 2、根據ES5規范11,6,1節,如果某個操作數是字符串或者能夠通過以下步驟轉換為字符串的話,+將進行拼接操作。
4.4在jquery中想要找到所有元素的同輩元素,下面哪一個是可以實現的? 
 A.eq(index) 
 B.find(expr) 
 C.siblings([expr]) 
 D.next()
參考答案;C 
 解析: 
 jQuery siblings() 方法 
 siblings() 方法返回被選元素的所有同胞元素。 
 下面的例子返回 <h2>的所有同胞元素:
jQuery next() 方法 
 next() 方法返回被選元素的下一個同胞元素。 
 該方法只返回一個元素。 
 下面的例子返回 h2 的下一個同胞元素:
jQuery find() 方法 
 find() 方法返回被選元素的后代元素,一路向下直到最后一個后代。 
 下面的例子返回屬于 <div> 后代的所有<span>元素:
4.5以下js表達式返回false的是() 
 A.1==true 
 B.“”==false 
 C.false==null 
 D.null==undefined
參考答案:C
解析:同第一題答案一樣。
4.6下面這個JS程序的輸出是什么:
function Foo() {var i = 0;return function() {console.log(i++);} }var f1 = Foo(),f2 = Foo(); f1(); f1(); f2();A.0 1 0 
 B.0 1 2 
 C.0 0 0 
 D.0 0 2
參考答案:A
解析:本題考查閉包。
在一個函數的內部定義另一個函數,通過另一個函數來訪問這個函數的局部變量,這是創建閉包的最常見的方式。而閉包會常駐內存(增大內存的使用量)所以,第一次調用f1后,i輸出為0,但i++后,在第二次調用f1時,輸出的i就為1了。另外,f2是f1都是同時聲明的,二者地位相當,結果也都一樣。
4.7下面有關瀏覽器中使用js跨域獲取數據的描述,說法錯誤的是? 
 A.域名、端口相同,協議不同,屬于相同的域 
 B.js可以使用jsonp進行跨域 
 C.通過修改document.domain來跨子域 
 D.使用window.name來進行跨域
參考答案:A
解析:這題是醉翁之意不在酒,我主要想介紹一下js跨域獲取數據的方法:
1.CORS 
 CORS(Corss-Origin Resource Sharing,跨資源共享),基本思想是使用自定義的HTTP頭部讓瀏覽器與服務器進行溝通,從而決定請求或響應的成功或失敗。即給請求附加一個額外的Origin頭部,其中包含請求頁面的源信息(協議、域名和端口),以便服務器根據這個頭部決定是否給予響應。
2.document.domain 
 將頁面的document.domain設置為相同的值,頁面間可以互相訪問對方的JavaScript對象。 
 注意: 
 不能將值設置為URL中不包含的域; 
 松散的域名不能再設置為緊繃的域名。
3.圖像Ping 
 var img=new Image(); 
 img.οnlοad=img.οnerrοr=function(){ 
 … … 
 } 
 img.src=”url?name=value”; 
 請求數據通過查詢字符串的形式發送,響應可以是任意內容,通常是像素圖或204響應。 
 圖像Ping最常用于跟蹤用戶點擊頁面或動態廣告曝光次數。 
 缺點: 
 只能發送GET請求; 
 無法訪問服務器的響應文本,只能用于瀏覽器與服務器間的單向通信。
4.Jsonp 
 var script=document.createElement(“script”); 
 script.src=”url?callback=handleResponse”; 
 document.body.insertBefore(script,document.body.firstChild); 
 JSONP由兩部分組成:回調函數和數據 
 回調函數是接收到響應時應該在頁面中調用的函數,其名字一般在請求中指定。 
 數據是傳入回調函數中的JSON數據。 
 優點: 
 能夠直接訪問響應文本,可用于瀏覽器與服務器間的雙向通信。 
 缺點: 
 JSONP從其他域中加載代碼執行,其他域可能不安全; 
 難以確定JSONP請求是否失敗。
5.Comet 
 Comet可實現服務器向瀏覽器推送數據。 
 Comet是實現方式:長輪詢和流 
 短輪詢即瀏覽器定時向服務器發送請求,看有沒有數據更新。 
 長輪詢即瀏覽器向服務器發送一個請求,然后服務器一直保持連接打開,直到有數據可發送。發送完數據后,瀏覽器關閉連接,隨即又向服務器發起一個新請求。其優點是所有瀏覽器都支持,使用XHR對象和setTimeout()即可實現。 
 流即瀏覽器向服務器發送一個請求,而服務器保持連接打開,然后周期性地向瀏覽器發送數據,頁面的整個生命周期內只使用一個HTTP連接。
6.WebSocket 
 WebSocket可在一個單獨的持久連接上提供全雙工、雙向通信。 
 WebSocket使用自定義協議,未加密的連接時ws://;加密的鏈接是wss://。 
 var webSocket=new WebSocket(“ws://”); 
 webSocket.send(message); 
 webSocket.onmessage=function(event){ 
 var data=event.data; 
 … …. 
 } 
 注意: 
 必須給WebSocket構造函數傳入絕對URL; 
 WebSocket可以打開任何站點的連接,是否會與某個域中的頁面通信,完全取決于服務器; 
 WebSocket只能發送純文本數據,對于復雜的數據結構,在發送之前必須進行序列化JSON.stringify(message))。
優點: 
 在客戶端和服務器之間發送非常少的數據,減少字節開銷。
4.8javascirpt中的數字在計算機內存儲為多少Byte? 
 A.2 Byte 
 B.4Byte 
 C.8Byte 
 D.16Byte
參考答案:C
解析:關于Javascript中數字的部分知識總結: 
 1. Javascript中,由于其變量內容不同,變量被分為基本數據類型變量和引用數據類型變量。基本類型變量用八字節內存,存儲基本數據類型(數值、布爾值、null和未定義)的值,引用類型變量則只保存對對象、數組和函數等引用類型的值的引用(即內存地址)。 
 2. JS中的數字是不分類型的,也就是沒有byte/int/float/double等的差異。 
 3. JavaScript內部,所有數字都是以64位浮點數形式儲存,即使整數也是如此。
4.9下面有關javascript內部對象的描述,正確的有? 
 A.History 對象包含用戶(在瀏覽器窗口中)訪問過的 URL 
 B.Location 對象包含有關當前 URL 的信息 
 C.Window 對象表示瀏覽器中打開的窗口 
 D.Navigator 對象包含有關瀏覽器的信息
參考答案:ABCD
解析:Navagator:提供有關瀏覽器的信息
Window:Window對象處于對象層次的最頂層,它提供了處理Navagator窗口的方法和屬性
Location:提供了與當前打開的URL一起工作的方法和屬性,是一個靜態的對象
History:提供了與歷史清單有關的信息
Document:包含與文檔元素一起工作的對象,它將這些元素封裝起來供編程人員使用。
5Html/Css
5.1網頁開發中,一般需判斷瀏覽器類型,需通過userAgent中獲取瀏覽器內核來判斷,下列說法錯誤的是? 
 A.一直到IE9,都是Trident內核 
 B.firefox是Gecko內核 
 C.chrome是webkit內核 
 D.IE是目前最快的瀏覽器
參考答案:D
解析:又黑IE,我們也希望有一天D不是錯誤答案。正經的,
-moz代表firefox瀏覽器私有屬性
-ms代表IE瀏覽器私有屬性
-webkit代表chrome、safari私有屬性 IE使用的是Trident內核,Firefox 使用的是Gecko內核。目前使用IE內核的瀏覽器還有搜狗,遨游,360等等。
5.2下面哪條聲明能固定背景圖片() 
 A.background-attachment:fixed; 
 B.background-attachment:scroll; 
 C.background-origin: initial; 
 D.background-clip: initial;
參考答案:A
解析:background-attachment有三個值,scroll是默認值,背景圖像會隨著頁面其余部分的滾動而移動。fixed當頁面的其余部分滾動時,背景圖像不會移動。 inherit規定應該從父元素繼承 background-attachment 屬性的設置。
background-origin屬性規定 background-position 屬性相對于什么位置來定位。
background-clip 屬性規定背景的繪制區域。
5.3用于預格式化文本的標簽是 
 A.<meta> 
 B.<pre> 
 C.<mark> 
 D.<small>
參考答案:B 
 解析: 
 <meta> 元素可提供有關頁面的元信息(meta-information),比如針對搜索引擎和更新頻度的描述和關鍵詞。 
 <meta> 標簽位于文檔的頭部,不包含任何內容。 
 <meta> 標簽的屬性定義了與文檔相關聯的名稱/值對。 
 <mark>標簽定義帶有記號的文本。請在需要突出顯示文本時使用 <m>標簽。 
 <small>標簽呈現小號字體效果。
5.4下列哪些功能可以通過Cookie來實現?( ) 
 A.記錄訪問者的信息 
 B.在頁面之間傳遞信息 
 C.自動識別用戶 
 D.對數據庫進行操作
參考答案:ABC
解析: 
 A 項,訪問者的信息一般都可以處理成 kv 鍵值對的形式,故可以保存在 Cookie 中,正確。
B 項,通過設置 Cookie 的 path 等屬性,可以在特定域名或 URI 下共享 Cookie 信息,正確。
C 項,通過在 Cookie 中保存用戶uid、服務器會話sid等方法,可以記錄用戶登錄狀態,正確。
D 項,Cookie 是保存在用戶瀏覽器上的小文本文件,不是數據庫,也沒有提供操作數據庫的 API,故此項錯誤。
5.5MVC是一種常見的架構。以下描述錯誤的是? 
 A.只有Web系統才能使用MVC 
 B.只有能夠保存正在數據庫里面的實體才能稱之為模型(Model) 
 C.只有以HTML形式顯示的頁面才是視圖(View) 
 D.模型變更之后,只有控制器(Controller)才能驅動視圖變更或重新渲染視圖
參考答案:ABC
解析: 
 Model(模型)是應用程序中用于處理應用程序數據邏輯的部分。 
 通常模型對象負責在數據庫中存取數據。
View(視圖)是應用程序中處理數據顯示的部分。 
 通常視圖是依據模型數據創建的。
Controller(控制器)是應用程序中處理用戶交互的部分。 
 通常控制器負責從視圖讀取數據,控制用戶輸入,并向模型發送數據。
B主要是因為如果現在不在數據庫里實體也是可以成為模型的。
5.6關于bootstrap以下說法正確的是 
 A.為<table>標簽添加.table類可以給表格添加水平分割線 
 B.給表格添加table-striped類可以使IE8中的表格出現斑馬線 
 C.為表格添加table-bordered類可為表格中每個元素增加邊框 
 D.為表格添加table-hover類可為表格中增加鼠標懸停樣式
參考答案:ACD
解析: 
 .table 為任意 <table> 添加基本樣式 (只有橫向分隔線) 
 .table-striped 在 <tbody> 內添加斑馬線形式的條紋 ( IE8 不支持) 
 .table-bordered 為所有表格的單元格添加邊框 
 .table-hover 在 <tbody> 內的任一行啟用鼠標懸停狀態 
 .table-condensed 讓表格更加緊湊
總結
以上是生活随笔為你收集整理的编程语言习题集(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 前端学习(2307):react之pro
- 下一篇: 前端学习(2375):项目介绍结束
