baidu記錄

早上不到一個小時的面試。大概題目做下記錄,算做一次學習。

介紹自己。(需要想一個好點的介紹,起碼能說個一分鐘,不能冷場了。讓面試官有個好的印象)

現在進入正題。

Q1.c/c++中內存分配方式和區別(基礎)。

1) 從靜態存儲區域分配。內存在程序編譯的時候就已經分配好,這塊內存在程序的整個運行期間都存在。例如全局變量,static 變量
2) 在棧上創建。在執行函數時,函數內局部變量的存儲單元都可以在棧上創建,函數執行結束時這些存儲單元自動被釋放。棧內存分配運算內置於處理器的指令集。
3) 從堆上分配,亦稱動態內存分配。程序在運行的時候malloc new 申請任意多少的內存,程序員自己負責在何時用free delete 釋放內存。動態內存的生存期由程序員決定,使用非常靈活,但問題也最多。

Q2.從一個英文歌詞中,搜索一個字符串出現次數。英文歌詞單詞有空格隔開,/n 換行。

細想一下就是“統計文本中某個字符串出現次數

一開始想到的是,單詞分割然後遍歷計數,這樣空間複雜度大。想想可以通過一行一行讀取,對每一行匹配目標字符串,統計次數。

Q3.函數void function(int ,char,long){}內存分配結構。棧的結構。對齊問題呢?

常見基本類型的字節大小

32位操作系統

char :1個字節(固定)

*(即指針變量): 4個字節(32位機的尋址空間是4個字節。同理64位編譯器)(變化*)

short int : 2個字節(固定)

int: 4個字節(固定)

unsigned int : 4個字節(固定)

float: 4個字節(固定)

double: 8個字節(固定)

long: 4個字節

unsigned long: 4個字節(變化*,其實就是尋址控件的地址長度數值)

long long: 8個字節(固定)


64位操作系統

char :1個字節(固定)

*(即指針變量): 8個字節

short int : 2個字節(固定)

int: 4個字節(固定)

unsigned int : 4個字節(固定)

float: 4個字節(固定)

double: 8個字節(固定)

long: 8個字節

unsigned long: 8個字節(變化*其實就是尋址控件的地址長度數值)

long long: 8個字節(固定)

Q4.sql的幾種join

inner join默認的,根據匹配條件查找記錄

A left join B,A中是全匹配,B中有對應的就填寫,沒有就NULL

right join相反

full join是兩個表的所有記錄,對應位置爲空就設置爲NULL

實例t1: id,name & t2:id,mark,class兩個表,查找學生李三姓名,成績,班級

sql:select t1.name, t2.mark,t2.class from t1,t2 where t1.id=t1.id

Q5.baidu賬戶user表有千萬條級別的用戶賬戶記錄。字段是id,name---百度,數據庫查詢優化

根據id查找name,怎麼優化。這個是查詢優化問題。對這個題來說就是id作爲索引,根據id自己查找。要明確查找條件。避免全局掃描。儘量不用like,<=,in ,之類的。語句不復雜。根據常用查找建立索引。

Q6.socket通訊過程。API。TCP網絡通訊。參考詳細http://blog.csdn.net/heyutao007/article/details/6588302

Q7.python定義函數,怎麼定義一個全局

 def 函數名稱([參數1,參數2,參數3......]):
        執行語句

應該儘量避免使用全局變量。不同的模塊都可以自由的訪問全局變量,可能會導致全局變量的不可預知性。對全局變量,如果程序員甲修改了_a的值,程序員乙同時也要使用_a,這時可能導致程序中的錯誤。這種錯誤是很難發現和更正的。 

全局變量降低了函數或模塊之間的通用性,不同的函數或模塊都要依賴於全局變量。同樣,全局變量降低了代碼的可讀性,閱讀者可能並不知道調用的某個變量是全局變量。

但是某些時候,全局變量能夠解決局部變量所難以解決的問題。事物要一分爲二。

