色www,五月婷婷深爱五月,午夜国产一级片,色噜噜综合,国产大胸无码视频,清纯美女被操黄网站在线观看,波多野结衣av高清一区二区三区

求職寶典

6.2 筆試真題 & 詳解

真題1:

第一部分 7道填空題:

1、IM的全稱(chēng)( ),最大的三個(gè)IM( )

2、請(qǐng)寫(xiě)出三個(gè)互聯(lián)網(wǎng)的網(wǎng)址

3、今年上市的5家互聯(lián)網(wǎng)企業(yè)( )

4、5、6、7全是行測(cè)題,邏輯推理型,不難。

第二部分 產(chǎn)品設(shè)計(jì)題

1、人人網(wǎng)想推出一個(gè)校園招聘系統(tǒng),請(qǐng)?jiān)O(shè)計(jì)一個(gè)企業(yè)用戶的注冊(cè)表單界面,并寫(xiě)出設(shè)計(jì)思路及理由。

2、畫(huà)了一個(gè)人人網(wǎng)登陸的界面圖,要找問(wèn)題,并給出修正圖。

第三部分 問(wèn)答題

1、請(qǐng)比較撥號(hào)式電話與按鍵式電話的差異,請(qǐng)從多角度詳細(xì)闡述。

2、假如你是人人音樂(lè)的產(chǎn)品經(jīng)理,請(qǐng)給出3個(gè)你認(rèn)為最重要的數(shù)據(jù),并說(shuō)明理由。

3、博客和微博有哪些不同點(diǎn),請(qǐng)從多角度詳細(xì)闡述。

4、假如有一個(gè)項(xiàng)目預(yù)定要在1個(gè)月內(nèi)完成,結(jié)果一周之后,有一個(gè)技術(shù)人員病了,要住院3周,這時(shí)作為項(xiàng)目負(fù)責(zé)人的你會(huì)怎么辦?

附加題

人人網(wǎng)要做一個(gè)在線電影購(gòu)票系統(tǒng),請(qǐng)盡你所能詳細(xì)描述你的設(shè)計(jì)思路。

最后交卷的時(shí)候才知道要帶簡(jiǎn)歷過(guò)去,還好好心的監(jiān)考人員說(shuō)等我10分鐘,讓我去打印了一份。

真題2:

一、 Java筆試題•單項(xiàng)選擇題

1. Java是從(C)語(yǔ)言改進(jìn)重新設(shè)計(jì)

A.Ada B.C++ C. Pascal D. BASIC

2. 下列語(yǔ)句哪一個(gè)正確(B)

A. Java程序經(jīng)編譯后會(huì)產(chǎn)生machinecode

B. Java程序經(jīng)編譯后會(huì)產(chǎn)生bytecode

C. Java程序經(jīng)編譯后會(huì)產(chǎn)生DLL

D.以上都不正確

3. 下列說(shuō)法正確的有(C)

A. class中的constructor不可省略

B. constructor必須與class同名,但方法不能與class同名

C. constructor在一個(gè)對(duì)象被new時(shí)執(zhí)行

D. 一個(gè)class只能定義一個(gè)constructor

4. 提取Java存取數(shù)據(jù)庫(kù)能力的包是(A)

A.java.sqlB. java.awt C. java.lang D. java.swing

5. 下列運(yùn)算符合法的是(A)

A. && B.<> C. if D. :=

6. 執(zhí)行如下程序代碼

a=0;c=0;

do{

--c;

a=a-1;

}while(a>0);

后,C的值是(C)

A. 0 B. 1C.-1 D. 死循環(huán)

7. 下列哪一種敘述是正確的(D)

A. abstract修飾符可修飾字段、方法和類(lèi)

B. 抽象方法的body部分必須用一對(duì)大括號(hào){}包住

C. 聲明抽象方法,大括號(hào)可有可無(wú)

D. 聲明抽象方法不可寫(xiě)出大括號(hào)

8. 下列語(yǔ)句正確的是(A)

A. 形式參數(shù)可被視為local variable

B. 形式參數(shù)可被字段修飾符修飾

C. 形式參數(shù)為方法被調(diào)用時(shí),真正被傳遞的參數(shù)

D. 形式參數(shù)不可以是對(duì)象

9. 下列哪種說(shuō)法是正確的(D)

A. 實(shí)例方法可直接調(diào)用超類(lèi)的實(shí)例方法

B. 實(shí)例方法可直接調(diào)用超類(lèi)的類(lèi)方法

C. 實(shí)例方法可直接調(diào)用其他類(lèi)的實(shí)例方法

D. 實(shí)例方法可直接調(diào)用本類(lèi)的類(lèi)方法

二、 Java筆試題•多項(xiàng)選擇題

1. Java程序的種類(lèi)有(BCD)

A.類(lèi)(Class) B.Applet C. Application D. Servlet

2. 下列說(shuō)法正確的有(BCD)

A. 環(huán)境變量可在編譯source code時(shí)指定

B. 在編譯程序時(shí),所能指定的環(huán)境變量不包括class path

C. javac一次可同時(shí)編譯數(shù)個(gè)java源文件

D. javac.exe能指定編譯結(jié)果要置于哪個(gè)目錄(directory)

3. 下列標(biāo)識(shí)符不合法的有(ACD)

A.new B.$Usdollars C.1234 D. car.taxi

4. 下列說(shuō)法錯(cuò)誤的有(BCD)

A. 數(shù)組是一種對(duì)象

B. 數(shù)組屬于一種原生類(lèi)

C. int number=[]={31,23,33,43,35,63}

D. 數(shù)組的大小可以任意改變

5. 不能用來(lái)修飾interface的有(ACD)

A.privateB. public C. protected D. static

6. 下列正確的有(ACD)

A. call by value不會(huì)改變實(shí)際參數(shù)的數(shù)值

B. call by reference能改變實(shí)際參數(shù)的參考地址

C. call by reference不能改變實(shí)際參數(shù)的參考地址

D. call byreference能改變實(shí)際參數(shù)的內(nèi)容

7. 下列說(shuō)法錯(cuò)誤的有(ACD)

A. 在類(lèi)方法中可用this來(lái)調(diào)用本類(lèi)的類(lèi)方法

