牛客網錯題集錦11

1.

解析知識點:

 A.文件分爲文本文件和二進制文件,計算機只認識二進制,所以實際上都是二進制的不同解釋方式。文本文件是以不同編碼格式顯示的字符,例如Ascii、Unicode等,window中文本文件的後綴名有".txt",".log",各種編程語言的源碼文件等;二進制文件就是用文本文檔打開是看不懂亂碼,只要能用文本打開的文件都可以算是文本文件,只是顯示的結果不是你想要的,二進制文件只有用特殊的應用才能讀懂的文件,例如".png",".bmp"等,計算機中大部分的文件還是二進制文件。 

B.File類是對文件整體或者文件屬性操作的類,例如創建文件、刪除文件、查看文件是否存在等功能,不能操作文件內容;文件內容是用IO流操作的。 

C.當輸入過程中意外到達文件或流的末尾時,拋出EOFException異常,正常情況下讀取到文件末尾時,返回一個特殊值表示文件讀取完成,例如read()返回-1表示文件讀取完成。 

D.上面A選項已經說了,不論是文本文件還是二進制文件,在計算機中都是以二進制形式存儲的,所以都當做二進制文件讀取。 

2.
 Statement 每次執行sql語句,數據庫都要執行sql語句的編譯 ,最好用於僅執行一次查詢並返回結果的情形,效率高於PreparedStatement. 

PreparedStatement是預編譯的,使用PreparedStatement有幾個好處 

 a. 在執行可變參數的一條SQL時,PreparedStatement比Statement的效率高,因爲DBMS預編譯一條SQL當然會比多次編譯一條SQL的效率要高。 

 b. 安全性好,有效防止Sql注入等問題。 

 c.  對於多次重複執行的語句,使用PreparedStament效率會更高一點,並且在這種情況下也比較適合使用batch; 

 d.  代碼的可讀性和可維護性。 

  

CallableStatement接口擴展 PreparedStatement,用來調用存儲過程,它提供了對輸出和輸入/輸出參數的支持。CallableStatement 接口還具有對 PreparedStatement 接口提供的輸入參數的支持。 

 總結:
 api: 

public interface CallableStatement extends PreparedStatement 

public interface PreparedStatement extends Statement 

3.
                

方式一:free 

直觀的展示linux系統內存使用及交換區的容量大小等 

               

方式二:top 

動態實時查看系統中每一個進程的資源使用情況 

               

方式三:cat /proc/meminfo 

               

方式四:gnome-system-monitor 一個顯示最近一段時間內的CPU、內存、交換區及網絡使用情況的視圖工具。 

               

方式五:ps aux –sort -rss 

各個線程的資源使用情況 

               

方式六:vmstat -s 

vmstat命令顯示實時的和平均的統計,覆蓋CPU、內存、I/O等內容。 

4.
          linux提供了一種機制可以保證只要父進程想知道子進程結束時的狀態信息, 就可以得到。這種機制就是: 在每個進程退出的時候,內核釋放該進程所有的資源,包括打開的文件,佔用的內存等。 但是仍然爲其保留一定的信息(包括進程號the process ID,退出狀態the termination status of the process,運行時間the amount of CPU time taken by the process等)。直到父進程通過wait / waitpid來取時才釋放。 


        孤兒進程:一個父進程退出,而它的一個或多個子進程還在運行,那麼那些子進程將成爲孤兒進程。孤兒進程將被init進程(進程號爲1)所收養,並由init進程對它們完成狀態收集工作。 

        殭屍進程:一個進程使用fork創建子進程,如果子進程退出,而父進程並沒有調用wait或waitpid獲取子進程的狀態信息,那麼子進程的進程描述符仍然保存在系統中。這種進程稱之爲僵死進程。 


         僵死進程並不是問題的根源,罪魁禍首是產生出大量僵死進程的那個父進程,所以,解決方法就是kill那個父進程,於是殭屍進程就可以被init進程接收,釋放。 

5.

uptime命令過去只顯示系統運行多久。現在,可以顯示系統已經運行了多長時間,信息顯示依次爲:現在時間、系統已經運行了多長時間、目前有多少登陸用戶、系統在過去的1分鐘、5分鐘和15分鐘內的平均負載。 

top命令可以查看系統整體狀態 

最後一些輸出信息的解釋: 

load average: 0.09, 0.05, 0.01 

三個數分別代表不同時間段的系統平均負載(一分鐘、五 分鐘、以及十五分鐘),它們的數字是越小越好。在多核處理中,系統的均值不應該高於處理器核心的總數量 

進程使用的內存可以用top,有3個列VIRT RES SHR, 標示了進程使用的內存情況, VIRT標識這個進程可以使用的內存總大小, 包括這個進程真實使用的內存, 映射過的文件, 和別的進程共享的內存等. RES標識這個這個進程真實佔用內存的大小. SHR標識可以和別的進程共享的內存和庫大小. 

sar -u輸出顯示CPU信息。-u選項是sar的默認選項。該輸出以百分比顯示CPU的使用情況 

ls跟dos下的dir命令是一樣的都是用來列出目錄下的文件 

crontab是一個定時執行任務命令,不能查看系統負載。 


6.

在開發中使用泛型取代非泛型的數據類型(比如用ArrayList<String>取代ArrayList),程序的運行時性能會變得更好。 

這句話是錯誤的。

泛型不影響java虛擬機形成的代碼,在編譯階段,虛擬機就會把泛型的類型擦除,還原成沒有泛型的代碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章