九月十月百度人搜,阿里巴巴,騰訊華爲小米搜狗筆試面試八十題
自發表上一篇文章至今(事實上,上篇文章更新了近3個月之久),blog已經停了3個多月,而在那之前,自開博以來的21個月每月都不曾斷過。正如上一篇文章支持向量機通俗導論(理解SVM的三層境界)末尾所述:」額,blog許久未有更新了,因爲最近實在忙,無暇顧及blog。「與此同時,工作之餘,也一直在閒心研究數據挖掘:"神經網絡將可能作爲Top 10 Algorithms in Data Mining之番外篇第1篇,同時,k-最近鄰法(k-nearest neighbor,kNN)算法談到kd樹將可能作爲本系列第三篇。這是此係列接下來要寫的兩個算法,剛好項目中也要用到KD樹「。
但很顯然,若要等到下一篇數據挖掘系列的文章時(更新:下一篇kd樹目前已經完成:http://t.cn/zjLQ8Ky),說不定要到年底去了,而最近的這段時間,9月、10月,正是各種校招/筆試/面試火熱進行的時節,自己則希望能幫助到這些找工作的朋友,故此,怎能無動於衷,於是,3個多月後,blog今天更新了。
再者,雖然blog自10年10月開通至11年10月,一年的時間內整理了300多道面試題(這300道題全部集錦在此文中第一部分:http://blog.csdn.net/v_july_v/article/details/6543438)。但畢竟那些題已經是前年或去年的了,筆試面試題雖然每年類型變化不大,但畢竟它年年推陳出新,存着就有其合理性。
OK,以下是整理自8月下旬至10月份內的各大公司的筆試面試三十題(注:所有題目基本上全部爲軟件開發方向,題目來源:網絡收集),相信一定能給正在參加各種校招的諸多朋友多少幫助,學習參考或借鑑(如果你手頭上有好的筆試/面試題,歡迎通過微博私信:http://weibo.com/julyweibo,或郵箱:[email protected]發給我,或者乾脆直接評論在本文下;同時,若你對以下任何一題有任何看法.想法.思路或建議,歡迎留言評論,大家一起討論,共同享受思考的樂趣,謝謝)。
九月十月百度人搜,阿里巴巴,騰訊華爲小米搜狗筆試面試八十題
9月11日, 京東:
談談你對面向對象編程的認識
4**9 的筆試題,比較簡單:
1.求鏈表的倒數第二個節點
2.有一個整數數組,求數組中第二大的數
Q爲0
說明數組中至少有兩個0,那麼N-1個數的乘積只能爲0,返回0;
Q爲正數
返回Q,因爲如果以0替換此時AN-1中的任一個數,所得到的PN-1爲0,必然小於Q;
Q爲負數
如果以0替換此時AN-1中的任一個數,所得到的PN-1爲0,大於Q,乘積最大值爲0。
2.P爲負數
根據「負負得正」的乘法性質,自然想到從N個整數中去掉一個負數,使得PN-1爲一個正數。而要使這個正數最大,這個被去掉的負數的絕對值必須是數組中最小的。我們只需要掃描一遍數組,把絕對值最小的負數給去掉就可以了。
3.P爲正數
類似地,如果數組中存在正數值,那麼應該去掉最小的正數值,否則去掉絕對值最大的負數值。上面的解法採用了直接求N個整數的乘積P,進而判斷P的正負性的辦法,但是直接求乘積在編譯環境下往往會有溢出的危險(這也就是本題要求不使用除法的潛在用意),事實上可做一個小的轉變,不需要直接求乘積,而是求出數組中正數(+)、負數(-)和0的個數,從而判斷P的正負性,其餘部分與以上面的解法相同。
10月10日人人網面試題
第一面:
1、(1)++i 和 i++,那個效率高?
(2)++++i,i++++,哪個是合法的?
(3)實現int型的++i 和 i++操作。
2、一段程序,求輸出。(考察靜態變量和模版類)
10月15日,網新恆天筆試題
1.不要使用庫函數,寫出void *memcpy(void *dst, const void *src, size_t count),其中dst是目標地址,src是源地址。
點評:下面是nwpulei寫的代碼:
鏈接:http://blog.csdn.net/nwpulei/article/details/8090136。
2.給定一個字符串,統計一下哪個字符出現次數最大。
3.我們不知道Object類型的變量裏面會出現什麼內容,請寫個函數把Object類型轉換爲int類型。
上面的遞歸程序,有什麼地方需要改進呢?在遞歸的過程中,有些數據被重複計算了。比如,如果開始我們調用CalculateStringDistance(strA,1, 2, strB, 1, 2),下圖是部分展開的遞歸調用。
可以看到,圈中的兩個子問題被重複計算了。爲了避免這種不必要的重複計算,可以把子問題計算後的解存儲起來。如何修改遞歸程序呢?還是DP!請看此鏈接:http://www.cnblogs.com/yujunyong/articles/2004724.html。
3、此外,關於這個「編輯距離」問題的應用:搜索引擎關鍵字查詢中拼寫錯誤的提示,可以看下這篇文章:http://www.ruanyifeng.com/blog/2012/10/spelling_corrector.html。「關於什麼是「編輯距離」:一個快速、高效的Levenshtein算法實現,這個是計算兩個字符串的算法,Levenshtein距離又稱爲「編輯距離」,是指兩個字符串之間,由一個轉換成另一個所需的最少編輯操作次數。當然,次數越小越相似。這裏有一個BT樹的數據結構,挺有意思的:http://blog.notdot.net/2007/4/Damn-Cool-Algorithms-Part-1-BK-Trees」
最後,Lucene中也有這個算法的實現(我想,一般的搜索引擎一般都應該會有此項拼寫錯誤檢查功能的實現):http://www.bjwilly.com/archives/395.html。
4、擴展:面試官還可以繼續問下去:那麼,請問,如何設計一個比較兩篇文章相似性的算法?(這個問題的討論可以看看這裏:http://t.cn/zl82CAH)