B. 在類(lèi)方法中調(diào)用本類(lèi)的類(lèi)方法時(shí)可直接調(diào)用

C. 在類(lèi)方法中只能調(diào)用本類(lèi)中的類(lèi)方法

D. 在類(lèi)方法中絕對(duì)不能調(diào)用實(shí)例方法

8. 下列說(shuō)法錯(cuò)誤的有(ABC)

A. Java面向?qū)ο笳Z(yǔ)言容許單獨(dú)的過(guò)程和函數(shù)存在

B. Java面向?qū)ο笳Z(yǔ)言容許單獨(dú)的方法存在

C. Java語(yǔ)言中的方法屬于類(lèi)的成員(member)

D. Java語(yǔ)言中的方法必定隸屬于某一類(lèi)(對(duì)象),調(diào)用方法與過(guò)程或函數(shù)相同

9. 下列說(shuō)法錯(cuò)誤的有(BCD)

A. 能被java.exe成功運(yùn)行的java.class文件必須有main()方法

B. J2SDK就是Java API

C. Appletviewer.exe可利用jar選項(xiàng)運(yùn)行.jar文件

D. 能被Appletviewer成功運(yùn)行的java.class文件必須有main()方法

三、 JAVA相關(guān)基礎(chǔ)知識(shí)

1. 面向?qū)ο蟮奶卣饔心男┓矫?

封裝,抽象, 繼承,多態(tài)

2. String是最基本的數(shù)據(jù)類(lèi)型嗎?

基本數(shù)據(jù)類(lèi)型包括byte、int、char、long、float、double、boolean和short。 java.lang.String類(lèi)是final類(lèi)型的,因此不可以繼承這個(gè)類(lèi)、不能修改這個(gè)類(lèi)。為了提高效率節(jié)省空間,我們應(yīng)該用 StringBuffer類(lèi). String 和StringBuffer的區(qū)別: JAVA平臺(tái)提供了兩個(gè)類(lèi):String和StringBuffer,它們可以儲(chǔ)存和操作字符串,即包含多個(gè)字符的字符數(shù)據(jù)。這個(gè)String類(lèi) 提供了數(shù)值不可改變的字符串。而這個(gè)StringBuffer類(lèi)提供的字符串進(jìn)行修改。當(dāng)你知道字符數(shù)據(jù)要改變的時(shí)候你就可以使用 StringBuffer。典型地,你可以使用StringBuffers來(lái)動(dòng)態(tài)構(gòu)造字符數(shù)據(jù)。

3. int和Integer有什么區(qū)別

Integer是int的封裝類(lèi),里面有很多進(jìn)行處理的靜態(tài)方法, Integer是對(duì)象而int不是,內(nèi)存的分配位置也不一樣

4. String和StringBuffer的區(qū)別

在java中有3個(gè)類(lèi)來(lái)負(fù)責(zé)字符的操作。

1.Character 是進(jìn)行單個(gè)字符操作的,

2.String 對(duì)一串字符進(jìn)行操作。不可變類(lèi)。

3.StringBuffer 也是對(duì)一串字符進(jìn)行操作,但是可變類(lèi)。

String:

是對(duì)象不是原始類(lèi)型.

為不可變對(duì)象,一旦被創(chuàng)建,就不能修改它的值.

對(duì)于已經(jīng)存在的String對(duì)象的修改都是重新創(chuàng)建一個(gè)新的對(duì)象,然后把新的值保存進(jìn)去.

String 是final類(lèi),即不能被繼承.

StringBuffer:

是一個(gè)可變對(duì)象,當(dāng)對(duì)他進(jìn)行修改的時(shí)候不會(huì)像String那樣重新建立對(duì)象

它只能通過(guò)構(gòu)造函數(shù)來(lái)建立,

StringBuffer sb = new StringBuffer();

note:不能通過(guò)付值符號(hào)對(duì)他進(jìn)行付值.

sb = "welcome to here!";//error

對(duì)象被建立以后,在內(nèi)存中就會(huì)分配內(nèi)存空間,并初始保存一個(gè)null.向StringBuffer中付值的時(shí)候可以通過(guò)它的append方法.

sb.append("hello");

字符串連接操作中StringBuffer的效率要比String高:

總結(jié): 如果在程序中需要對(duì)字符串進(jìn)行頻繁的修改連接操作的話.使用StringBuffer性能會(huì)更高

5. 運(yùn)行時(shí)異常與一般異常有何異同

Java提供了兩類(lèi)主要的異常:runtime exception和checked exception。checked 異常也就是我們經(jīng)常遇到的IO異常,以及SQL異常都是這種異常。對(duì)于這種異常,JAVA編譯器強(qiáng)制要求我們必需對(duì)出現(xiàn)的這些異常進(jìn)行catch。所以,面對(duì)這種異常不管我們是否愿意,只能自己去寫(xiě)一大堆catch塊去處理可能的異常。

但是另外一種異常:runtime exception,也稱(chēng)運(yùn)行時(shí)異常,我們可以不處理。當(dāng)出現(xiàn)這樣的異常時(shí),總是由虛擬機(jī)接管。比如:我們從來(lái)沒(méi)有人去處理過(guò)NullPointerException異常,它就是運(yùn)行時(shí)異常,并且這種異常還是最常見(jiàn)的異常之一。

出現(xiàn)運(yùn)行時(shí)異常后,系統(tǒng)會(huì)把異常一直往上層拋,一直遇到處理代碼。如果沒(méi)有處理塊,到最上層,如果是多線程就由Thread.run()拋出,如果是單線程就被main()拋出。拋出之后,如果是線程,這個(gè)線程也就退出了。如果是主程序拋出的異常,那么這整個(gè)程序也就退出了。運(yùn)行時(shí)異常是Exception的子類(lèi),也有一般異常的特點(diǎn),是可以被Catch塊處理的。只不過(guò)往往我們不對(duì)他處理罷了。也就是說(shuō),你如果不對(duì)運(yùn)行時(shí)異常進(jìn)行處理,那么出現(xiàn)運(yùn)行時(shí)異常之后,要么是線程中止,要么是主程序終止。