python裏面全局變量有兩種靈活的用法:

1 聲明法

在文件開頭聲明全局變量variable,

在具體函數中使用該變量時,需要事先聲明 global variable,否則系統將該變量視爲局部變量。

CONSTANT = 0 (將全局變量大寫便於識別)

def modifyConstant() :
        global CONSTANT
        print CONSTANT
        CONSTANT += 1
        return

if __name__ == '__main__' :
        modifyConstant()
        print CONSTANT

2模塊法(推薦)

把全局變量定義在一個單獨的模塊中:
#gl.py
gl_1 = 'hello'
gl_2 = 'world'

在其它模塊中使用
#a.py
import gl

def hello_world()
    print gl.gl_1, gl.gl_2

#b.py
import gl

def fun1()
    gl.gl_1 = 'Hello'
    gl.gl_2 = 'World'

第二種方法,適用於不同文件之間的變量共享,而且一定程度上避免了開頭所說的全局變量的弊端,推薦!

Q8.python內存管理方式--http://www.cnblogs.com/vamei/p/3232088.html

Python作爲一種動態類型的語言,其對象和引用分離。這與曾經的面向過程語言有很大的區別。爲了有效的釋放內存,Python內置了垃圾回收的支持。Python採取了一種相對簡單的垃圾回收機制,即引用計數,並因此需要解決孤立引用環的問題。Python與其它語言既有共通性,又有特別的地方。對該內存管理機制的理解,是提高Python性能的重要一步

Q9Java多線程,怎麼實現同步,關鍵詞 http://www.importnew.com/12773.html

synchronized

Q10python怎麼copy一個文件到另一個文件

這個問題好搞笑,一行一行讀取寫入就好了,變量自己賦值,文件直接讀入寫入就行了。沒反應過來感覺白癡了。

Q11爬蟲怎麼抓圖片,怎麼確定圖片,絕對地址和相對地址的圖片呢?  http://blog.csdn.net/longshengguoji/article/details/9946675

http://www.webjx.com/program/zonghe-14189.html、

利用python urlparse包抓取網絡圖片,根據url獲取網頁源碼,利用正則表達式過濾圖片地址,根據地址下載網絡圖片。

Q12怎麼從一個很大的文件中找到目標的內容

1、線性查找:把給定的關鍵字值與文件中的記錄逐個進行比較,直至找到與之匹配的記錄爲止。若文件中記錄數爲N,則查找一個記錄平均比較次數爲(N+1)/2。此法簡單,但效率較低。
2、對分查找:此法要求被查找的文件中記錄是按關鍵字值大小順序排列的。將文件一分爲二,把給定關鍵字值與中點的記錄比較,若匹配,則查找成功;否則判斷所要查找的記錄可能在上半部分,還是在下半部分。然後,對確定的部分繼續上述過程,直至找到要求的記錄,查找成功;或最後只剩下一個記錄仍不能匹配,查找失敗。若文件中記錄數爲N,則查到一個記錄的最多比較次數爲log2N。
3、跳步查找:先用大步跳過一部分記錄,再用較小的步長或順序查找方法在較小的範圍內找到要查找的記錄。
4、概率查找:將給定的關鍵字值按某種公式或算法估算出要查記錄的近似位置,然後再用線性查找法確定其準確位置。
5、隨機文件數據查找:對於隨機文件,如果是計算尋址結構的文件可以採用直接查找的方法,即利用關鍵字值和記錄位置之間的對應關係直接找到該記錄。如果是索引結構的文件,先用上述方法查找索引,在索引中找到相應關鍵字值後,再由索引表上對應的地址找到相應的記錄。不同查找方法的效率很不相同,這主要取決於文件結構和查詢問題的特點,查詢算法本身也是重要影響因素。

Q13測試方法,怎麼測試,測試用例

功能測試,白盒測試,性能測試,測試用例











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