范文為教學(xué)中作為模范的文章,也常常用來(lái)指寫(xiě)作的模板。常常用于文秘寫(xiě)作的參考,也可以作為演講材料編寫(xiě)前的參考。范文怎么寫(xiě)才能發(fā)揮它最大的作用呢?下面是小編為大家收集的優(yōu)秀范文,供大家參考借鑒,希望可以幫助到有需要的朋友。
經(jīng)常被遺忘的java面試題目 java面試被虐篇一
通常,在面試中,會(huì)遇到面試官提一些比較“偏冷”的基礎(chǔ)知識(shí),因此,本文對(duì)一些容易被遺忘的問(wèn)題進(jìn)行歸納,希望可以幫助廣大程序員輕松應(yīng)對(duì)面試官的技術(shù)問(wèn)題,以及提升編碼效率。
如果一個(gè)類(lèi)要被聲明為static的,只有一種情況,就是靜態(tài)內(nèi)部類(lèi)。
靜態(tài)內(nèi)部類(lèi)實(shí)際上與普通類(lèi)(即類(lèi)名必須與文件名一樣的頂級(jí)類(lèi))一樣,只是靜態(tài)內(nèi)部類(lèi)在某一類(lèi)的內(nèi)部定義了而已,既然是類(lèi),要想使用就必須實(shí)例化。概念上與靜態(tài)變量、靜態(tài)方法是不一樣的,不要被“靜態(tài)”兩個(gè)字迷惑了(不要以為凡是靜態(tài)的東西就不需要實(shí)例化就可以直接使用,靜態(tài)內(nèi)部類(lèi)是有區(qū)別),而且只有靜態(tài)內(nèi)部類(lèi),而沒(méi)有靜態(tài)類(lèi)(頂級(jí)類(lèi))的概念。
public class singleton{
private singleton(){}
private static class singletonholder{
private final static singleton instance;
}
public singleton getinstance(){
return ce;
}
}
public class singleton{
private singleton(){}
private static class singletonholder{
private final static singleton instance;
}
public singleton getinstance(){
return ce;
}
}
靜態(tài)方法只能訪問(wèn)靜態(tài)成員,實(shí)例方法可以訪問(wèn)靜態(tài)和實(shí)例成員。之所以不允許靜態(tài)方法訪問(wèn)實(shí)例成員變量,是因?yàn)閷?shí)例成員變量是屬于某個(gè)對(duì)象的,而靜態(tài)方法在執(zhí)行時(shí),并不一定存在對(duì)象。靜態(tài)方法中也不能使用關(guān)鍵字this。
inverted index
如果翻譯成轉(zhuǎn)置索引可能更好懂,它就相當(dāng)于做了矩陣轉(zhuǎn)置。
倒排索引是一種索引方法,被用來(lái)存儲(chǔ)在全文搜索下某個(gè)單詞在一個(gè)文檔或者一組文檔中的存儲(chǔ)位置的映射。
反射api中提供的動(dòng)態(tài)代理也是非常強(qiáng)大的功能,可以原生實(shí)現(xiàn)aop中 的方法攔截功能。正如英文單詞reflection的含義一樣,使用反射api的時(shí)候就好像在看一個(gè)java類(lèi)在水中的倒影一樣。知道了java類(lèi)的內(nèi)部 結(jié)構(gòu)之后,就可以與它進(jìn)行交互,包括創(chuàng)建新的對(duì)象和調(diào)用對(duì)象中的方法等。
這種交互方式與直接在源代碼中使用的效果是相同的,但是又額外提供了運(yùn)行時(shí)刻的靈活性。使用反射的一個(gè)最大的`弊端是性能比較差。相同的操作,用反射api所需的時(shí)間大概比直接的使用要慢一兩個(gè)數(shù)量級(jí)。不過(guò)現(xiàn)在的jvm實(shí)現(xiàn)中,反射操作的性能已經(jīng)有了很大的提升。
java 反射api的第一個(gè)主要作用是獲取程序在運(yùn)行時(shí)刻的內(nèi)部結(jié)構(gòu)。
歸并排序也是一種使用分治法來(lái)實(shí)現(xiàn)的有效排序算法,它是現(xiàn)代計(jì)算機(jī)創(chuàng)始人john von neumann于1945年發(fā)明的。
歸并排序在眾多排序算法中既是穩(wěn)定排序,又有不錯(cuò)的效率,同時(shí),歸并排序不僅可以用于內(nèi)排序,還可以用于外排序。
歸并排序的思路如下(以二路歸并為例):
將數(shù)組劃均分為兩個(gè)子數(shù)組;
對(duì)兩個(gè)字?jǐn)?shù)組進(jìn)行排序;
將排序好的兩個(gè)字?jǐn)?shù)組歸并。
所謂 n路歸并 是指將數(shù)組均分為n個(gè)子數(shù)組,將字?jǐn)?shù)組排序后再歸并。因此二路歸并是歸并排序的最一般的情況。
e.g.
def msort(array):
length = len(array)
if length == 1:
return array
else:
mid = length / 2
left = msort(array[0: mid])
right = msort(array[mid: length])
return merge(left, right)123
def msort(array):
length = len(array)
step = 1
while step < length:
for left in range(0, length - step, 2 * step):
result = merge(array[left:left + step],
array[left + step: min(left + 2 * step,
length)])
array = array[0:left] + result + array[min(left + 2 *
step, length)]
step = step * 2
return array
def merge(left, right):
llen = len(left)
lcur = 0
rlen = len(right)
rcur = 0
result = []
while lcur < llen and rcur < rlen:
lone = left[lcur]
rone = right[rcur]
(min(lone, rone))
if lone < rone:
lcur += 1
else:
rcur += 1
result += left[lcur:]
result += right[rcur:]
return result
enumerated type
enum 類(lèi)型不支持 public 和 protected 修飾符的構(gòu)造方法,因此構(gòu)造函數(shù)一定要是 private 或 friendly 的。也正因?yàn)槿绱耍悦杜e對(duì)象是無(wú)法在程序中通過(guò)直接調(diào)用其構(gòu)造方法來(lái)初始化的。
由于 enum 類(lèi)型的值實(shí)際上是通過(guò)運(yùn)行期構(gòu)造出對(duì)象來(lái)表示的,所以在 cluster 環(huán)境下,每個(gè)虛擬機(jī)都會(huì)構(gòu)造出一個(gè)同義的枚舉對(duì)象。因而在做比較操作時(shí)候就需要注意,如果直接通過(guò)使用等號(hào) ( ‘ == ’ ) 操作符,這些看似一樣的枚舉值一定不相等,因?yàn)檫@不是同一個(gè)對(duì)象實(shí)例。
【本文地址:http://www.aiweibaby.com/zuowen/2709611.html】