如果不想終止,則必須撲捉所有的運(yùn)行時(shí)異常,決不讓這個(gè)處理線程退出。隊(duì)列里面出現(xiàn)異常數(shù)據(jù)了,正常的處理應(yīng)該是把異常數(shù)據(jù)舍棄,然后記錄日志。不應(yīng)該由于異常數(shù)據(jù)而影響下面對(duì)正常數(shù)據(jù)的處理。在這個(gè)場(chǎng)景這樣處理可能是一個(gè)比較好的應(yīng)用,但并不代表在所有的場(chǎng)景你都應(yīng)該如此。如果在其它場(chǎng)景,遇到了一些錯(cuò)誤,如果退出程序比較好,這時(shí)你就可以不太理會(huì)運(yùn)行時(shí)異常,或者是通過(guò)對(duì)異常的處理顯式的控制程序退出。

異常表示程序運(yùn)行過(guò)程中可能出現(xiàn)的非正常狀態(tài),運(yùn)行時(shí)異常表示虛擬機(jī)的通常操作中可能遇到的異常,是一種常見(jiàn)運(yùn)行錯(cuò)誤。java編譯器要求方法必須聲明拋出可能發(fā)生的非運(yùn)行時(shí)異常,但是并不要求必須聲明拋出未被捕獲的運(yùn)行時(shí)異常。

6. 說(shuō)出ArrayList, Vector, LinkedList的存儲(chǔ)性能和特性

ArrayList和Vector都是使用數(shù)組方式存儲(chǔ)數(shù)據(jù),此數(shù)組元素?cái)?shù)大于實(shí)際存儲(chǔ)的數(shù)據(jù)以便增加和插入元素,它們都允許直接按序號(hào)索引元素,但是插入元素要涉及數(shù)組元素移動(dòng)等內(nèi)存操作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢,Vector由于使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實(shí)現(xiàn)存儲(chǔ),按序號(hào)索引數(shù)據(jù)需要進(jìn)行前向或后向遍歷,但是插入數(shù)據(jù)時(shí)只需要記錄本項(xiàng)的前后項(xiàng)即可,所以插入速度較快。

7. &和&&的區(qū)別

&和&&都可以用作邏輯與的運(yùn)算符,表示邏輯與(and),當(dāng)運(yùn)算符兩邊的表達(dá)式的結(jié)果都為true時(shí),整個(gè)運(yùn)算結(jié)果才為true,否則,只要有一方為false,則結(jié)果為false。

&&還具有短路的功能,即如果第一個(gè)表達(dá)式為false,則不再計(jì)算第二個(gè)表達(dá)式

&還可以用作位運(yùn)算符,當(dāng)&操作符兩邊的表達(dá)式不是boolean類(lèi)型時(shí),&表示按位與操作,我們通常使用0x0f來(lái)與一個(gè)整數(shù)進(jìn)行&運(yùn)算,來(lái)獲取該整數(shù)的最低4個(gè)bit位,

8. HashMap和Hashtable的區(qū)別

Hashtable和HashMap類(lèi)有三個(gè)重要的不同之處。第一個(gè)不同主要是歷史原因。Hashtable是基于陳舊的Dictionary類(lèi)的,HashMap是Java 1.2引進(jìn)的Map接口的一個(gè)實(shí)現(xiàn)。

也許最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。這就意味著,雖然你可以不用采取任何特殊的行為就可以在一個(gè)多線程的應(yīng)用程序中用一個(gè)Hashtable,但你必須同樣地為一個(gè)HashMap提供外同步。一個(gè)方便的方法就是利用Collections類(lèi)的靜態(tài)的synchronizedMap()方法,它創(chuàng)建一個(gè)線程安全的Map對(duì)象,并把它作為一個(gè)封裝的對(duì)象來(lái)返回。這個(gè)對(duì)象的方法可以讓你同步訪問(wèn)潛在的HashMap。這么做的結(jié)果就是當(dāng)你不需要同步時(shí),你不能切斷Hashtable中的同步(比如在一個(gè)單線程的應(yīng)用程序中),而且同步增加了很多處理費(fèi)用。

第三點(diǎn)不同是,只有HashMap可以讓你將空值作為一個(gè)表的條目的key或value。HashMap中只有一條記錄可以是一個(gè)空的key,但任意數(shù)量的條目可以是空的value。這就是說(shuō),如果在表中沒(méi)有發(fā)現(xiàn)搜索鍵,或者如果發(fā)現(xiàn)了搜索鍵,但它是一個(gè)空的值,那么get()將返回null。如果有必要,用containKey()方法來(lái)區(qū)別這兩種情況。

9. final, finally, finalize的區(qū)別

final—修飾符(關(guān)鍵字)如果一個(gè)類(lèi)被聲明為final,意味著它不能再派生出新的子類(lèi),不能作為父類(lèi)被繼承。因此一個(gè)類(lèi)不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們?cè)谑褂弥胁槐桓淖儭1宦暶鳛閒inal的變量必須在聲明時(shí)給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載。

finally—再異常處理時(shí)提供 finally 塊來(lái)執(zhí)行任何清除操作。如果拋出一個(gè)異常,那么相匹配的 catch 子句就會(huì)執(zhí)行,然后控制就會(huì)進(jìn)入 finally 塊(如果有的話)。

finalize—方法名。Java 技術(shù)允許使用 finalize() 方法在垃圾收集器將對(duì)象從內(nèi)存中清除出去之前做必要的清理工作。這個(gè)方法是由垃圾收集器在確定這個(gè)對(duì)象沒(méi)有被引用時(shí)對(duì)這個(gè)對(duì)象調(diào)用的。它是在 Object 類(lèi)中定義的,因此所有的類(lèi)都繼承了它。子類(lèi)覆蓋 finalize() 方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize() 方法是在垃圾收集器刪除對(duì)象之前對(duì)這個(gè)對(duì)象調(diào)用的。

10. sleep()和wait()的區(qū)別

其實(shí)兩者都可以讓線程暫停一段時(shí)間,但是本質(zhì)的區(qū)別是一個(gè)線程的運(yùn)行狀態(tài)控制,一個(gè)是線程之間的通訊的問(wèn)題

