面試二:linux基本操作、python垃圾回收機制、單例模式、python與其他語言區別、lambda函數、重寫與重載、static、final

1.linux的基本操作

Shell:是系統的用戶界面,提供了用戶和內核進行交互操作的一種接口。它接收用戶輸入的命令並把它送入內核去執行,是一個命令解釋器。但它不僅是命令解釋器,而且還是高級編程語言,shell編程。

常用基本命令
Pwd 確定當前目錄
cd [目錄] 切換目錄
cd ~ , 當前用戶目錄

      cd / ,根目錄

      cd   -    , 上一次訪問的目錄

      cd   ..     , 到上以及目錄

     cd /usr      切換到指定目錄

     cd ./         切換到當前目錄下某個目錄

     cd            切換到用戶主目錄

ls 查看目錄下的所有內容/文件夾

mkdir 創建目錄
rmdir 刪除文件夾
cat 文件名 查看文件內容.
Cat /etc/sysconfig/iptables 查看防火牆

more 查看更多內容
q 退出

空格 查詢下一屏內容

Find命令: 查找文件或者目錄

           語法:find [要搜索的目錄] [參數]

                -name        指定字符串作爲尋找文件和目錄的名稱

                find  /  -name  'test*'

touch 文件名 創建文件

tail 主要用於查看日誌

               格式:tail [必要參數] [選擇參數] [文件]

                     -n <行數>    顯示行數

                     -f            循環讀取

                使用ping命令,將ping命令輸出的內容寫入文件,文件名爲ip.log

              &後臺輸出內(寫入文件的具體內容)  >寫入文件<文件名>  如果

是>> 是在原本基礎上追加內容

例子:ping 127.0.0.1 > ip.log &

tail -f ip.log

& 表示後臺運行,否則佔用終端

           Tail  -n  -f   100 ip.log  

           Ctrl +c      退出

Vim 文件名 用於編輯文件

rm 刪除

   rm  文件名                          刪除文件,需要確認

   rm  -f  文件名                       刪除文件,不提示

   rm  -rf  文件名                      遞歸刪除(rm -rf * 刪除所有)

cp a文件 b文件 將a文件複製到b文件
mv a文件 b文件 刪除a文件複製成b文件
tar –zcvf(自考濰坊) 要被創建出來的文件夾名或文件名 /xxx/xxx(要被打包的內容) 如果是:*(當前目錄所有內容打包)

tar –zxvf(直銷濰坊) 要被解壓的文件夾名或文件名 可以加參數 –C /xxx/xx要被解壓文件輸出的指定位置   例如:tar -zxvf  ip.log.tar.gz -C ../  

Kill -9 進程的id 殺死進程

2.描述Python的垃圾回收機制

Python在內存中存儲了每個對象的引用計數(reference count)。如果計數值變成0,那麼相應的對象就會消失,分配給該對象的內存就會釋放出來用作他用。

偶爾也會出現引用循環(reference cycle)。垃圾回收器會定時尋找這個循環,並將其回收。
舉個例子,假設有兩個對象o1和o2,而且符合o1.x == o2和o2.x == o1這兩個條件。如果o1和o2沒有其他代碼引用,那麼它們就不應該繼續存在。但它們的引用計數都是1。

Python中使用了某些啓發式算法(heuristics)來加速垃圾回收
例如,越晚創建的對象更有可能被回收。對象被創建之後,垃圾回收器會分配它們所屬的代(generation)。每個對象都會被分配一個代,而被分配更年輕代的對象是優先被處理的。

3.設計模式——單例模式

這種模式涉及到一個單一的類,該類負責創建自己的對象,同時確保只有單個對象被創建
1.單例類只能有一個實例
2、單例類必須自己創建自己的唯一實例。
3、單例類必須給所有其他對象提供這一實例

主要解決:一個全局使用的類頻繁地創建與銷燬

4.Python與其他編譯語言的區別

高級語言通過編譯或者解釋變成機器語言執行。

編譯型(代表):C(萬惡之源)/C++(加了OOP的萬惡之源)

解釋性(代表):Java(世界上最好的語言)、Python、C#。

編譯型語言是爲了將高級語言編寫的語言轉化爲語義相同的機器語言,編譯只需要編譯一次可以生成可執行文件。(編譯後再執行)

解釋型語言,根據需要一條一條的分析和執行源代碼的程序,每一次都需要源代碼,需要解釋器(邊解釋邊執行)

編譯型和解釋型的優缺點:

編譯型:.速度快、開放度高、資源消耗低。.

解釋型:安全性好、移植性好、友好簡單易上手、開發效率高、.生態強大、代碼簡潔。

5.python中的lambda函數

lambda是python中的保留字,也是匿名函數。

lambda後面接一個表達式,而不是一個代碼塊,比def簡單很多;
lambda的主體是一個表達式,僅僅能在lambda表達式中封裝有限的邏輯進去;
lambda表達式是起到一個函數速寫的作用,允許在代碼內嵌入一個函數的定義

lambda定義的是單行函數,如果需要複雜的函數,應該定義普通函數
lambda參數列表可以包含多個參數,如 lambda x, y: x + y
lambda中的表達式不能含有命令,而且只限一條表達式

重寫與重載區別

重寫:子類方法覆蓋父類方法,其函數名、參數、返回值都相同,子類異常不能超過父類異常,子類訪問級不能低於父類訪問級。

重載:同一類中兩個或以上的方法,函數名相同,參數和函數體不同。最常見的就是構造函數。

static/final

static關鍵字的作用在C語言中
1.static修飾函數時:靜態函數作用範圍僅限於它的源文件,即只有本文件內纔可以調用,函數名在其他文件內不可見

2.static修飾局部變量時,局部靜態變量侷限於特定函數,但出作用域並不釋放在函數體內靜態變量的值也能維持

3.static修飾全局變量時,全局靜態變量作用範圍侷限於它的源文件,即只有本文件內的代碼纔可以訪問它,變量名在其他文件內不可見。

4.存放位置
程序開始時,存放在全局數據區,結束時釋放空間,默認初始化值爲0,使用時可以改變其值。

具體作用
1.隱藏
未加static前綴的全局變量和函數具有全局可見性,static可以作爲函數和變量的前綴,對於函數來講,static的作用僅限於隱藏。

2.保持變量內容的持久
static修飾局部變量後,改變了它的存儲方式,把局部變量存儲到靜態存儲區,改變了局部變量的生存期,生存期爲整個源程序,作用域仍在定義該變量的函數內。
static修飾全局變量後,改變了它的作用域,限制了它的使用範圍,作用域侷限於它的源文件,只有本文件內的代碼可以訪問,變量名在其他文件不可見。
3.默認初始化爲0<static變量>
全局變量也具備這一屬性,因爲全局變量和被static修飾的局部變量都存放在靜態數據區,內存中所有的字節默認值都是0x00.

總結:static最主要的功能是隱藏,其次static變量存放在靜態存儲區,所以它具備持久性和默認值0.

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