範文齋

位置:首頁 > 職場範文 > 面試

各大公司面試題目

面試1.98W

  阿里巴巴B2B一面

各大公司面試題目

1、各種排序算法的比較次數

2、static、auto未初始化的初始值

3、x*=y+8,給出x,y的值,求該表達式計算後二者的值

4、enum類型的default賦值規則

5、定義函數F(int x){return (x*x);} 求F(3+5)

6、fgets(s,n,f)函數的功能

7、定義*s="abcdef",輸出該字符可以看到什麼結果

8、還是static相關知識在此說明一下static這個關鍵字相當重要,在筆試中出現率爲100%,在面試中出現率爲50%。

9、數據庫中索引,簇索引,非簇,唯一,複合,覆蓋索引的區別

10、SQL語句和範式是對數據庫有要求的公司筆試必考點之一

  阿里巴巴B2B二面

1、通配符的含義

2、死鎖的基本知識死鎖是各大筆試面試中出現率50%的知識點

3、信號量P、V原語的相關知識點

4、有向圖的鄰接表表示

5、STL中迭代器的工作原理,迭代器與普通指針有什麼區別?

迭代器和指針相同的地方:

1、指針和iterator都支持與整數進行+,-運算,而且其含義都是從當前位置向前或者向後移動n個位置

2、指針和iterator都支持減法運算,指針-指針得到的是兩個指針之間的距離,迭代器-迭代器得到的是兩個迭代器之間的距離

3、通過指針或者iterator都能夠修改其指向的元素

通過上面這幾點看,兩者真的很像,但是兩者也有着下面的幾個不同地方

1、out操作符可以直接輸出指針的值,但是對迭代器進行在操作的時候會報錯。通過看報錯信息和頭文件知道,迭代器返回的是對象引用而不是對象的`值,所以cout只能輸出迭代器使用*取值後的值而不能直接輸出其自身。

2、指針能指向函數而迭代器不行,迭代器只能指向容器

這就說明了迭代器和指針其實是完全不一樣的概念來的。指針是一種特殊的變量,它專門用來存放另一變量的地址,而迭代器只是參考了指針的特性進行設計的一種STL接口。

筆者曾在網上看到這樣一種說法:迭代器是廣義指針,而指針滿足所有迭代器要求。迭代器是STL算法的接口,而指針是迭代器,因此STL算法可以使用指針來對基於指針的非STL容器進行操作。

筆者覺得上面說法也有幾分道理,但是到底正不正確就留給看官自己判斷了。但是有一點希望大家注意的是:千萬不要把指針和迭代器搞混了。也許某些編譯器使用指針來實現迭代器以至於有些人會誤以爲指針和迭代器是一個概念來的。

6、什麼是友元?

7、、new的用法

8、typename的用法

9、編程判斷一個數是否爲2的冪

10、你怎樣重新改進和設計一個ATM銀行自動取款機?

12、10000Mbps萬兆交換機怎麼實現?

13、操作符重載的相關知識點,大題,具體記不清了

人民搜索的筆試題

1、打印漢諾塔移動步驟,並且計算複雜度

2、計算兩個字符串的是否相似(字符的種類,和出現次數相同)

3、定義二叉樹,節點值爲int,計算二叉樹中的值在[a,b]區間的節點的個數

4、動態規劃題:一條路有k可坑,每次能跳平方數步長(1 4 9 16。。),不能跳到坑裏,從a跳到b最少幾步?

5、給一個整數數組,求數組中重複出現次數大於數組總個數一半的數。

1、對以孩子兄弟鏈接的樹進行遍歷,不能用遞歸,也不能借助任何輔助空間

2、假設數組B是升序Int數組A循環移若干得到的位,實現對數組B進行查找的高效算法

3、只有整數和+-*/四種運算組成的算術表達書,實現其求值

4、還有一個是考貪心算法的,你讓他們看算法導論那本書,關於fractional knapsack problem的那一段,就是0-1揹包的一種變形;

5、鏈表相鄰元素翻轉,如a->b->c->d->e->f-g,翻轉後變爲:b->a->d->c->f->e->g

6、求正整數n所有可能的和式的組合(如;4=1+1+1+1、1+1+2、1+3、2+1+1、2+2)

1、實現一個atoi函數==>'注意正負號的判定'

2、翻轉一個句子,其中單詞是正序的==>兩次旋轉

3、二叉樹兩個結點中的最小公共子結點==>求長度,長度之差,遠的先走,再一起走

4、三角陣中從第一行到最後一行(給出搜索方向的限制)找一個連續的最大和==>廣度優先搜索√

5、實現一個STL中的vector中的儘量多的方法。

6、字符串移動(字符串爲*號和26個字母的任意組合,把*號都移動到最左側,把字母移到最右側並保持相對順序不變),要求時間和空間複雜度最小。

void Arrange(char *str , int n)

{

int i , k = n-1;

for(i = n - 1 ; i >= 0 ; --i)

{

if(str[i] != '*')

{

if(str[k] == '*')

{

str[k] = str[i];

str[i] = '*';

}

--k;

}

}

}

7、說說outer join、inner join、left join、right join的區別是什麼?

內連接:進行連接的兩個表對應的相匹配的字段完全相同的連接。join

外連接又分爲左外連接和右外連接。

左連接即LEFT OUTER JOIN:

兩個表進行左連接時會返回左邊表中的所有的行和右邊表中與之相匹配的列值沒有相匹配的用空值代替。

右連接即RIGHT OUTER JOIN:

兩個表進行右連接時會返回右邊表中的所有的行和左邊表中與之相匹配的列值沒有相匹配的用空值代替。

標籤:面試 題目