在java.lang.Thread類(lèi)中,提供了sleep(),

而java.lang.Object類(lèi)中提供了wait(), notify()和notifyAll()方法來(lái)操作線程

sleep()可以將一個(gè)線程睡眠,參數(shù)可以指定一個(gè)時(shí)間。

而wait()可以將一個(gè)線程掛起,直到超時(shí)或者該線程被喚醒。

wait有兩種形式wait()和wait(milliseconds).

sleep和wait的區(qū)別有:

1,這兩個(gè)方法來(lái)自不同的類(lèi)分別是Thread和Object

2,最主要是sleep方法沒(méi)有釋放鎖,而wait方法釋放了鎖,使得其他線程可以使用同步控制塊或者方法。

3,wait,notify和notifyAll只能在同步控制方法或者同步控制塊里面使用,而sleep可以在

任何地方使用

synchronized(x){

x.notify()

//或者wait()

}

4,sleep必須捕獲異常,而wait,notify和notifyAll不需要捕獲異常

11. overload和override的區(qū)別,overloaded的方法是否可以改變返回值的類(lèi)型

方法的重寫(xiě)Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫(xiě)Overriding是父類(lèi)與子類(lèi)之間多態(tài)性的一種表現(xiàn),重載Overloading是一個(gè)類(lèi)中多態(tài)性的一種表現(xiàn)。如果在子類(lèi)中定義某方法與其父類(lèi)有相同的名稱(chēng)和參數(shù),我們說(shuō)該方法被重寫(xiě) (Overriding)。子類(lèi)的對(duì)象使用這個(gè)方法時(shí),將調(diào)用子類(lèi)中的定義,對(duì)它而言,父類(lèi)中的定義如同被“屏蔽”了。如果在一個(gè)類(lèi)中定義了多個(gè)同名的方法,它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類(lèi)型,則稱(chēng)為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類(lèi)型。

12. 排序都有哪幾種方法?請(qǐng)列舉,用java實(shí)現(xiàn)一個(gè)快速排序

排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快速排序),選擇排序(直接選擇排序、堆排序),歸并排序,分配排序(箱排序、基數(shù)排序)

用Java語(yǔ)言實(shí)現(xiàn)的各種排序,包括插入排序、冒泡排序、選擇排序、Shell排序、快速排序、歸并排序、堆排序、SortUtil等。

插入排序:包括直接插入排序,二分插入排序(又稱(chēng)折半插入排序),鏈表插入排序,希爾排序(又稱(chēng)縮小增量排序)。將n個(gè)元素的數(shù)列分為已有序和無(wú)序兩個(gè)部分,每次處理就是將無(wú)序數(shù)列的第一個(gè)元素與有序數(shù)列的元素從后往前逐個(gè)進(jìn)行比較,找出插入位置,將該元素插入到有序數(shù)列的合適位置中。

冒泡排序 (BubbleSort)的基本概念是:依次比較相鄰的兩個(gè)數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個(gè)和第2個(gè)數(shù),將小數(shù)放前,大數(shù) 放后。然后比較第2個(gè)數(shù)和第3個(gè)數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個(gè)數(shù),將小數(shù)放前,大數(shù)放后。至此第一趟結(jié)束,將最大的數(shù)放到了最 后。在第二趟:仍從第一對(duì)數(shù)開(kāi)始比較(因?yàn)榭赡苡捎诘?個(gè)數(shù)和第3個(gè)數(shù)的交換,使得第1個(gè)數(shù)不再小于第2個(gè)數(shù)),將小數(shù)放前,大數(shù)放后,一直比較到倒數(shù)第 二個(gè)數(shù)(倒數(shù)第一的位置上已經(jīng)是最大的),第二趟結(jié)束,在倒數(shù)第二的位置上得到一個(gè)新的最大數(shù)(其實(shí)在整個(gè)數(shù)列中是第二大的數(shù))。如此下去,重復(fù)以上過(guò)程,直至最終完成排序。

由于在排序過(guò)程中總是小數(shù)往前放,大數(shù)往后放,相當(dāng)于氣泡往上升,所以稱(chēng)作冒泡排序。

選擇排序:每一趟從待排序的數(shù)據(jù)元素中選出最小(或最大)的一個(gè)元素,順序放在已排好序的數(shù)列的最后,直到全部待排序的數(shù)據(jù)元素排完。 選擇排序是不穩(wěn)定的排序方法。

快速排序(Quicksort)是對(duì)冒泡排序的一種改進(jìn)。由C. A. R. Hoare在1962年提出。它的基本思想是:通過(guò)一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨(dú)立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對(duì)這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序,整個(gè)排序過(guò)程可以遞歸進(jìn)行,以此達(dá)到整個(gè)數(shù)據(jù)變成有序序列。

13. 垃圾回收器的基本原理是什么?垃圾回收器可以馬上回收內(nèi)存嗎?有什么辦法主動(dòng)通知虛擬機(jī)進(jìn)行垃圾回收?

對(duì)于GC來(lái)說(shuō),當(dāng)程序員創(chuàng)建對(duì)象時(shí),GC就開(kāi)始監(jiān)控這個(gè)對(duì)象的地址、大小以及使用情況。通 常,GC采用有向圖的方式記錄和管理堆(heap)中的所有對(duì)象。通過(guò)這種方式確定哪些對(duì)象是"可達(dá)的",哪些對(duì)象是"不可達(dá)的"。當(dāng)GC確定一些對(duì)象 為"不可達(dá)"時(shí),GC就有責(zé)任回收這些內(nèi)存空間。

可以。

程序員可以手動(dòng)執(zhí)行System.gc(),通知GC運(yùn)行,但是Java語(yǔ)言規(guī)范并不保證GC一定會(huì)執(zhí)行。

14. 是否可以從一個(gè)static方法內(nèi)部發(fā)出對(duì)非static方法的調(diào)用?

不行,

可以這樣理解

static修飾的方法可以直接用類(lèi)名調(diào)用

非static修飾的方法必須用類(lèi)new出對(duì)象才能調(diào)用

當(dāng)我們用類(lèi)名直接調(diào)用時(shí),可能這個(gè)類(lèi)的對(duì)象并沒(méi)有new。

