freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

it公司java面試寶典面試題(編輯修改稿)

2025-08-18 17:58 本頁面
 

【文章內(nèi)容簡介】 高,所以, 2乘以 8等於幾的最效率的方法是 2 3。 請(qǐng)?jiān)O(shè)計(jì)一個(gè)一百億的計(jì)算器 首先要明白這道題目的考查點(diǎn)是什么,一是大家首先要對(duì)計(jì)算機(jī)原理的底層細(xì)節(jié)要清楚、要知道加減法 的位運(yùn)算原理和知道計(jì)算機(jī)中的算術(shù)運(yùn)算會(huì)發(fā)生越界的情況,二是要具備一定的面向?qū)ο蟮脑O(shè)計(jì)思想。 首先,計(jì)算機(jī)中用固定數(shù)量的幾個(gè)字節(jié)來存儲(chǔ)的數(shù)值,所以計(jì)算機(jī)中能夠表示的數(shù)值是有一定的范圍的,為了便于講解和理解,我們先以 byte 類型的整數(shù)為例,它用 1 個(gè)字節(jié)進(jìn)行存儲(chǔ),表示的最大數(shù)值范圍為 128 到 +127。 1 在內(nèi)存中對(duì)應(yīng)的二進(jìn)制數(shù)據(jù)為 11111111,如果兩個(gè) 1 相加, 不考慮 Java 運(yùn)算時(shí)的類型提升,運(yùn)算后會(huì)產(chǎn)生進(jìn)位,二進(jìn)制結(jié)果為 1,11111110,由于進(jìn)位后超過了byte 類型的存儲(chǔ)空間,所以進(jìn)位部分被舍棄, 即最終的結(jié)果為 11111110,也就是 2,這正好利用溢位的方式實(shí)現(xiàn)了負(fù)數(shù)的運(yùn)算。 128 在內(nèi)存中對(duì)應(yīng)的二進(jìn)制數(shù)據(jù)為 10000000,如果兩個(gè) 128 相加,不考慮 Java 運(yùn)算時(shí)的類型提升,運(yùn)算后會(huì)產(chǎn)生進(jìn)位,二進(jìn)制結(jié)果為 1,00000000,由于進(jìn)位后超過了 byte 類型的存儲(chǔ)空間,所以進(jìn) 位部分被舍棄,即最終的結(jié)果為 00000000,也就是 0,這樣的結(jié)果顯然不是我們期望的,這說明計(jì)算機(jī)中的算術(shù)運(yùn)算是會(huì)發(fā)生越界情況的,兩個(gè)數(shù)值的運(yùn)算 結(jié)果不能超過計(jì)算機(jī)中的該類型的數(shù)值范圍。由于 Java中涉及表達(dá)式運(yùn)算時(shí)的類 型自動(dòng)提升,我們無法用 byte 類型來做演示這種問題和現(xiàn)象的實(shí)驗(yàn),大家可 以用下面一個(gè)使用整數(shù)做實(shí)驗(yàn)的例子程序體驗(yàn)一下: int a = 。 int b = 。 int sum = a + b。 (“a=”+a+”,b=”+b+”,sum=”+sum)。 先不考慮 long 類型,由于 int 的正數(shù)范圍為 2 的 31 次方,表示的最大數(shù)值約等于 2*1000*1000*1000,也就是 20 億的大小,所以, 要實(shí)現(xiàn)一個(gè)一百 億的計(jì)算器,我們得自己設(shè)計(jì)一個(gè)類可以用于表示很大的整數(shù),并且提供了與另外一個(gè)整數(shù)進(jìn)行加減乘除的功能,大概功能如下: ()這個(gè)類內(nèi)部有兩個(gè)成員變量,一個(gè)表示符號(hào),另一個(gè)用字節(jié)數(shù)組表示數(shù)值的二進(jìn)制數(shù) ()有一個(gè)構(gòu)造方法,把一個(gè)包含有多位數(shù)值的字符串轉(zhuǎn)換到內(nèi)部的符號(hào)和字節(jié)數(shù)組中 ()提供加減乘除的功能 public class BigInteger{ int sign。 byte[] val。 public Biginteger(String val) { sign = 。 val = 。 } public BigInteger add(BigInteger other) { } public BigInteger subtract(BigInteger other) { } public BigInteger multiply(BigInteger other){ } public BigInteger divide(BigInteger other){ } } 備注:要想寫出這個(gè)類的完整代碼,是非常復(fù)雜的,如果有興趣的話,可以參看 jdk 中自帶的 類的源碼。面試的人也 知道誰 都不可能在短時(shí)間內(nèi)寫出這個(gè)類的完整代碼的,他要的是你是否有這方面的概念和意識(shí),他最重要的還是考查你的能力,所以,你不要因?yàn)樽约簾o法寫出完整 的最終結(jié)果就放棄答這道題,你要做的就是你比別人寫得多,證明你比別人強(qiáng),你有這方面的思想意識(shí)就可以了,畢竟別人可能連題目的意思都看不懂,什么都沒 寫,你要敢于答這道題,即使只答了一部分,那也與那些什么都不懂的人區(qū)別出來,拉開了距離,算是矮子中的高個(gè),機(jī)會(huì)當(dāng)然就屬于你了。另外,答案中的框架代 碼也很重要,體現(xiàn)了一些面向?qū)ο笤O(shè)計(jì)的功底,特別是其中的方法命名很專業(yè),用的英文單詞 很精準(zhǔn),這也是能力、經(jīng)驗(yàn)、專業(yè)性、英語水平等多個(gè)方面的體現(xiàn),會(huì) 給人留下很好的印象,在編程能力和其他方面條件差不多的情況下,英語好除了可以使你獲得更多機(jī)會(huì)外,薪水可以高出一千元。 使用 final 關(guān)鍵字修飾一個(gè)變量時(shí),是引用不能變,還是引用的對(duì)象不能變? 使用 final 關(guān)鍵字修飾一個(gè)變量時(shí),是指引用變量不能變,引用變量所指向的對(duì)象中的內(nèi)容還是可以改變的。例如,對(duì)于如下語句: final StringBuffer a=new StringBuffer(immutable)。 執(zhí)行如下語句將報(bào)告編譯期 錯(cuò)誤: a=new StringBuffer()。 但是,執(zhí)行如下語句則可以通過編譯: ( broken!)。 有人在定義方法的參數(shù)時(shí),可能想采用如下形式來阻止方法內(nèi)部修改傳進(jìn)來的參數(shù)對(duì)象: public void method(final StringBuffer param){ } 實(shí)際上,這是辦不到的,在該方法內(nèi)部仍然可以增加如下代碼來修改參數(shù)對(duì)象: (a)。 1 ==和 equals 方法究竟有什么區(qū)別? (單獨(dú)把一個(gè)東西說清楚,然后再說清楚另 一個(gè),這樣,它們的區(qū)別自然就出來了,混在一起說,則很難說清楚) ==操作符專門用來比較兩個(gè)變量的值是否相等,也就是用于比較變量所對(duì)應(yīng)的內(nèi)存中所存儲(chǔ)的數(shù)值是否相同,要比較兩個(gè)基本類型的數(shù)據(jù)或兩個(gè)引用變量是否相等,只能用 ==操作符。 如果一個(gè)變量指向的數(shù)據(jù)是對(duì)象類型的,那么,這時(shí)候涉及了兩塊內(nèi)存,對(duì)象本身占用一塊內(nèi)存(堆內(nèi)存),變量也占用一塊內(nèi)存,例如 Objet obj = new Object()。變量 obj 是一個(gè)內(nèi)存, new Object()是另一個(gè)內(nèi)存,此時(shí),變量 obj所對(duì)應(yīng)的內(nèi)存中存儲(chǔ)的數(shù)值就是對(duì)象占用 的那塊內(nèi)存的首地址。對(duì)于指向?qū)ο箢愋偷淖兞?,如果要比較兩個(gè)變量 是否指向同一個(gè)對(duì)象,即要看這兩個(gè)變量所對(duì)應(yīng)的內(nèi)存中的數(shù)值是否相等,這時(shí)候就需要用 ==操作符進(jìn)行比較。 equals 方法是用于比較兩個(gè)獨(dú)立對(duì)象的內(nèi)容是否相同,就好比去比較兩個(gè)人的長相是否相同,它比較的兩個(gè)對(duì)象是獨(dú)立的。例如,對(duì)于下面的代碼: String a=new String(foo)。 String b=new String(foo)。 兩條 new 語句創(chuàng)建了兩個(gè)對(duì)象,然后用 a,b 這兩個(gè)變量分別指向了其中一個(gè)對(duì)象,這是兩個(gè)不同的對(duì)象, 它們的首地址是不同的,即 a 和 b中存儲(chǔ)的數(shù)值是不相 同的,所以,表達(dá)式 a==b 將返回 false,而這兩個(gè)對(duì)象中的內(nèi)容是相同的,所以,表達(dá)式 (b)將返回 true。 在實(shí)際開發(fā)中,我們經(jīng)常要比較傳遞進(jìn)行來的字符串內(nèi)容是否等,例如,String input = ?。(“quit”) ,許多人稍不注意就使用 ==進(jìn)行比較了,這是錯(cuò)誤的,隨便從網(wǎng)上找?guī)讉€(gè)項(xiàng)目實(shí)戰(zhàn)的教學(xué)視頻看看,里面就有大 量這樣的錯(cuò)誤。記住,字符串的比較基本上都是使用 equals 方法。 如果一個(gè)類沒有自己定義 equals 方法,那么它將繼承 Object 類的 equals 方法, Object 類的 equals 方法的實(shí)現(xiàn)代碼如下: boolean equals(Object o){ return this==o。 } 這說明,如果一個(gè)類沒有自己定義 equals 方法,它默認(rèn)的 equals 方法(從Object 類繼承的)就是使用 ==操作符,也是在比較兩個(gè)變量指向的對(duì)象是否是同一對(duì)象,這時(shí)候使用 equals 和使用 ==會(huì)得到同樣的結(jié)果,如果比較的是兩個(gè)獨(dú)立 的對(duì)象則總返回 false。如果你編寫的類希望能夠比較該類創(chuàng)建的兩個(gè)實(shí)例對(duì)象的內(nèi)容是 否相同,那么你必須覆蓋 equals 方法,由你自己寫代碼來決定在 什么情況即可認(rèn)為兩個(gè)對(duì)象的內(nèi)容是相同的。 1靜態(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)變量則可以直接使用類名來引用。 例如,對(duì)于下面的程序,無論創(chuàng)建多少個(gè)實(shí)例對(duì)象,永遠(yuǎn)都只分配了一個(gè)staticVar 變量,并且每創(chuàng)建一個(gè)實(shí)例對(duì)象,這個(gè) staticVar 就會(huì)加 1; 但是,每創(chuàng)建一個(gè)實(shí)例對(duì)象,就會(huì)分配一個(gè) instanceVar,即可能分配多個(gè)instanceVar,并且每個(gè) instanceVar 的值都只自加了 1 次。 public class VariantTest{ public static int staticVar = 0。 public int instanceVar = 0。 public VariantTest(){ staticVar++。 instanceVar++。 (“staticVar=” + staticVar + ”,instanceVar=” + instanceVar)。 } } 備注:這個(gè)解答除了說清楚兩者的區(qū)別外,最后還用一個(gè)具體的應(yīng)用例子來說明兩者的差異,體現(xiàn)了自己有很好的解說問題和設(shè)計(jì)案例的能力,思維敏捷,超過一般程序員,有寫作能力! 1是否可以從一個(gè) static 方法內(nèi)部發(fā)出對(duì)非 static 方法的調(diào)用? 不可以。因?yàn)榉?static 方法是要與對(duì)象關(guān)聯(lián)在一起的,必須創(chuàng)建一個(gè)對(duì)象后,才可以在該對(duì)象上進(jìn)行方法調(diào)用,而 static 方法調(diào)用時(shí)不需要?jiǎng)?chuàng)建對(duì)象, 可以直接調(diào)用。也就是說,當(dāng)一個(gè) static 方法被調(diào)用時(shí),可能還沒有創(chuàng)建任何實(shí)例對(duì)象,如果從一個(gè) static 方法中發(fā)出對(duì)非 static 方法的調(diào)用, 那個(gè)非static 方法是關(guān)聯(lián)到哪個(gè)對(duì)象上的呢?這個(gè)邏輯無法成立,所以,一個(gè) static方法內(nèi)部發(fā)出對(duì)非 static 方法的調(diào)用。 1 Integer 與 int 的區(qū)別 int 是 java 提供的 8種原始 數(shù)據(jù)類型之一。 Java 為每個(gè)原始類型提供了封裝類, Integer 是 java 為 int 提供的封裝類。 int 的默認(rèn)值為 0,而 Integer 的默認(rèn)值為 null,即 Integer 可以區(qū)分出未賦值和值為 0的區(qū)別, int 則無法表達(dá)出未賦值的情況,例如,要想表達(dá)出沒有參加 考試和考試成績?yōu)?0 的區(qū)別,則只能使用 Integer。在 JSP 開發(fā)中, Integer 的默認(rèn)為 null,所以用 el 表達(dá)式在文本框中顯示時(shí),值為空白字 符串,而 int 默認(rèn)的默認(rèn)值為 0,所以用 el表達(dá)式在文本框中顯示時(shí),結(jié)果為 0,所以, int 不適合作為 web 層 的表單數(shù)據(jù)的類型。 在 Hibernate 中,如果將 OID 定義為 Integer 類型,那么 Hibernate 就可以根據(jù)其值是否為 null 而判斷一個(gè)對(duì)象是否是臨時(shí)的,如果將 OID 定義為了 int 類型,還需要在 hbm 映射文件中設(shè)置其 unsavedvalue 屬性為 0。 另外, Integer 提供了多個(gè)與整數(shù)相關(guān)的操作方法,例如,將一個(gè)字符串轉(zhuǎn)換成整數(shù), Integer 中還定義了表示整數(shù)的最大值和最小值的常量。 1 ()等於多少 ? ()等於多少 ? Math 類中提供 了三個(gè)與取整有關(guān)的方法: ceil、 floor、 round,這些方法的作用與它們的英文名稱的含義相對(duì)應(yīng),例如, ceil 的英文意義是 天花板,該方法就表示向上取整, ()的結(jié)果為 12,()的結(jié)果是11; floor 的英文意義是 地板,該方法就表示向下取整, ()的結(jié)果為 11,()的結(jié)果是 12;最難掌握的是 round 方 法,它表示 “ 四舍五入 ” ,算法為 (x+),即將原來的數(shù)字加上 后再向下取整,所以, ()的 結(jié)果為 12, ()的結(jié)果為 11。 1下面的代碼有什么不妥之處 ? 1. if((“zxx”){} 2. int x = 1。 return x==1?true:false。 1請(qǐng)說出作用域 public, private, protected,以及不寫時(shí)的區(qū)別 這四個(gè)作用域的可見范圍如下表所示。 說明:如果在修飾的元素上面沒有寫任何訪問修飾符,則表示 friendly。 作用域 當(dāng)前類 同一 package 子孫類 其他 package public √ √ √ √ protected √ √ √ friendly √ √ private √ 備注:只要記住了有 4 種訪問權(quán)限, 4 個(gè)訪問范圍,然后將全選和范圍在水平和垂直方向上分別按排從小到大或從大到小的順序排列,就很容易畫出上面的圖了。 1 Overload 和 Override 的區(qū)別。 Overloaded 的方法是否可以改變返回值的類型 ? Overload 是重載的意思, Override 是覆蓋的意思,也就是重寫。 重載 Overload表示同一個(gè)類中可以有多個(gè)名稱相同的方法,但這些方法的參數(shù)列表各不相同(即參數(shù)個(gè)數(shù)或類型不同)。 重寫 Ove
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1