




已閱讀5頁,還剩30頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
選擇題 第一題,兩臺電腦在局域網中,機器為千兆網卡,一臺作服務器里面有一張網頁為1K字節,問另一臺下載這個網頁的速度。我答:我不知道1K是指1024還是1000不過按我的算法沒區別,1000 000000/8/1k我選了10 000張/秒 第二題,單鏈表插入一個節點的問題。在p指向的節點后插入一個q指向的節點。 我答:q-next=p-next;p-next=q; 之后亂序,我記不清楚題號了。 有一題,地圖染色問題,每個國家用矩形表示,讓相鄰國家顏色不同。離散里面有 有一題,問快速排序達到最壞情況時間復雜度n2的原數數組的具體情形。見數據結構 有一題,很扯的指針取址符號混亂,選項卻很白癡。 有一題,入棧序列1,2,3,4,5,.,n,第一個出棧的是n,問第i個出棧的是多少。我答:n-i+1 最后一題,給中綴和后綴表達式,求前綴表達式。 填空題 第一題:數組(a1,a2,a3,a4.,an),刪除任意一個的概率相同,問平均刪除一個要移動多少個。 我答:(n-1)/2第二題:一個程序填空,程序大意是在數組里面找第二大的數。注:不難 第三題:大致如下一個程序片段:void xxx(x) int countx=0; while(x) countx+; x=x&(x-1); coutcountxendl;問xxx(9999)輸出什么。我答:8,記得做ACM的時候碰到過那個式子,貌似關于排列的,具體意思忘記了,搞一下可以明白是x變成二進制,里面有多少個1就是答案。 第四題:大致如下一個代碼 inta32=1,2,3,4,5,6; int*p3; p0=a1; 問*(p0+1)是個什么東西 我答:4,蠻基礎嗯。 簡答題 第一題:7公斤米,50克砝碼,200克砝碼各一個,稱1350克米問最少要多少次,并編程回答。我答,6次,可能一開始會想到 1350/250 + 2 = 7次,說明貪心無效。我不知道我的方法是不是很笨,用了遞推,或者你可以看成是動態規劃。轉化一下題目的意思就是1克和4克砝碼,問多少次稱出27克大米,FN代表N克大米最少需要多少次。則有:FN=minFN-1,FN-4,FN-5+1代碼如下:int findmin(int weight) int v= weight/50; int f150; f0=0;f1=1;f2=2;f3=3;f4=1; if (v5) return fv; int i; for (i=5;i=v;i+) fi=min(fi-1+1,fi-4+1,fi-5+1); return fv; 注:我一開始愣了很久,我在想,稱好的大米可以作為砝碼來用嗎?這樣就是另一種問題了吧。 第二題,n個雞蛋放到m個籃子,每個籃子不能為空,問所有可能的擺放方法,使得滿足對于任意一個不大于n的數可以又若干個籃子里面的雞蛋數加起來。 我答:不能想出算出所有擺放方法的方法,期待ACM大牛路過。 第三題,大意淘寶網的評論系統,原先只有一個評論表,對于現在大用戶,大數據量,大訪問量,請設計一個合理可行的架構來優化關于評論的數據庫。 我答:哥蒙了,哥胡言亂語的。 附加題:前端設計師必答 第一題:圖片默認為半透明,鼠標移上去變成不透明。 我注:img標簽onfocus和onblur的應用,注意這個透明的屬性在IE和FireFox下是不同的。而且用js控制的時候,屬性名也要注意 第二題:一個輸入框,和一個列表框,列表框里面有很多字符串,在輸入框里面輸入字符串時,列表框中字符串前綴是該字符串的做高亮或者其他顯著表示。最后回車選擇或者鼠標雙擊列表框選擇。1.把二元查找樹轉變成排序的雙向鏈表(樹) 題目:輸入一棵二元查找樹,將該二元查找樹轉換成一個排序的雙向鏈表。要求不能創建任何新的結點,只調整指針的指向。 10 / 6 14 / / 4 8 12 16 轉換成雙向鏈表4=6=8=10=12=14=16。 首先我們定義的二元查找樹 節點的數據結構如下: struct BSTreeNode int m_nValue; / value of node BSTreeNode *m_pLeft; / left child of node BSTreeNode *m_pRight; / right child of node; 2.設計包含min函數的棧(棧)定義棧的數據結構,要求添加一個min函數,能夠得到棧的最小元素。要求函數min、push以及pop的時間復雜度都是O(1)。 3.求子數組的最大和(數組)題目:輸入一個整形數組,數組里有正數也有負數。數組中連續的一個或多個整數組成一個子數組,每個子數組都有一個和。求所有子數組的和的最大值。要求時間復雜度為O(n)。例如輸入的數組為1, -2, 3, 10, -4, 7, 2, -5,和最大的子數組為3, 10, -4, 7, 2,因此輸出為該子數組的和18。 4.在二元樹中找出和為某一值的所有路徑(樹)題目:輸入一個整數和一棵二元樹。從樹的根結點開始往下訪問一直到葉結點所經過的所有結點形成一條路徑。打印出和與輸入整數相等的所有路徑。例如 輸入整數22和如下二元樹 10 / 5 12 / 4 7則打印出兩條路徑:10, 12和10, 5, 7。二元樹節點的數據結構定義為:struct BinaryTreeNode / a node in the binary treeint m_nValue; / value of nodeBinaryTreeNode *m_pLeft; / left child of nodeBinaryTreeNode *m_pRight; / right child of node; 5.查找最小的k個元素(數組)題目:輸入n個整數,輸出其中最小的k個。例如輸入1,2,3,4,5,6,7和8這8個數字,則最小的4個數字為1,2,3和4。 第6題(數組)騰訊面試題: 給你10分鐘時間,根據上排給出十個數,在其下排填出對應的十個數 要求下排每個數都是先前上排那十個數在下排出現的次數。 上排的十個數如下: 【0,1,2,3,4,5,6,7,8,9】舉一個例子, 數值: 0,1,2,3,4,5,6,7,8,9 分配: 6,2,1,0,0,0,1,0,0,0 0在下排出現了6次,1在下排出現了2次, 2在下排出現了1次,3在下排出現了0次. 以此類推. 第7題(鏈表)微軟亞院之編程判斷倆個鏈表是否相交給出倆個單向鏈表的頭指針,比如h1,h2,判斷這倆個鏈表是否相交。為了簡化問題,我們假設倆個鏈表均不帶環。問題擴展:1.如果鏈表可能有環列?2.如果需要求出倆個鏈表相交的第一個節點列? 第8題(算法)此貼選一些 比較怪的題,由于其中題目本身與算法關系不大,僅考考思維。特此并作一題。1.有兩個房間,一間房里有三盞燈,另一間房有控制著三盞燈的三個開關,這兩個房間是 分割開的,從一間里不能看到另一間的情況。現在要求受訓者分別進這兩房間一次,然后判斷出這三盞燈分別是由哪個開關控制的。有什么辦法呢?2.你讓一些人為你工作了七天,你要用一根金條作為報酬。金條被分成七小塊,每天給出一塊。如果你只能將金條切割兩次,你怎樣分給這些工人?3.用一種算法來顛倒一個鏈接表的順序。現在在不用遞歸式的情況下做一遍。用一種算法在一個循環的鏈接表里插入一個節點,但不得穿越鏈接表。用一種算法整理一個數組。你為什么選擇這種方法?用一種算法使通用字符串相匹配。顛倒一個字符串。優化速度。優化空間。顛倒一個句子中的詞的順序,比如將“我叫克麗絲”轉換為“克麗絲叫我”,實現速度最快,移動最少。找到一個子字符串。優化速度。優化空間。比較兩個字符串,用O(n)時間和恒量空間。假設你有一個用1001個整數組成的數組,這些整數是任意排列的,但是你知道所有的整數都在1到1000(包括1000)之間。此外,除一個數字出現兩次外,其他所有數字只出現一次。假設你只能對這個數組做一次處理,用一種算法找出重復的那個數字。如果你在運算中使用了輔助的存儲方式,那么你能找到不用這種方式的算法嗎?不用乘法或加法增加8倍。現在用同樣的方法增加7倍。 第9題(樹)判斷整數序列是不是二元查找樹的后序遍歷結果題目:輸入一個整數數組,判斷該數組是不是某二元查找樹的后序遍歷的結果。如果是返回true,否則返回false。例如輸入5、7、6、9、11、10、8,由于這一整數序列是如下樹的后序遍歷結果: 8 / 6 10 / / 5 7 9 11因此返回true。如果輸入7、4、6、5,沒有哪棵樹的后序遍歷的結果是這個序列,因此返回false。 第10題(字符串)翻轉句子中單詞的順序。題目:輸入一個英文句子,翻轉句子中單詞的順序,但單詞內字符的順序不變。句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。例如輸入“I am a student.”,則輸出“student. a am I”。 第11題(樹)求二叉樹中節點的最大距離.如果我們把二叉樹看成一個圖,父子節點之間的連線看成是雙向的,我們姑且定義距離為兩節點之間邊的個數。寫一個程序,求一棵二叉樹中相距最遠的兩個節點之間的距離。 第12題(語法)題目:求1+2+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字以及條件判斷語句(A?B:C)。 第13題(鏈表):題目:輸入一個單向鏈表,輸出該鏈表中倒數第k個結點。鏈表的倒數第0個結點為鏈表的尾指針。鏈表結點定義如下: struct ListNode int m_nKey; ListNode* m_pNext; 第14題(數組):題目:輸入一個已經按升序排序過的數組和一個數字,在數組中查找兩個數,使得它們的和正好是輸入的那個數字。要求時間復雜度是O(n)。如果有多對數字的和等于輸入的數字,輸出任意一對即可。例如輸入數組1、2、4、7、11、15和數字15。由于4+11=15,因此輸出4和11。 第15題(樹):題目:輸入一顆二元查找樹,將該樹轉換為它的鏡像,即在轉換后的二元查找樹中,左子樹的結點都大于右子樹的結點。用遞歸和循環兩種方法完成樹的鏡像轉換。 例如輸入: 8 / 6 10 / /5 7 9 11輸出: 8 / 10 6 / /11 9 7 5定義二元查找樹的結點為:struct BSTreeNode / a node in the binary search tree (BST) int m_nValue; / value of node BSTreeNode *m_pLeft; / left child of node BSTreeNode *m_pRight; / right child of node; 第16題(樹):題目(微軟):輸入一顆二元樹,從上往下按層打印樹的每個結點,同一層中按照從左往右的順序打印。 例如輸入 8 / 6 10/ / 5 7 9 11輸出8 6 10 5 7 9 11。 第17題(字符串):題目:在一個字符串中找到第一個只出現一次的字符。如輸入abaccdeff,則輸出b。 分析:這道題是2006年google的一道筆試題。 第18題(數組):題目:n個數字(0,1,n-1)形成一個圓圈,從數字0開始,每次從這個圓圈中刪除第m個數字(第一個為當前數字本身,第二個為當前數字的下一個數字)。當一個數字刪除后,從被刪除數字的下一個繼續刪除第m個數字。求出在這個圓圈中剩下的最后一個數字。July:我想,這個題目,不少人已經 見識過了。 第19題(數組、遞歸):題目:定義Fibonacci數列如下: / 0 n=0f(n)= 1 n=1 f(n-1)+f(n-2) n=2輸入n,用最快的方法求該數列的第n項。分析:在很多C語言教科書中講到遞歸函數的時候,都會用Fibonacci作為例子。因此很多程序員對這道題的遞歸解法非常熟悉,但.呵呵,你知道的。 第20題(字符串):題目:輸入一個表示整數的字符串,把該字符串轉換成整數并輸出。例如輸入字符串345,則輸出整數345。 第21題(數組)2010年中興面試題編程求解:輸入兩個整數 n 和 m,從數列1,2,3.n 中 隨意取幾個數,使其和等于 m ,要求將其中所有的可能組合列出來. 第22題(推理):有4張紅色的牌和4張藍色的牌,主持人先拿任意兩張,再分別在A、B、C三人額頭上貼任意兩張牌,A、B、C三人都可以看見其余兩人額頭上的牌,看完后讓他們猜自己額頭上是什么顏色的牌,A說不知道,B說不知道,C說不知道,然后A說知道了。請教如何推理,A是怎么知道的。如果用程序,又怎么實現呢? 第23題(算法):用最簡單,最快速的方法計算出下面這個圓形是否和正方形相交。 3D坐標系 原點(0.0,0.0,0.0)圓形:半徑r = 3.0圓心o = (*.*, 0.0, *.*)正方形:4個角坐標; 1:(*.*, 0.0, *.*)2:(*.*, 0.0, *.*)3:(*.*, 0.0, *.*)4:(*.*, 0.0, *.*) 第24題(鏈表):鏈表操作,單鏈表就地逆置, 第25題(字符串):寫一個函數,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出連續最長的數字串,并把這個串的長度返回,并把這個最長數字串付給其中一個函數參數outputstr所指內存。例如:abcd12345ed125ss123456789的首地址傳給intputstr后,函數將返回9,outputstr所指的值為123456789 26.左旋轉字符串(字符串)題目:定義字符串的左旋轉操作:把字符串前面的若干個字符移動到字符串的尾部。如把字符串abcdef左旋轉2位得到字符串cdefab。請實現字符串左旋轉的函數。要求時間對長度為n的字符串操作的復雜度為O(n),輔助內存為O(1)。 27.跳臺階問題(遞歸)題目:一個臺階總共有n級,如果一次可以跳1級,也可以跳2級。求總共有多少總跳法,并分析算法的時間復雜度。這道題最近經常出現,包括MicroStrategy等比較重視算法的公司都曾先后選用過個這道題作為面試題或者筆試題。 28.整數的二進制表示中1的個數(運算)題目:輸入一個整數,求該整數的二進制表達中有多少個1。例如輸入10,由于其二進制表示為1010,有兩個1,因此輸出2。分析:這是一道很基本的考查位運算的面試題。包括微軟在內的很多公司都曾采用過這道題。 29.棧的push、pop序列(棧)題目:輸入兩個整數序列。其中一個序列表示棧的push順序,判斷另一個序列有沒有可能是對應的pop順序。為了簡單起見,我們假設push序列的任意兩個整數都是不相等的。 比如輸入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一個pop系列。因為可以有如下的push和pop序列:push 1,push 2,push 3,push 4,pop,push 5,pop,pop,pop,pop,這樣得到的pop序列就是4、5、3、2、1。但序列4、3、5、1、2就不可能是push序列1、2、3、4、5的pop序列。 30.在從1到n的正數中1出現的次數(數組)題目:輸入一個整數n,求從1到n這n個整數的十進制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1 的數字有1,10,11和12,1一共出現了5次。分析:這是一道廣為流傳的google面試題。 31.華為面試題(搜索):一類似于蜂窩的結構的圖,進行搜索最短路徑(要求5分鐘) 32.(數組、規劃)有兩個序列a,b,大小都為n,序列元素的值任意整數,無序;要求:通過交換a,b中的元素,使序列a元素的和與序列b元素的和之間的差最小。例如: var a=100,99,98,1,2, 3;var b=1, 2, 3, 4,5,40; 33.(字符串)實現一個挺高級的字符匹配算法:給一串很長字符串,要求找到符合要求的字符串,例如目的串:1231*3*2 ,12*3這些都要找出來其實就是類似一些和諧系統。 34.(隊列)實現一個隊列。隊列的應用場景為:一個生產者線程將int類型的數入列,一個消費者線程將int類型的數出列 35.(矩陣)求一個矩陣中最大的二維矩陣(元素和最大).如:1 2 0 3 42 3 4 5 11 1 5 3 0中最大的是:4 55 3要求:(1)寫出算法;(2)分析時間復雜度;(3)用C寫出關鍵代碼 第36題-40題(有些題目搜集于CSDN上的網友,已標明):36.引用自網友:longzuo(運算)谷歌筆試:n支隊伍比賽,分別編號為0,1,2。n-1,已知它們之間的實力對比關系,存儲在一個二維數組wnn中,wij 的值代表編號為i,j的隊伍中更強的一支。所以wij=i 或者j,現在給出它們的出場順序,并存儲在數組ordern中,比如ordern = 4,3,5,8,1.,那么第一輪比賽就是 4對3, 5對8。.勝者晉級,敗者淘汰,同一輪淘汰的所有隊伍排名不再細分,即可以隨便排,下一輪由上一輪的勝者按照順序,再依次兩兩比,比如可能是4對5,直至出現第一名編程實現,給出二維數組w,一維數組order 和 用于輸出比賽名次的數組resultn,求出result。 37.(字符串)有n個長為m+1的字符串,如果某個字符串的最后m個字符與某個字符串的前m個字符匹配,則兩個字符串可以聯接,問這n個字符串最多可以連成一個多長的字符串,如果出現循環,則返回錯誤。 38.(算法)百度面試:1.用天平(只能比較,不能稱重)從一堆小球中找出其中唯一一個較輕的,使用x次天平,最多可以從y個小球中找出較輕的那個,求y與x的關系式。2.有一個很大很大的輸入流,大到沒有存儲器可以將其存儲下來,而且只輸入一次,如何從這個輸入流中隨機取得m個記錄。3.大量的URL字符串,如何從中去除重復的,優化時間空間復雜度 39.(樹、圖、算法)網易有道筆試:(1).求一個二叉樹中任意兩個節點間的最大距離,兩個節點的距離的定義是 這兩個節點間邊的個數,比如某個孩子節點和父節點間的距離是1,和相鄰兄弟節點間的距離是2,優化時間空間復雜度。(2).求一個有向連通圖的割點,割點的定義是,如果除去此節點和與其相關的邊,有向圖不再連通,描述算法。 40.百度研發筆試題(棧、算法)引用自:zp1553348771)設計一個棧結構,滿足一下條件:min,push,pop操作的時間復雜度為O(1)。2)一串首尾相連的珠子(m個),有N種顏色(N2-3 和 2-3-5 并為 1-2-3-5另外只能輸出結果,不能修改兩個鏈表的數據。 43.遞歸和非遞歸倆種方法實現二叉樹的前序遍歷。 44.騰訊面試題(算法):1.設計一個魔方(六面)的程序。2.有一千萬條短信,有重復,以文本文件的形式保存,一行一條,有重復。請用5分鐘時間,找出重復出現最多的前10條。3.收藏了1萬條url,現在給你一條url,如何找出相似的url。(面試官不解釋何為相似) 45.雅虎(運算、矩陣):1.對于一個整數矩陣,存在一種運算,對矩陣中任意元素加一時,需要其相鄰(上下左右)某一個元素也加一,現給出一正數矩陣,判斷其是否能夠由一個全零矩陣經過上述運算得到。2.一個整數數組,長度為n,將其分為m份,使各份的和相等,求m的最大值 比如3,2,4,3,6 可以分成3,2,4,3,6 m=1; 3,62,4,3 m=2 3,32,46 m=3 所以m的最大值為3 46.搜狐(運算):四對括號可以有多少種匹配排列方式?比如兩對括號可以有兩種:()()和()47.創新工場(算法):求一個數組的最長遞減子序列 比如9,4,3,2,5,4,3,2的最長遞減子序列為9,5,4,3,2 48.微軟(運算):一個數組是由一個遞減數列左移若干位形成的,比如4,3,2,1,6,5是由6,5,4,3,2,1左移兩位形成的,在這種數組中查找某一個數。 49.一道看上去很嚇人的算法面試題(排序、算法):如何對n個數進行排序,要求時間復雜度O(n),空間復雜度O(1) 50.網易有道筆試(sorry,與第39題重復):1.求一個二叉樹中任意兩個節點間的最大距離,兩個節點的距離的定義是 這兩個節點間邊的個數,比如某個孩子節點和父節點間的距離是1,和相鄰兄弟節點間的距離是2,優化時間空間復雜度。2.求一個有向連通圖的割點,割點的定義是,如果除去此節點和與其相關的邊,有向圖不再連通,描述算法。-51.和為n連續正數序列(數組)。題目:輸入一個正數n,輸出所有和為n連續正數序列。例如輸入15,由于1+2+3+4+5=4+5+6=7+8=15,所以輸出3個連續序列1-5、4-6和7-8。分析:這是網易的一道面試題。 52.二元樹的深度(樹)。題目:輸入一棵二元樹的根結點,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。例如:輸入二元樹: 10 / 6 14 / / 4 12 16輸出該樹的深度3。二元樹的結點定義如下:struct SBinaryTreeNode / a node of the binary tree int m_nValue; / value of node SBinaryTreeNode *m_pLeft; / left child of node SBinaryTreeNode *m_pRight; / right child of node;分析:這道題本質上還是考查二元樹的遍歷。 53.字符串的排列(字符串)。題目:輸入一個字符串,打印出該字符串中字符的所有排列。例如輸入字符串abc,則輸出由字符a、b、c所能排列出來的所有字符串abc、acb、bac、bca、cab和cba。分析:這是一道很好的考查對遞歸理解的編程題,因此在過去一年中頻繁出現在各大公司的面試、筆試題中。 54.調整數組順序使奇數位于偶數前面(數組)。題目:輸入一個整數數組,調整數組中數字的順序,使得所有奇數位于數組的前半部分,所有偶數位于數組的后半部分。要求時間復雜度為O(n)。 55.(語法)題目:類CMyString的聲明如下:class CMyStringpublic: CMyString(char* pData = NULL); CMyString(const CMyString& str); CMyString(void); CMyString& operator = (const CMyString& str);private: char* m_pData;請實現其賦值運算符的重載函數,要求異常安全,即當對一個對象進行賦值時發生異常,對象的狀態不能改變。 56.最長公共字串(算法、字符串)。題目:如果字符串一的所有字符按其在字符串中的順序出現在另外一個字符串二中,則字符串一稱之為字符串二的子串。注意,并不要求子串(字符串一)的字符必須連續出現在字符串二中。請編寫一個函數,輸入兩個字符串,求它們的最長公共子串,并打印出最長公共子串。例如:輸入兩個字符串BDCABA和ABCBDAB,字符串BCBA和BDAB都是是它們的最長公共子串,則輸出它們的長度4,并打印任意一個子串。分析:求最長公共子串(Longest Common Subsequence, LCS)是一道非常經典的動態規劃題,因此一些重視算法的公司像MicroStrategy都把它當作面試題。 57.用倆個棧實現隊列(棧、隊列)。 題目:某隊列的聲明如下:template class CQueuepublic: CQueue() CQueue() void appendTail(const T& node); / append a element to tail void deleteHead(); / remove a element from head private: T m_stack1; T m_stack2;分析:從上面的類的聲明中,我們發現在隊列中有兩個棧。因此這道題實質上是要求我們用兩個棧來實現一個隊列。相信大家對棧和隊列的基本性質都非常了解了:棧是一種后入先出的數據容器,因此對隊列進行的插入和刪除操作都是在棧頂上進行;隊列是一種先入先出的數據容器,我們總是把新元素插入到隊列的尾部,而從隊列的頭部刪除元素。 58.從尾到頭輸出鏈表(鏈表)。題目:輸入一個鏈表的頭結點,從尾到頭反過來輸出每個結點的值。鏈表結點定義如下:struct ListNode int m_nKey; ListNode* m_pNext;分析:這是一道很有意思的面試題。該題以及它的變體經常出現在各大公司的面試、筆試題中。 59.不能被繼承的類(語法)。題目:用C+設計一個不能被繼承的類。分析:這是Adobe公司2007年校園招聘的最新筆試題。這道題除了考察應聘者的C+基本功底外,還能考察反應能力,是一道很好的題目。 60.在O(1)時間內刪除鏈表結點(鏈表、算法)。題目:給定鏈表的頭指針和一個結點指針,在O(1)時間刪除該結點。鏈表結點的定義如下:struct ListNode int m_nKey; ListNode* m_pNext;函數的聲明如下:void DeleteNode(ListNode* pListHead, ListNode* pToBeDeleted);分析:這是一道廣為流傳的Google面試題,能有效考察我們的編程基本功,還能考察我們的反應速度,更重要的是,還能考察我們對時間復雜度的理解。- 61.找出數組中兩個只出現一次的數字(數組)題目:一個整型數組里除了兩個數字之外,其他的數字都出現了兩次。請寫程序找出這兩個只出現一次的數字。要求時間復雜度是O(n),空間復雜度是O(1)。分析:這是一道很新穎的關于位運算的面試題。 62.找出鏈表的第一個公共結點(鏈表)。題目:兩個單向鏈表,找出它們的第一個公共結點。鏈表的結點定義為:struct ListNode int m_nKey; ListNode* m_pNext;分析:這是一道微軟的面試題。微軟非常喜歡與鏈表相關的題目,因此在微軟的面試題中,鏈表出現的概率相當高。 63.在字符串中刪除特定的字符(字符串)。題目:輸入兩個字符串,從第一字符串中刪除第二個字符串中所有的字符。例如,輸入”They are students.”和”aeiou”,則刪除之后的第一個字符串變成”Thy r stdnts.”。分析:這是一道微軟面試題。在微軟的常見面試題中,與字符串相關的題目占了很大的一部分,因為寫程序操作字符串能很好的反映我們的編程基本功。 64. 尋找丑數(運算)。題目:我們把只包含因子2、3和5的數稱作丑數(Ugly Number)。例如6、8都是丑數,但14不是,因為它包含因子7。習慣上我們把1當做是第一個丑數。求按從小到大的順序的第1500個丑數。分析:這是一道在網絡上廣為流傳的面試題,據說google曾經采用過這道題。 65.輸出1到最大的N位數(運算)題目:輸入數字n,按順序輸出從1最大的n位10進制數。比如輸入3,則輸出1、2、3一直到最大的3位數即999。分析:這是一道很有意思的題目。看起來很簡單,其實里面卻有不少的玄機。 66.顛倒棧(棧)。題目:用遞歸顛倒一個棧。例如輸入棧1, 2, 3, 4, 5,1在棧頂。顛倒之后的棧為5, 4, 3, 2, 1,5處在棧頂。 67.倆個閑玩娛樂(運算)。1.撲克牌的順子從撲克牌中隨機抽5張牌,判斷是不是一個順子,即這5張牌是不是連續的。2-10為數字本身,A為1,J為11,Q為12,K為13,而大小王可以看成任意數字。 2.n個骰子的點數。把n個骰子扔在地上,所有骰子朝上一面的點數之和為S。輸入n,打印出S的所有可能的值出現的概率。 68.把數組排成最小的數(數組、算法)。題目:輸入一個正整數數組,將它們連接起來排成一個數,輸出能排出的所有數字中最小的一個。例如輸入數組32, 321,則輸出這兩個能排成的最小數字32132。請給出解決問題的算法,并證明該算法。分析:這是09年6月份百度的一道面試題,從這道題我們可以看出百度對應聘者在算法方面有很高的要求。 69.旋轉數組中的最小元素(數組、算法)。題目:把一個數組最開始的若干個元素搬到數組的末尾,我們稱之為數組的旋轉。輸入一個排好序的數組的一個旋轉,輸出旋轉數組的最小元素。例如數組3, 4, 5, 1, 2為1, 2, 3, 4, 5的一個旋轉,該數組的最小值為1。 分析:這道題最直觀的解法并不難。從頭到尾遍歷數組一次,就能找出最小的元素,時間復雜度顯然是O(N)。但這個思路沒有利用輸入數組的特性,我們應該能找到更好的解法。 70.給出一個函數來輸出一個字符串的所有排列(經典字符串問題)。ANSWER 簡單的回溯就可以實現了。當然排列的產生也有很多種算法,去看看組合數學,還有逆序生成排列和一些不需要遞歸生成排列的方法。印象中Knuth的第一卷里面深入講了排列的生成。這些算法的理解需要一定的數學功底,也需要一定的靈感,有興趣最好看看。 71.數值的整數次方(數字、運算)。題目:實現函數double Power(double base, int exponent),求base的exponent次方。不需要考慮溢出。分析:這是一道看起來很簡單的問題。可能有不少的人在看到題目后30秒寫出如下的代碼:double Power(double base, int exponent) double result = 1.0; for(int i = 1; i =len2,那么指針p1由head1開始向后移動len1-len2步,指針p2=head2,下面p1、p2每次向后前進一步并比較p1p2是否相等,如果相等即返回該結點,否則說明兩個鏈表沒有交點。3.給定單鏈表(head),如果有環的話請返回從頭結點進入環的第一個節點。 運用題一,我們可以檢查鏈表中是否有環。 如果有環,那么p1p2重合點p必然在環中。從p點斷開環,方法為:p1=p, p2=p-next, p-next=NULL。此時,原單鏈表可以看作兩條單鏈表,一條從head開始,另一條從p2開始,于是運用題二的方法,我們找到它們的第一個交點即為所求。4.只給定單鏈表中某個結點p(并非最后一個結點,即p-next!=NULL)指針,刪除該結點。 辦法很簡單,首先是放p中數據,然后將p-next的數據copy入p中,接下來刪除p-next即可。5.只給定單鏈表中某個結點p(非空結點),在p前面插入一個結點。 辦法與前者類似,首先分配一個結點q,將q插入在p后,接下來將p中的數據copy入q中,然后再將要插入的數據記錄在p中。 78.鏈表和數組的區別在哪里(鏈表、數組)?分析:主要在基本概念上的理解。但是最好能考慮的全面一點,現在公司招人的競爭可能就在細節上產生,誰比較仔細,誰獲勝的機會就大。 79.(鏈表、字符串)1.編寫實現鏈表排序的一種算法。說明為什么你會選擇用這樣的方法?2.編寫實現數組排序的一種算法。說明為什么你會選擇用這樣的方法?3.請編寫能直接實現strstr()函數功能的代碼。 80.阿里巴巴一道筆試題(運算、算法)問題描述:12個高矮不同的人,排成兩排,每排必須是從矮到高排列,而且第二排比對應的第一排的人高,問排列方式有多少種?這個筆試題,很YD,因為把某個遞歸關系隱藏得很深。 先來幾組百度的面試題:=81.第1組百度面試題1.一個int數組,里面數據無任何限制,要求求出所有這樣的數ai,其左邊的數都小于等于它,右邊的數都大于等于它。能否只用一個額外數組和少量其它空間實現。2.一個文件,內含一千萬行字符串,每個字符串在1K以內,要求找出所有相反的串對,如abc和cba。3.STL的set用什么實現的?為什么不用hash? 82.第2組百度面試題1.給出兩個集合A和B,其中集合A=name,集合B=age、sex、scholarship、address、.,要求:問題1、
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- JJG(煙草)30-2016卷煙端部落絲測定儀檢定規程振動法
- 2025年美術教師編制考試模擬試卷:美術教師教學研究能力試題集
- 考研復習-風景園林基礎考研試題【各地真題】附答案詳解
- 風景園林基礎考研資料試題及參考答案詳解ab卷
- 泰州市2024-2025學年五年級下學期數學期末試題一(有答案)
- 2025年河北省定州市輔警招聘考試試題題庫及答案詳解(必刷)
- 2024年演出經紀人之演出經紀實務押題練習試卷【必刷】 (一)
- 化學●福建卷丨2022年福建省普通高中學業水平選擇性考試化學試卷及答案
- Brand KPIs for online betting:KTO in Brazil-英文培訓課件2025.5
- 初中數學九年級下冊統編教案 6.2黃金分割
- 2025水利工程總承包合同
- 2025-2030年中國數字金融行業市場深度調研及競爭格局與前景預測研究報告
- 2025入團積極分子發展對象考試題庫及答案詳解(必刷)
- 2025河南省農業信貸擔保有限責任公司招聘32人筆試參考題庫附帶答案詳解
- 2025 年發展對象培訓考試題及答案
- 蜜雪冰城轉讓店協議合同
- 《高效吸引目標客戶》課件
- 江蘇鎮江歷年中考作文題與審題指導(2003-2020)
- 二零二五版塔吊司機承包合同書協議書
- 2025年中國電動垂直起降飛行器行業市場前景預測及投資價值評估分析報告
- 產品臨床推廣合同協議書范本模板5篇
評論
0/150
提交評論