如果這時(shí)候static方法里調(diào)用非static的方法就會(huì)出現(xiàn)空指針異常,

當(dāng)然這種錯(cuò)誤編譯時(shí)就不會(huì)通過(guò)

15. 同步和異步有何異同,在什么情況下分別使用它們?舉例說(shuō)明。

如果數(shù)據(jù)將在線程間共享。例如正在寫(xiě)的數(shù)據(jù)以后可能被另一個(gè)線程讀到,或者正在讀的數(shù)據(jù)可能已經(jīng)被另一個(gè)線程寫(xiě)過(guò)了,那么這些數(shù)據(jù)就是共享數(shù)據(jù),必須進(jìn)行同步存取。

當(dāng)應(yīng)用程序在對(duì)象上調(diào)用了一個(gè)需要花費(fèi)很長(zhǎng)時(shí)間來(lái)執(zhí)行的方法,并且不希望讓程序等待方法的返回時(shí),就應(yīng)該使用異步編程,在很多情況下采用異步途徑往往更有效率。

16. String str = new String(“abc”)在內(nèi)存中是怎么分配的?

Java把內(nèi)存劃分成兩種:一種是棧內(nèi)存,一種是堆內(nèi)存。

在函數(shù)中定義的一些基本類(lèi)型的變量和對(duì)象的引用變量都在函數(shù)的棧內(nèi)存中分配。

當(dāng)在一段代碼塊定義一個(gè)變量時(shí),Java就在棧中為這個(gè)變量分配內(nèi)存空間,當(dāng)超過(guò)變量的作用域后,Java會(huì)自動(dòng)釋放掉為該變量所分配的內(nèi)存空間,該內(nèi)存空間可以立即被另作他用。

堆內(nèi)存用來(lái)存放由new創(chuàng)建的對(duì)象和數(shù)組。

在堆中分配的內(nèi)存,由Java虛擬機(jī)的自動(dòng)垃圾回收器來(lái)管理。

在堆中產(chǎn)生了一個(gè)數(shù)組或?qū)ο蠛螅可以在棧中定義一個(gè)特殊的變量,讓棧中這個(gè)變量的取值等于數(shù)組或?qū)ο笤诙褍?nèi)存中的首地址,棧中的這個(gè)變量就成了數(shù)組或?qū)ο蟮囊米兞俊?

引用變量就相當(dāng)于是為數(shù)組或?qū)ο笃鸬囊粋(gè)名稱(chēng),以后就可以在程序中使用棧中的引用變量來(lái)訪問(wèn)堆中的數(shù)組或?qū)ο蟆?

17. String str1 = “abc”和String str1 = newString(“abc”);這兩個(gè)的區(qū)別是什么?

String str1 ="abc";

String str2 = "abc";

System.out.println(str1==str2); //true

可以看出str1和str2是指向同一個(gè)對(duì)象的。

String str1 =new String ("abc");

String str2 =new String ("abc");

System.out.println(str1==str2); // false

用new的方式是生成不同的對(duì)象。每一次生成一個(gè)。

因此用第二種方式創(chuàng)建多個(gè)”abc”字符串,在內(nèi)存中其實(shí)只存在一個(gè)對(duì)象而已. 這種寫(xiě)法有利與節(jié)省內(nèi)存空間. 同時(shí)它可以在一定程度上提高程序的運(yùn)行速度,因?yàn)镴VM會(huì)自動(dòng)根據(jù)棧中數(shù)據(jù)的實(shí)際情況來(lái)決定是否有必要?jiǎng)?chuàng)建新對(duì)象。而對(duì)于String str = new String("abc");的代碼,則一概在堆中創(chuàng)建新對(duì)象,而不管其字符串值是否相等,是否有必要?jiǎng)?chuàng)建新對(duì)象,從而加重了程序的負(fù)擔(dān)。

另一方面, 要注意: 我們?cè)谑褂弥T如Stringstr = "abc";的格式定義類(lèi)時(shí),總是想當(dāng)然地認(rèn)為,創(chuàng)建了String類(lèi)的對(duì)象str。擔(dān)心陷阱!對(duì)象可能并沒(méi)有被創(chuàng)建!而可能只是指向一個(gè)先前已經(jīng)創(chuàng)建的 對(duì)象。只有通過(guò)new()方法才能保證每次都創(chuàng)建一個(gè)新的對(duì)象。由于String類(lèi)的immutable性質(zhì),當(dāng)String變量需要經(jīng)常變換其值時(shí),應(yīng) 該考慮使用StringBuffer類(lèi),以提高程序效率。

四、 Android相關(guān)基礎(chǔ)知識(shí)

1. Android dvm的進(jìn)程和Linux的進(jìn)程、應(yīng)用程序的進(jìn)程是否為同一個(gè)概念

DVM指dalivk的虛擬機(jī)。每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例。而每一個(gè)DVM都是在Linux 中的一個(gè)進(jìn)程,所以說(shuō)可以認(rèn)為是同一個(gè)概念。

什么是android DVM:Dalvik是Google公司自己設(shè)計(jì)用于Android平臺(tái)的Java虛擬機(jī),每一個(gè)Dalvik 應(yīng)用作為一個(gè)獨(dú)立的Linux 進(jìn)程執(zhí)行。獨(dú)立的進(jìn)程可以防止在虛擬機(jī)崩潰的時(shí)候所有程序都被關(guān)閉。

