1. 程式人生 > >牛客網題目整理

牛客網題目整理

整理了一些在牛客網做錯的題:

有如下4條語句:() 
1234Integer i01=59;int i02=59;Integer i03=Integer.valueOf(59);Integer i04=new Integer(59);
以下輸出結果為false的是: 
  • System.out.println(i01==i02);
  • System.out.println(i01==i03);
  • System.out.println(i03==i04);
  • System.out.println(i02==i04);

解析:==比較的是地址,比較基本型別時比較的是值,如果有包裝型別(不管是不是new出來的)integer自動拆箱為int去跟int比所以A,D正確;

首先常量池這個概念,原來以為只要是一個整型,都會放進到常量池,比如,0,1,12222222等。查詢後發現,Byte,Short,Integer,Long,Character這5種整型的包裝類也只是在對應值小於等於127並且大於等於-128時才可使用常量池,因為他們至佔用一個位元組(-128~127);再者Integer.valueOf方法中也有判斷,如果傳遞的整型變數>= -128並且小於127時會返回IntegerCache類中一個靜態陣列中的某一個物件否則會返回一個新的Integer物件,程式碼如下

public static Integer valueOf(int i) {
    if 
(i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }

2,有如下程式碼,輸出結果是:

publicclassTest

{public static void main(String[] args){int x = 0;int y = 0;int k = 0;for (int z = 0; z < 5; z++) { if ((++x > 2) && (++y > 
2) && (k++ > 2)){x++;++y;k++;}}System.out.println(x + ”” +y + ”” +k);}}z=0時候,執行++x > 2,不成立,&&後面就不執行了,此時 x=1,y=0,k=0; z=1時候,執行++x > 2,還不成立 ,&&後面就不執行了,此時 x=2,y=0,k=0;z=2時候, 執行++x > 2,成立,繼續執行 ++y > 2, 不成立  , &&後面就不執行了, 此時 x=3,y=1,k=0;z=3時候,執行++x > 2,成立,繼續執行++y > 2,不成立  , &&後面就不執行了, 此時 x=4,y=2,k=0;z=4 時候,執行++x > 2,成立,繼續執行 ++y > 2, 成立  , 繼續執行k++>2 ,不成立,此時仍沒有進入for迴圈的語句中, 但此時 x=5,y=3,k=1;z=5時候,不滿足條件了,整個迴圈結束,所以最好列印時候: x=5,y=3,k=1;&&短路運算

 3,關於sleep()和wait(),以下描述錯誤的一項是( ) 

sleep是執行緒類(Thread)的方法,wait是Object類的方法;
sleep不釋放物件鎖,wait放棄物件鎖
sleep暫停執行緒、但監控狀態仍然保持,結束後會自動恢復
wait後進入等待鎖定池,只有針對此物件發出notify方法後獲得物件鎖進入執行狀態

解析:選D,進入的是就緒態,不是執行態。

4,下面有關JVM記憶體,說法錯誤的是?

程式計數器是一個比較小的記憶體區域,用於指示當前執行緒所執行的位元組碼執行到了第幾行,是執行緒隔離的
Java方法執行記憶體模型,用於儲存區域性變數,運算元棧,動態連結,方法出口等資訊,是執行緒隔離的
方法區用於儲存JVM載入的類資訊、常量、靜態變數、即時編譯器編譯後的程式碼等資料,是執行緒隔離的
原則上講,所有的物件都在堆區上分配記憶體,是執行緒之間共享

解析:選C,方法區是執行緒共享的。

執行時資料區包括:虛擬機器棧區,堆區,方法區,本地方法棧,程式計數器

虛擬機器棧區 :也就是我們常說的棧區,執行緒私有,存放基本型別,物件的引用和 returnAddress ,在編譯期間完成分配。

堆區 , JAVA 堆,也稱 GC 堆,所有執行緒共享,存放物件的例項和陣列, JAVA 堆是垃圾收集器管理的主要區域。

方法區 :所有執行緒共享,儲存已被虛擬機器載入的類資訊,常量,靜態變數,即時編譯器編譯後的程式碼等資料。這個區域的記憶體回收目標主要是針對常量池的物件的回收和對型別的解除安裝。

程式計數器 執行緒私有,每個執行緒都有自己獨立的程式計數器,用來指示下一條指令的地址。

5,關於JSP生命週期的敘述,下列哪些為真?

  • JSP會先解釋成Servlet原始檔,然後編譯成Servlet類檔案
  • 每當使用者端執行JSP時,jsp init()方法都會執行一次
  • 每當使用者端執行JSP時,jsp service()方法都會執行一次
  • 每當使用者端執行JSP時,jsp destroy()方法都會執行一次
解析:選ACservlet生命週期:init 、service、destoryinit()和destroy()方法分別在建立和銷燬時執行一次(僅此一次) 
service()方法是接收請求,返回響應的方法。每次請求都執行一次,該方法被HttpServlet封裝為doGet和doPost方法6,下列方法中哪個是執行緒執行的方法? ()
run()
start()
sleep()
suspend()
解析:選Arun()方法用來執行執行緒體中具體的內容 start()方法用來啟動執行緒物件,使其進入就緒狀態 sleep()方法用來使執行緒進入睡眠狀態 suspend()方法用來使執行緒掛起,要通過resume()方法使其重新啟動7,以下哪個介面的定義是正確的?(
  • interface  B
    { public abstract void print()  {  } ;}
  • interface  B
    { static void print() ;}
  • abstract  interface  B  extends  A1, A2  //A1、A2為已定義的介面
    {private abstract  void  print();}
  • interface  B
          {  void  print();}

解析:抽象方法不能有方法體,有大括號,所以A錯誤

          雖然說在Java8可以在介面中定義靜態方法了(此處定義指的是含body的實現),但是不能只宣告,只宣告的會被編譯器識別為抽象方法,而抽象方法不能用static修飾 ,所以B錯誤

          接口裡的方法只能用 public 和 abstract 修飾,如果你不寫也沒關係,預設的也是 public abstract 修飾,C錯誤

8,執行下列程式碼後,哪些結論是正確的()? 

      String[] s=new String[10]; 

s[0]為未定義
s[9]為null
s.length為0
s[10]為” “
解析:預設初始化,基本型別是 0  ,布林型別是 false ,引用型別為null所以這裡為null選B

9,下面關於構造方法的說法不正確的是 ()

  • 構造方法也屬於類的方法,用於建立物件的時候給成員變數賦值
  • 構造方法不可以過載
  • 構造方法沒有返回值
  • 構造方法一定要和類名相同

所謂構造方法, 1,使用關鍵字new例項化一個新物件的時候預設呼叫的方法; 2,構造方法所完成的主要工作是對新建立物件的資料成員賦初值。 使用構造方法時需注意以下幾點 1.構造方法名稱和其所屬的類名必須保持一致; 2.構造方法沒有返回值,也不可以使用void; 3.構造方法也可以像普通方法一樣被過載; 4.構造方法不能被static和final修飾; 5.構造方法不能被繼承,子類使用父類的構造方法需要使用super關鍵字

所以選B

10,下面有關servlet service描述錯誤的是?

  • 不管是post還是get方法提交過來的連線,都會在service中處理
  • doGet/doPost 則是在 javax.servlet.GenericServlet 中實現的
  • service()是在javax.servlet.Servlet介面中定義的
  • service判斷請求型別,決定是呼叫doGet還是doPost方法

doGet/doPost 則是在 javax.servlet.http.HttpServlet 中實現的

11,Java的跨平臺特性是指它的原始碼可以在多個平臺執行。


語言跨平臺是編譯後的檔案跨平臺,而不是源程式跨平臺。Java原始碼首先經過編譯器生成位元組碼,即class檔案,該class檔案與平臺無關,而class檔案經過解釋執行之後翻譯成最終的機器碼,這是平臺相關的。
java原始碼-------位元組碼檔案(class 檔案)------機器碼(與平臺無關)。12,java語言中,按照一定格式生成程式的文件的工具是?
javac
javah
javadoc
jar
解析:jar         將許多檔案組合成一個jar檔案 javac     編譯 javadoc 它從程式原始碼中抽取類、方法、成員等註釋形成一個和原始碼配套的API幫助文件。javah 把java程式碼宣告的JNI方法轉化成C\C++標頭檔案。 JNI可參考java核心技術卷二第12章13,關於AOP錯誤的是?
AOP將散落在系統中的“方面”程式碼集中實現
AOP有助於提高系統可維護性
AOP已經表現出將要替代面向物件的趨勢
AOP是一種設計模式,Spring提供了一種實現

解析:

AOP 和 OOP的區別:

1. 面向方面程式設計 AOP 偏重業務處理過程的某個步驟或階段,強調降低模組之間的耦合度使程式碼擁有更好的移植性2. 面向物件程式設計 (oop) 則是對業務分析中抽取的實體進行方法和屬性的封裝。也可以說AOP是面向業務中的動詞領域,OOP面向名詞領域。AOP 的一個很重要的特點是原始碼無關性,也就是說如果我們的系統中引用了 AOP 元件,即使我們把該元件去掉,系統程式碼也應該能夠編譯通過。要實現這一點,可以使用動態 proxy 模式。14,Servlet的生命週期可以分為初始化階段,執行階段和銷燬階段三個階段,以下過程屬於初始化階段是()。
載入Servlet類及.class對應的資料
建立serletRequest和servletResponse物件
建立ServletConfig物件
建立Servlet物件

解析:
Servlet的生命週期一般可以用三個方法來表示:

  1. init():僅執行一次,負責在裝載Servlet時初始化Servlet物件
  2. service() :核心方法,一般HttpServlet中會有get,post兩種處理方式。在呼叫doGet和doPost方法時會構造servletRequest和servletResponse請求和響應物件作為引數。
  3. destory():在停止並且解除安裝Servlet時執行,負責釋放資源

初始化階段:Servlet啟動,會讀取配置檔案中的資訊,構造指定的Servlet物件,建立ServletConfig物件,將ServletConfig作為引數來呼叫init()方法。所以選ACD。B是在呼叫service方法時才構造的。

15,對於JVM記憶體配置引數: 

-Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3,其最小記憶體值和Survivor區總大小分別是() 
  • 5120m,1024m
  • 5120m,2048m
  • 10240m,1024m
  • 10240m,2048

語言跨平臺是編譯後的檔案跨平臺,而不是源程式跨平臺。Java原始碼首先經過編譯器生成位元組碼,即class檔案,該class檔案與平臺無關,而class檔案經過解釋執行之後翻譯成最終的機器碼,這是平臺相關的。

jar         將許多檔案組合成一個jar檔案 javac    編譯 javadoc 它從程式原始碼中抽取類、方法、成員等註釋形成一個和原始碼配套的API幫助文件。javah 把java程式碼宣告的JNI方法轉化成C\C++標頭檔案。 JNI可參考java核心技術卷二第12章

AOP 和 OOP的區別:

1. 面向方面程式設計 AOP 偏重業務處理過程的某個步驟或階段,強調降低模組之間的耦合度,使程式碼擁有更好的移植性。2. 面向物件程式設計 (oop) 則是對業務分析中抽取的實體進行方法和屬性的封裝。也可以說 AOP 是面向業務中的動詞領域, OOP 面向名詞領域。AOP 的一個很重要的特點是原始碼無關性,也就是說如果我們的系統中引用了 AOP 元件,即使我們把該元件去掉,系統程式碼也應該能夠編譯通過。要實現這一點,可以使用動態 proxy 模式。Servlet的生命週期一般可以用三個方法來表示:
  1. init():僅執行一次,負責在裝載Servlet時初始化Servlet物件
  2. service() :核心方法,一般HttpServlet中會有get,post兩種處理方式。在呼叫doGet和doPost方法時會構造servletRequest和servletResponse請求和響應物件作為引數。
  3. destory():在停止並且解除安裝Servlet時執行,負責釋放資源

初始化階段:Servlet啟動,會讀取配置檔案中的資訊,構造指定的Servlet物件,建立ServletConfig物件,將ServletConfig作為引數來呼叫init()方法。所以選ACD。B是在呼叫service方法時才構造的

    1. init():僅執行一次,負責在裝載Servlet時初始化Servlet物件
    2. service() :核心方法,一般HttpServlet中會有get,post兩種處理方式。在呼叫doGet和doPost方法時會構造servletRequest和servletResponse請求和響應物件作為引數。
    3. destory():在停止並且解除安裝Servlet時執行,負責釋放資源

    初始化階段:Servlet啟動,會讀取配置檔案中的資訊,構造指定的Servlet物件,建立ServletConfig物件,將ServletConfig作為引數來呼叫init()方法。所以選ACD。B是在呼叫service方法時才構造的 

    編輯於 2016-04-27 10:20:37回覆(6)
  • 更多回答(31條)
  • 33doer3頭像

    相關推薦

    題目整理

    整理了一些在牛客網做錯的題:有如下4條語句:() 1234Integer i01=59;int i02=59;Integer i03=Integer.valueOf(59);Integer i04=new Integer(59);以下輸出結果為false的是: System.

    為了最後的春招,做的編程題目

    pri int 角色 機器 spl 使用 字母 加速 for 2018-10-09,22點58 #下面這一段用一個txt來保存input的信息來模擬input.最後提交代碼時候刪除這一段即可. a9999=open(‘1.txt‘,‘r‘) def input():

    noi.ac及NOIP模擬賽部分題目記錄

    牛客網NOIP賽前集訓營-提高組(第二場): T2:分糖果 這個題完全不會啊。考慮序列的情況,容斥就是考慮有多少對相等關係,也就是有多少對等號,那麼設 f

    PAT乙級試題整理(二)——20分真題整理

    牛客網上 共有真題六套,其中每套題有15分題一道,20分題目3道,25分題目1道,共計100分。考試時要求考生在180分鐘內完成,依照陳越姥姥的說法,要在30分鐘內拿下乙級20分題目,所以我們這篇主要想辦法怎麼儘量縮短自己的做題時間。我之前只學過Java和C#,沒有學過C語言,粗

    PAT乙級試題整理(一)——15分真題整理

    牛客網上 共有真題六套,其中每套題有15分題一道,20分題目3道,25分題目1道,共計100分。考試時要求考生在180分鐘內完成。我之前只學過Java和C#,沒有學過C語言,粗淺學習了一下C語言基本語法,想借刷題這個機會好好體會一下面向過程的設計語言的精髓。這裡計劃: 1.先說題

    【演算法】演算法進階班(經典題目選講(2))

    經典題目選講(2) 題目一:搜尋二叉樹vs完全二叉樹vs平衡二叉樹 判斷一棵二叉樹是否是搜尋二叉樹 判斷一棵二叉樹是否是完全二叉樹 判斷一棵二叉樹是否是平衡二叉樹 解答: 1)判斷一棵二叉樹是否是搜尋二叉樹,只要改寫一個二叉樹中序遍歷,在遍歷的過程中看節

    【演算法】演算法進階班(經典題目選講(1))

    經典題目選講(1) 題目一:The Skyline Problem 給定一個Ñ行3列的二維陣列,每一行表示有一座大樓,一共有Ñ座大樓所有大樓的底部都坐落在X軸上,每一行的三個值(A,B, C)代表每座大樓的從(A,0)點開始,到(B,0)點結束,高度為C。輸入的資料可以保證A<

    小白月賽9 論如何出一道水題(OJ題目ACM)

    連結:https://ac.nowcoder.com/acm/contest/275/H 來源:牛客網 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 262144K,其他語言524288K 64bit IO Format: %lld 題目描述 給定 n,求一對整數

    】陣列題目I---【Python】

    class Solution: # array 二維列表 def Find1(self, target, array): # write code here for i in range(len(array)):

    Java常考面試題 (整理)

        本文是牛客網的Java面試常考題 本人整理了一下 去除了 Applet Swing RMI 等不常考的 還有比較一些easy的題目。     原文連結  https://www.nowcoder.com/ta/review-java 下面還有精彩的討論  1、什

    機器學習題目

    SVM核函式:線性核函式、多項式核函式、徑向基核函式、高斯核函式、冪指數核函式、拉普拉斯核函式、ANOVA核函式、二次有理核函式、多元二次核函式、逆多元二次核函式以及Sigmoid核函式,傅立葉核,樣條核 參考SVM核函式 關於 logit 迴歸和 SVM 不正確的是(A)

    牛客網劍指offer—題目一在一個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數

    在一個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。 思路:因為是隻需判斷有無該整數,所以用bool函式,返回false或true      假設是這樣一個數組

    做題總結:劍指offer中題目,java版一

    1、陣列中重複的數字 在一個長度為n的數組裡的所有數字都在0到n-1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意一個重複的數字。 例如,如果輸入長度為7的陣列{2,3,1,0,2,5,3},那麼對應的輸出是重複的數

    易面試題記錄(題目來源-->

    1.魔法幣:小易準備去魔法王國採購魔法神器,購買魔法神器需要使用魔法幣,但是小易現在一枚魔法幣都沒有,但是小易有兩臺魔法機器可以通過投入x(x可以為0)個魔法幣產生更多的魔法幣。 魔法機器1:如果投入x個魔法幣,魔法機器會將其變為2x+1個魔法幣 魔法機器2

    C++題目總結(一)

    準備從今天開始好好在牛客網上練習一些題提高程式碼能力,最近不知道在幹些什麼,所以想現在開始寫總結。一、函式指標的定義:C++指向函式的指標定義方式為:返回型別  (*指標名)  (函式引數列表)  ,例如 void (*p)(int)是指向一個返回值為void 引數為int型

    C++知識點整理(持續更新)

    1.堆疊的使用 棧 在Windows下,棧是向低地址擴充套件的資料結構,是一塊連續的記憶體的區域。這句話的意思是棧頂的地址和棧的最大容量是系統預先規定好的,在WINDOWS下,棧的大小是2M(也有的說是1M,總之是一個編譯時就確定的常數),如果申請的空間

    計算機網路之面試常考--整理來自

    OSI,TCP/IP,五層協議的體系結構,以及各層協議 OSI分層(7層):物理層、資料鏈路層、網路層、傳輸層、會話層、表示層、應用層。 TCP/IP分層(4層):網路介面層、 網際層、運輸層、 應用層。 五層協議 (5層):物理層、資料鏈路層、網路層、運輸層、應用層。 每

    題目的回答大多數來自他人見解,少部分個人領悟)

    2017.11.4 1.一個檔案中的字元要寫到另一個檔案中,首先需要( ) 使用標準輸出流System.out.println()。 建立檔案字元輸出流。 建立檔案字元輸入流。 標準輸入流System.in.read()。 網友回答的:一個檔案中的字元要

    插入 需要 tro article 一個 display aid 集合 open 百度2017春招筆試真題編程題集合 1.買帽子 思路:直接排序數出第三個即可 1 #include <iostream> 2 #include <cstdio>

    秋招模擬筆試第二場(選擇題)

    完整 tab oracle 缺點 語言 mon 指針 解析 nsis 1、計數排序算法(需要兩個輔助數組存放排序結果的B[1...n],提供臨時存儲區的C[0...k]),輸入數組A[1...n]   輔助數組C的長度,輸入數組的最大數就是輔助數組的長度   計數排序是一種