收集各大公司面試題集錦,讓你從容應對各種筆試!
百度一面
1、給定一個字符串比如“abcdef”,要求寫個函數(shù)編程“defabc”,位數(shù)是可變的。這個比較簡單,我用的是strcpy和memcpy,然后他問有什么優(yōu)化的辦法,我就不知道了。
2、socket過程就是socket的server和client整個流程寫下來,這個還是沒啥問題的。
3、數(shù)據(jù)結構二叉樹的遍歷,給了個二叉樹,前序、中序、后序寫出來,這個沒什么難度。
https://blog.csdn.net/hackbuteer1/article/details/6583988
4、樹的層次遍歷,這個開始真忘了,想了半天才想起來用隊列。然后他又讓我詳細寫出入隊出隊的過程,總之還是搞定了。
5、兩圓相切轉圏問題——一個小圓半徑是1厘米,一個大圓半徑是5厘米,小圓沿著大圓轉圈,請問要轉幾圈可以轉完大圈?這個問題在行測題做過,就是公轉自轉的問題,不管大小圓半徑是多少,外切轉圏要轉R/r+1圏,外切轉圏轉R/r-1圈。
百度二面
1、二叉樹的前序遍歷的遞歸和非遞歸的可執(zhí)行程序
https://blog.csdn.net/hackbuteer1/article/details/6583988
2、寫出快速排序的實現(xiàn)代碼,一個是字符串拼接函數(shù)的實現(xiàn)strcat(),還有大數(shù)相乘,都是基本題。
3、歸并排序的實現(xiàn)。
https://blog.csdn.net/hackbuteer1/article/details/6568913
4、文件按a~z編號,aa~az,ba~bz...za...zz...aaa...aaz,aba~abz...這樣的方法進行編號。給定任意一個編號,輸出文件是第幾個文件。并寫出測試方法。簡單,把編號看成26進制,這題就是一個十進制和26進制的進制轉換問題了。
5、編程:兩個鏈表,按升序排序,合并后仍按升序,不準用遞歸,并求復雜度
思科一面:
1、C++和Java最大的區(qū)別是什么?
2、static、extern、global的作用?(再一次出現(xiàn)了static,上鏡率真高挖~)
https://blog.csdn.net/hackbuteer1/article/details/7487694
3、inline內(nèi)聯(lián)函數(shù)是否占用運行時間?
思科二面:
1、進程和線程有什么區(qū)別?
2、進程的調(diào)度算法,把記得的全說出來
3、頁面的替換算法都有哪些?
4、用戶態(tài)和內(nèi)核態(tài)的區(qū)別?
騰訊一面:
1、關系型數(shù)據(jù)庫的特點
2、父類的析構函數(shù)為什么要定義為虛函數(shù)
3、float型變量定義為0時應該怎么賦值才是正確的
4、快排算法實現(xiàn)程序
https://blog.csdn.net/hackbuteer1/article/details/6568913
5、KMP算法實現(xiàn)程序
https://blog.csdn.net/hackbuteer1/article/details/7319115
6、override和overload的區(qū)別
騰訊二面:
1、在數(shù)據(jù)庫中如何創(chuàng)建一個表
2、創(chuàng)建后如何添加一個記錄
3、如何刪除一個記錄
4、請編寫實現(xiàn)malloc()內(nèi)存分配函數(shù)功能一樣的代碼。
5、請編寫能直接實現(xiàn)strstr()函數(shù)功能的代碼。
6、已知: 每個飛機只有一個油箱, 飛機之間可以相互加油(注意是相互,沒有加油機) 一箱油可供一架飛機繞地球飛半圈, 問題:為使至少一架飛機繞地球一圈回到起飛時的飛機場,至少需要出動幾架飛機?(所有飛機從同一機場起飛,而且必須安全返回機場,不允許中途降落,中間沒有飛機場)
7、static的作用——再一次出現(xiàn)~
https://blog.csdn.net/hackbuteer1/article/details/7487694
8、寫string類的構造,析構,拷貝函數(shù)——這題大約出現(xiàn)過4次左右,包括編程和程序填空,程序員面試寶典上有這題,也算是個經(jīng)典筆試題,出現(xiàn)幾率極大~
微軟面試題:
1、給你一個凸多邊形,你怎么用一條線,把它分成面積相等的兩部分
2、有一條數(shù)軸,上有一整數(shù)點s,點s兩側分別放了兩個機器人,不知道兩個機器人分別距離s的距離,兩機器人不能相互通信。
現(xiàn)在,給你以下指令:
R(往右一格)
L(往左一格)
IF(S)是否在S點
GOTO A,跳到A代碼段。
設計一套指令給兩個機器人,讓兩個器機可以最終在某一點相遇。
3、怎么判斷兩棵二叉樹是否是同構的
4、按層次打印一個二叉樹
5、給你一個數(shù)n(最大為10000),怎么求其階乘
6、判斷兩個單鏈表是否有交叉
58同城面試題:
一面:
1、set(底層基于紅黑樹實現(xiàn))的操作;
2、手寫快排遞歸與非遞歸實現(xiàn);
https://blog.csdn.net/hackbuteer1/article/details/6568913
3、KMP原理解釋
https://blog.csdn.net/hackbuteer1/article/details/7319115
4、聚類分類協(xié)同過濾算法;
二面:
1、提示詞實現(xiàn)Trie樹+hash
2、最快速度求兩個數(shù)組之交集;
3、文章最短摘要生成;
迅雷面試題:
1、寫一個字符串插入的函數(shù)
2、問了我關于虛函數(shù)底層的實現(xiàn)
https://blog.csdn.net/hackbuteer1/article/details/7883531
3、寫了快排、堆排
https://blog.csdn.net/hackbuteer1/article/details/6568913
4、問我TCP、UDP的一些知識
https://blog.csdn.net/hackbuteer1/article/details/6845406
5、還問了我一些Linux的知識
6、讓我實現(xiàn)紅黑樹的刪除操作
https://blog.csdn.net/hackbuteer1/article/details/7760584
網(wǎng)新恒天一面:
1、考察指針int (*p)[10]和int *p[10]的區(qū)別,用法
2、sizeof(),strlen()的區(qū)別和用法
3、堆、棧的區(qū)別和用法
4、多繼承的優(yōu)點與缺點
5、(1)IO2:30ms, CPU 20ms, IO1 20ms, CPU 30ms
(2) IO1 20ms, CPU 20ms, IO2 10ms
(3) CPU 30ms, IO1 20ms
求三種情況的CPU和IO占用率
網(wǎng)新恒天二面:
1、內(nèi)聯(lián)函數(shù)與宏的區(qū)別
2、與信號量相關知識的考察,具體題目記不清了,反正知道基本概念就會做
3、填空,考察頁式虛擬內(nèi)存的缺頁情況,也是知道這部分知識點就會做的題
4、類的繼承相關知識點的考察,是一道程序輸出分析題
5、棧的類的成員函數(shù)的實現(xiàn),程序填空題。
6、模板函數(shù)與函數(shù)模板的區(qū)別
7、函數(shù)模板與類模板的區(qū)別
百度筆試題:
1、數(shù)組,鏈表的優(yōu)缺點:這個問題比較簡單不過我自己經(jīng)常會忽略的一點是數(shù)組是固定空間,鏈表是可變空間
2、a[N][20]輸入N個長度不超過20的字符串,比較這些字符串中是否有完全相同的字母,且相同字母數(shù)是否相等。如何改進該算法,降低復雜度。
3、猜?lián)淇伺?mdash;—給定一些牌,把花色告訴,把點數(shù)告訴乙
甲:我不知道 乙:我知道你不知道
甲:現(xiàn)在我知道了 乙:我也知道了
求是哪張牌。
給定的牌我不記得,反正這個題很簡單,行測中的簡單題,網(wǎng)上比比皆是。
4、A:M*M矩陣,求字符串S是否存在A的連續(xù)對角線上。(這題應該有涉及到一個之字二維矩陣方面的知識)
A若為內(nèi)存裝不下的大矩陣該如何處理?
5、系統(tǒng)接收數(shù)據(jù)包32字節(jié),第1字節(jié)為優(yōu)先級,其余為數(shù)據(jù)。設計一個調(diào)度算法
(1)優(yōu)先級高的先處理
(2)同等條件下,請求次數(shù)多的先處理
(3)優(yōu)先級高的一定比優(yōu)先級低的先處理
寫出所用的數(shù)據(jù)結構的定義,計算空間容量。
阿里巴巴B2B一面
1、各種排序算法的比較次數(shù)
2、static、auto未初始化的初始值
https://blog.csdn.net/hackbuteer1/article/details/7487694
3、x*=y+8,給出x,y的值,求該表達式計算后二者的值
4、enum類型的default賦值規(guī)則
5、定義函數(shù)F(int x){return (x*x);} 求F(3+5)
6、fgets(s,n,f)函數(shù)的功能
7、定義*s="ab\0cdef",輸出該字符可以看到什么結果
8、還是static相關知識——在此說明一下static這個關鍵字相當重要,在筆試中出現(xiàn)率為100%,在面試中出現(xiàn)率為50%。
9、數(shù)據(jù)庫中索引,簇索引,非簇,唯一,復合,覆蓋索引的區(qū)別
10、SQL語句和范式是對數(shù)據(jù)庫有要求的公司筆試必考點之一
阿里巴巴B2B二面
1、通配符的含義
2、死鎖的基本知識——死鎖是各大筆試面試中出現(xiàn)率50%的知識點
3、信號量P、V原語的相關知識點
4、有向圖的鄰接表表示
5、STL中迭代器的工作原理,迭代器與普通指針有什么區(qū)別?
迭代器和指針相同的地方:
1、指針和iterator都支持與整數(shù)進行+,-運算,而且其含義都是從當前位置向前或者向后移動n個位置
2、指針和iterator都支持減法運算,指針-指針得到的是兩個指針之間的距離,迭代器-迭代器得到的是兩個迭代器之間的距離
3、通過指針或者iterator都能夠修改其指向的元素
通過上面這幾點看,兩者真的很像,但是兩者也有著下面的幾個不同地方
1、out操作符可以直接輸出指針的值,但是對迭代器進行在操作的時候會報錯。通過看報錯信息和頭文件知道,迭代器返回的是對象引用而不是對象的值,所以cout只能輸出迭代器使用*取值后的值而不能直接輸出其自身。
2、指針能指向函數(shù)而迭代器不行,迭代器只能指向容器
這就說明了迭代器和指針其實是完全不一樣的概念來的。指針是一種特殊的變量,它專門用來存放另一變量的地址,而迭代器只是參考了指針的特性進行設計的一種STL接口。
筆者曾在網(wǎng)上看到這樣一種說法:迭代器是廣義指針,而指針滿足所有迭代器要求。迭代器是STL算法的接口,而指針是迭代器,因此STL算法可以使用指針來對基于指針的非STL容器進行操作。
筆者覺得上面說法也有幾分道理,但是到底正不正確就留給看官自己判斷了。但是有一點希望大家注意的是:千萬不要把指針和迭代器搞混了。也許某些編譯器使用指針來實現(xiàn)迭代器以至于有些人會誤以為指針和迭代器是一個概念來的。
6、什么是友元?
7、delete、new的用法
8、typename的用法
9、編程判斷一個數(shù)是否為2的冪
10、你怎樣重新改進和設計一個ATM銀行自動取款機?
12、10000Mbps萬兆交換機怎么實現(xiàn)?
13、操作符重載的相關知識點,大題,具體記不清了
人民搜索的筆試題,總結如下
1、打印漢諾塔移動步驟,并且計算復雜度
2、計算兩個字符串的是否相似(字符的種類,和出現(xiàn)次數(shù)相同)
3、定義二叉樹,節(jié)點值為int,計算二叉樹中的值在[a,b]區(qū)間的節(jié)點的個數(shù)
4、動態(tài)規(guī)劃題:一條路有k可坑,每次能跳平方數(shù)步長(1 4 9 16。。),不能跳到坑里,從a跳到b最少幾步?
5、給一個整數(shù)數(shù)組,求數(shù)組中重復出現(xiàn)次數(shù)大于數(shù)組總個數(shù)一半的數(shù)。
1、對以孩子兄弟鏈接的樹進行遍歷,不能用遞歸,也不能借助任何輔助空間
2、假設數(shù)組B是升序Int數(shù)組A循環(huán)移若干得到的位,實現(xiàn)對數(shù)組B進行查找的高效算法
3、只有整數(shù)和+-*/四種運算組成的算術表達書,實現(xiàn)其求值
4、還有一個是考貪心算法的,你讓他們看算法導論那本書,關于fractional knapsack problem的那一段,就是0-1背包的一種變形;
1、實現(xiàn)一個atoi函數(shù)==>'注意正負號的判定'
2、翻轉一個句子,其中單詞是正序的==>兩次旋轉
3、二叉樹兩個結點中的最小公共子結點==>求長度,長度之差,遠的先走,再一起走
4、三角陣中從第一行到最后一行(給出搜索方向的限制)找一個連續(xù)的最大和==>廣度優(yōu)先搜索√
5、實現(xiàn)一個STL中的vector中的盡量多的方法。