Dalvik和Java運(yùn)行環(huán)境的區(qū)別[

1:Dalvik主要是完成對(duì)象生命周期管理,堆棧管理,線程管理,安全和異常管理,以及垃圾回收等等重要功能。

2:Dalvik負(fù)責(zé)進(jìn)程隔離和線程管理,每一個(gè)Android應(yīng)用在底層都會(huì)對(duì)應(yīng)一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例,其代碼在虛擬機(jī)的解釋下得以執(zhí)行。

3:不同于Java虛擬機(jī)運(yùn)行java字節(jié)碼,Dalvik虛擬機(jī)運(yùn)行的是其專(zhuān)有的文件格式Dex 4:dex文件格式可以減少整體文件尺寸,提高I/o操作的類(lèi)查找速度。

5:odex是為了在運(yùn)行過(guò)程中進(jìn)一步提高性能,對(duì)dex文件的進(jìn)一步優(yōu)化。

6:所有的Android應(yīng)用的線程都對(duì)應(yīng)一個(gè)Linux線程,虛擬機(jī)因而可以更多的依賴操作系統(tǒng)的線程調(diào)度和管理機(jī)制

7:有一個(gè)特殊的虛擬機(jī)進(jìn)程Zygote,他是虛擬機(jī)實(shí)例的孵化器。它在系統(tǒng)啟動(dòng)的時(shí)候就會(huì)產(chǎn)生,它會(huì)完成虛擬機(jī)的初始化,庫(kù)的加載,預(yù)制類(lèi)庫(kù)和初始化的操作。如果系統(tǒng)需要一個(gè)新的虛擬機(jī)實(shí)例,它會(huì)迅速?gòu)?fù)制自身,以最快的數(shù)據(jù)提供給系統(tǒng)。對(duì)于一些只讀的系統(tǒng)庫(kù),所有虛擬機(jī)實(shí)例都和Zygote共享一塊內(nèi)存區(qū)域。

2. Android中的動(dòng)畫(huà)有哪幾類(lèi),它們的特點(diǎn)和區(qū)別是什么?

android支持兩種動(dòng)畫(huà)模式,tween animation,frame animation

View Animation(Tween Animation):補(bǔ)間動(dòng)畫(huà),給出兩個(gè)關(guān)鍵幀,通過(guò)一些算法將給定屬性值在給定的時(shí)間內(nèi)在兩個(gè)關(guān)鍵幀間漸變。

View animation只能應(yīng)用于View對(duì)象,而且只支持一部分屬性,這種實(shí)現(xiàn)方式可以使視圖組件移動(dòng)、放大、縮小以及產(chǎn)生透明度的變化.

另一種Frame動(dòng)畫(huà),傳統(tǒng)的動(dòng)畫(huà)方法,通過(guò)順序的播放排列好的圖片來(lái)實(shí)現(xiàn),類(lèi)似電影。

3. Handler機(jī)制的原理

andriod提供了Handler 和Looper 來(lái)滿足線程間的通信。Handler先進(jìn)先出原則。Looper類(lèi)用來(lái)管理特定線程內(nèi)對(duì)象之間的消息交換(MessageExchange)。

1)Looper: 一個(gè)線程可以產(chǎn)生一個(gè)Looper對(duì)象,由它來(lái)管理此線程里的MessageQueue(消息隊(duì)列)。

2)Handler: 你可以構(gòu)造Handler對(duì)象來(lái)與Looper溝通,以便push新消息到MessageQueue里;或者接收Looper從MessageQueue取出)所送來(lái)的消息。

3) Message Queue(消息隊(duì)列):用來(lái)存放線程放入的消息。

4)線程:UIthread 通常就是main thread,而Android啟動(dòng)程序時(shí)會(huì)替它建立一個(gè)MessageQueue。

4. 說(shuō)說(shuō)mvc模式的原理,它在android中的運(yùn)用

mvc是model,view,controller的縮寫(xiě),mvc包含三個(gè)部分:

模型(model)對(duì)象:是應(yīng)用程序的主體部分,所有的業(yè)務(wù)邏輯都應(yīng)該寫(xiě)在該層。

視圖(view)對(duì)象:是應(yīng)用程序中負(fù)責(zé)生成用戶界面的部分。也是在整個(gè)mvc架構(gòu)中用戶唯一可以看到的一層,接收用戶的輸入,顯示處理結(jié)果。

控制器(control)對(duì)象:是根據(jù)用戶的輸入,控制用戶界面數(shù)據(jù)顯示及更新model對(duì)象狀態(tài)的部分,控制器更重要的一種導(dǎo)航功能,響應(yīng)用戶出發(fā)的相關(guān)事件,交給m層處理。

android鼓勵(lì)弱耦合和組件的重用,在android中mvc的具體體現(xiàn)如下:

1)視圖層(view):一般采用xml文件進(jìn)行界面的描述,使用的時(shí)候可以非常方便的引入,當(dāng)然,如果你對(duì)android了解的比較的多了話,就一定可以想到在android中也可以使用javascript+html等的方式作為view層,當(dāng)然這里需要進(jìn)行java和javascript之間的通信,幸運(yùn)的是,android提供了它們之間非常方便的通信實(shí)現(xiàn)。

2)控制層(controller):android的控制層的重任 通常落在了眾多的acitvity的肩上,這句話也就暗含了不要在acitivity中寫(xiě)代碼,要通過(guò)activity交割model業(yè)務(wù)邏輯層處理,這 樣做的另外一個(gè)原因是android中的acitivity的響應(yīng)時(shí)間是5s,如果耗時(shí)的操作放在這里,程序就很容易被回收掉。

3)模型層(model):對(duì)數(shù)據(jù)庫(kù)的操作、對(duì)網(wǎng)絡(luò)等的操作都應(yīng)該在model里面處理,當(dāng)然對(duì)業(yè)務(wù)計(jì)算等操作也是必須放在的該層的。

5. 橫豎屏切換時(shí)activity的生命周期

1、不設(shè)置Activity的android:configChanges時(shí),切屏?xí)匦抡{(diào)用各個(gè)生命周期,切橫屏?xí)r會(huì)執(zhí)行一次,切豎屏?xí)r會(huì)執(zhí)行兩次

2、設(shè)置Activity的android:configChanges="orientation"時(shí),切屏還是會(huì)重新調(diào)用各個(gè)生命周期,切橫、豎屏?xí)r只會(huì)執(zhí)行一次

3、設(shè)置Activity的android:configChanges="orientation|keyboardHidden"時(shí),切屏不會(huì)重新調(diào)用各個(gè)生命周期,只會(huì)執(zhí)行onConfigurationChanged方法

6. 請(qǐng)介紹下android大眾常使用的五種布局

常用五種布局方式,分別是:FrameLayout(框架布局),LinearLayout (線性布局),AbsoluteLayout(絕對(duì)布局),RelativeLayout(相對(duì)布局),TableLayout(表格布局)。

一、 FrameLayout:所有東西依次都放在左上角,會(huì)重疊,這個(gè)布局比較簡(jiǎn)單,也只能放一點(diǎn)比較簡(jiǎn)單的東西。二、LinearLayout:線性布局, 每一個(gè)LinearLayout里面又可分為垂直布局(android:orientation="vertical")和水平布局 (android:orientation="horizontal" )。當(dāng)垂直布局時(shí),每一行就只有一個(gè)元素,多個(gè)元素依次垂直往下;水平布局時(shí),只有一行,每一個(gè)元素依次向右排列。三、AbsoluteLayout:絕對(duì)布局用X,Y坐標(biāo)來(lái)指定元素的位置,這種布局方式也比較簡(jiǎn)單,但是在屏幕旋轉(zhuǎn)時(shí),往往會(huì)出問(wèn)題,而且多個(gè)元素的時(shí)候,計(jì)算比較麻煩。四、RelativeLayout:相對(duì)布局可以理解為某一個(gè)元素為參照物,來(lái)定位的布局方式。主要屬性有:相對(duì)于某一個(gè)元素android:layout_below、 android:layout_toLeftOf相對(duì)于父元素的地方 android:layout_alignParentLeft、android:layout_alignParentRigh;五、 TableLayout:表格布局,每一個(gè)TableLayout里面有表格行TableRow,TableRow里面可以具體定義每一個(gè)元素。每一個(gè)布 局都有自己適合的方式,這五個(gè)布局元素可以相互嵌套應(yīng)用,做出美觀的界面。

五、英文翻譯

把一下段落翻譯成中文

a) An integral(完整的;整體的;完全的)approach to code documentation is to write the code so that it documentsitself. In other words, the code should be naturally readable in such a way asto make it easy to understand. This is accomplished by proper namingconventions and statement(聲明) formatting.

b)Collections(集合) are thedata structures that are most easily altered for performance-tuning purposes.Using the correct or most appropriate collection class can improve performancewith little change to code. For example, if a large ordered collection haselements frequently deleted or inserted throughout it, it usually can providebetter performance if based on a linked list rather than an array. On the otherhand, a static(unchanging) collection that needs to be accessed by indexperforms better with an underlying implementation that is an array.

真題3:

剛剛答完人人網(wǎng)的筆試題,不讓把草稿紙帶出來(lái),只能憑著記憶復(fù)盤(pán)了,第一部分還差一題,有人記得可以補(bǔ)充一下,題目基本上都是簡(jiǎn)單說(shuō)明,但是意思基本表達(dá)到了,第四部分感覺(jué)有點(diǎn)困難,天南大還是有很多高手啊,我是結(jié)結(jié)實(shí)實(shí)做了2個(gè)多小時(shí),提前交的挺多的,呵呵,有些基礎(chǔ)題做的不太好,比如那個(gè)已知先序和中序求后序就沒(méi)有弄出來(lái),時(shí)間有點(diǎn)不夠,再讀讀離散研究下。

原題如下:

第一部分(12*5)

1.一顆完全二叉樹(shù)共有768個(gè)節(jié)點(diǎn),求葉節(jié)點(diǎn)個(gè)數(shù)____個(gè)。

2.一顆由鏈表實(shí)現(xiàn)的有n個(gè)節(jié)點(diǎn),那么指針數(shù)____個(gè),指向節(jié)點(diǎn)的指針數(shù)____個(gè),空閑的指針個(gè)數(shù)____個(gè)。

3.哈希散列題,給了11個(gè)數(shù)字,使用0到12進(jìn)行散列,填一張表

4.1000的階乘的尾部0的個(gè)數(shù)____個(gè)

5.liux下mkdir,如果父目錄不存在,使用附屬命令創(chuàng)建父目錄

6.”vmstat1“的命令,給出了一張表格,及6個(gè)選項(xiàng)判斷正誤(記不得了)

7.(樹(shù))前序AEFBGCDHIKJ,中序:EFAGBCHKIJD,求后序

8.(數(shù)據(jù)庫(kù)題)Table1:(5 2 2)(5 3 1)(5 2 3)Table2:(5 2 2)(5 3 1)(5 4 4)使用SQL語(yǔ)句找出存在于Table1中而不存在于table2中數(shù)據(jù)。

9.倆人玩游戲,在腦門(mén)上貼數(shù)字(正整數(shù)>=1),只看見(jiàn)對(duì)方的,看不見(jiàn)自己的,而且兩人的數(shù)字相差1,要猜自己的數(shù)字

A:我不知道

B:我也不知道

A:我知道了

B:我也知道了

A頭上的字:____;B頭上的字:_____;

10:

11:以下四種排序那種效率最低____,時(shí)間復(fù)雜度是多少_____

A:快排 B:冒泡 C:歸并 D:選擇

12:小明的IP是:200.99.***.5,子網(wǎng)掩碼是255.255.148.0,問(wèn)該子網(wǎng)有多少個(gè)IP_____個(gè)

第二部分(3*10)

1.二叉搜索樹(shù)中給定兩個(gè)節(jié)點(diǎn):BSTNode1和BSTNode2,查找他們的最近公共父節(jié)點(diǎn)

2.環(huán)狀單鏈表,給定指向某個(gè)節(jié)點(diǎn)的指針,編寫(xiě)算法求離其最遠(yuǎn)的節(jié)點(diǎn)

3.三個(gè)以上設(shè)計(jì)模式,并用Java或C++實(shí)現(xiàn)

第三部分(4*15)

1.無(wú)交集數(shù)據(jù)放在10臺(tái)計(jì)算機(jī)上,如何高效的選出Top10

2.24點(diǎn)游戲,給定四個(gè)整數(shù),可以使用加減乘除四種運(yùn)算法則,但是每個(gè)數(shù)只能用一次,編寫(xiě)游戲解法

3.三國(guó)殺,規(guī)則”殺“使對(duì)方體力減一半,”閃“可以免除殺一次,現(xiàn)有30張”殺“,15張”閃“,五個(gè)人玩游戲,每輪一人三張牌,問(wèn)出現(xiàn)體力為0的概率

4.萬(wàn)臺(tái)服務(wù)器(集群),構(gòu)造一個(gè)監(jiān)控系統(tǒng)去監(jiān)視該服務(wù)器,監(jiān)控服務(wù)器主動(dòng)或者被動(dòng)去監(jiān)控服務(wù)器集群,要求每個(gè)一段間隔獲取服務(wù)器集群的數(shù)據(jù),請(qǐng)?jiān)O(shè)計(jì)方案,并提供相關(guān)數(shù)據(jù):監(jiān)控服務(wù)器數(shù)量,帶寬,時(shí)間間隔等。

人人網(wǎng)校園招聘杭州站C++筆試題目

1.算法的幾個(gè)概念:時(shí)間復(fù)雜度,空間復(fù)雜度等等。

2.采用鏈地址法處理長(zhǎng)度的時(shí)候,哈希表查找成功的平均長(zhǎng)度與哪些因素有關(guān)?

哈希表的裝填因子有關(guān)。

裝填因子= 表中填入的記錄數(shù)/哈希表的長(zhǎng)度。

3.二叉樹(shù)節(jié)點(diǎn)的計(jì)算:

二叉樹(shù)中度為1的節(jié)點(diǎn)有8個(gè),度為0的節(jié)點(diǎn)有3個(gè),問(wèn)這顆二叉樹(shù)總共有多少節(jié)點(diǎn)?

對(duì)于任意一棵二叉樹(shù)BT,如果度為0的結(jié)點(diǎn)個(gè)數(shù)為n0,度為2的結(jié)點(diǎn)個(gè)數(shù)為n2,則n0=n2+1。

所以度為2的節(jié)點(diǎn)個(gè)數(shù)為3-1 = 2,那么總共的結(jié)點(diǎn)個(gè)數(shù)就是3+2+8 = 13。

順便復(fù)習(xí)一下完全二叉樹(shù)的計(jì)算。

完全二叉樹(shù)有一個(gè)特點(diǎn),就是度為1的節(jié)點(diǎn)數(shù)要么為1,要么為0?梢宰约寒(huà)出圖來(lái)看看。

問(wèn)題:如果設(shè)一棵完全二叉樹(shù)共有500個(gè)結(jié)點(diǎn),則在該二叉樹(shù)中有多少個(gè)葉子結(jié)點(diǎn)?

設(shè)葉子節(jié)點(diǎn)數(shù)為n0,度為2的節(jié)點(diǎn)數(shù)為n0 - 1,又因?yàn)槭峭耆鏄?shù),所以n1 = 1或者0

n0 + n1 + n2 = 500,帶入 2n0 - 1 + n1 = 500,故n1 = 1,n0 = 250, n2 = 249。

5.最小生成樹(shù)的問(wèn)題,節(jié)點(diǎn)個(gè)數(shù)計(jì)算問(wèn)題。

6.在序列有序的情況下,快速排序的時(shí)間復(fù)雜度是多少?

O(n^2)。

7.網(wǎng)卡完成那一層的功能?

網(wǎng)卡工作在物理層和數(shù)據(jù)鏈路層的MAC子層。

https://leehlom.blog.163.com/blog/static/241206962008112775913541/。

8.模板函數(shù)的使用。

template

T add(T x, T y){

return x + y;

}

A.add(5,2)

B.add(5.2,2.2)

C.add(5.2,2)

D.add(5.2,2)

D是錯(cuò)誤的,因?yàn)榫幾g器知道要特化哪一個(gè)了。

8.構(gòu)造函數(shù)可以重載么?析構(gòu)函數(shù)可以重載么?

構(gòu)造不重載,怎么實(shí)現(xiàn)多樣化?

析構(gòu)怎么重載,沒(méi)有參數(shù)。

10.C++靜態(tài)成員和非靜態(tài)成員有什么區(qū)別?

1)靜態(tài)變量是屬于類(lèi)的,只能用classname::來(lái)調(diào)用.而非靜態(tài)是屬于對(duì)象的,必須通過(guò)對(duì)象

來(lái)調(diào)用.

2)如果在函數(shù)中聲明一個(gè)靜態(tài)變量的話,它存儲(chǔ)在非函數(shù)的活動(dòng)區(qū).就是它不隨函數(shù)調(diào)用的

結(jié)束而釋放內(nèi)存空間,所以它也具有全局變量的特點(diǎn).但是和全局變量相比不同在于它只能在本

文件中使用

11.空類(lèi)的大小?一個(gè)含有虛函數(shù)的類(lèi)大。繛槭裁?

分別是1和4。

因?yàn),?duì)于空類(lèi),C++編譯器會(huì)制定一個(gè)char來(lái)占據(jù)位置。

含有虛函數(shù)的類(lèi),里面會(huì)存放一個(gè)虛函數(shù)指針vptr,指向一個(gè)虛函數(shù)表。指針在32位平臺(tái)上的大小為4個(gè)字節(jié)。

12 OSI七層模型和TCP/IP 五層模型。

應(yīng)用層

表示層

會(huì)話層 應(yīng)用層

傳輸層 傳輸層

網(wǎng)絡(luò)層 互聯(lián)網(wǎng)絡(luò)層

數(shù)據(jù)鏈路層 互聯(lián)接口層

物理層 物理層

12.編程求解走樓梯問(wèn)題:

一個(gè)人一次可以上1步,2步,3步,F(xiàn)在有n個(gè)階梯(1<= n <= 100W,問(wèn)有方法可以上去?

)

f(1) = 1;

f(2) = 2;

f(3) = 4;

n > 3,f(n) = f(n - 1) + f(n - 2) + f(n -3)

13.人人網(wǎng)的朋友概念:A和B是朋友,B和C是朋友,那么A和C是二度朋友。

找出每一個(gè)人的10度朋友。要求O(n)的算法

14.推薦系統(tǒng)的設(shè)計(jì)

《人人網(wǎng)求職寶典》

《人人網(wǎng)求職寶典Word下載》

《人人網(wǎng)求職寶典PDF下載》

Copyright©2006-2024應(yīng)屆畢業(yè)生網(wǎng)yjbys.com版權(quán)所有