歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 網易杭州研究院實習面試題和答案

網易杭州研究院實習面試題和答案

日期:2017/2/28 15:30:48   编辑:Linux教程

這個實習都是發生在去年的事情了,大概是12月中旬的時候參加的面試。 回想起來一些面試中出現的問題,就分享一下問題和解題思路,希望給准備找工作的同學多一些題目上的幫助吧。

1. 閒聊
2. 語言題:
C++:

有點記不清了,大概有如下題目:


1. 說說靜態成員函數,普通成員函數各自的特點。
2. 靜態成員函數的訪問特性,例如可否訪問普通成員數據等
3. inline 和 #define 區別

3. OS
死鎖的幾個條件

4.寫代碼題
1. 在一個數組中,其中有一個數字是值的個數,超過了數組大小的一半,問如何能在O(n)的運行時間找到這個數,空間是O(1)
分析: 這裡我們可以用一個計數器,就能把這個問題搞定,計數器的原理是說:

首先初始化,記錄第一個數的值,並且初始化次數是1, 在掃描的過程中,如果當前值與記錄的數不相同,就更新記錄數字,並且初始化出現此時是1.
其實這個過程相當於用特定的數字,和其他數字做抵消。並且特定數字的數目大於數組一半,所以最後一定能找到這個數字。

int FindNum(int a[], int size)
{
int val, count;
val = a[0];
count = 1;

for( int i = 1; i < size; i++)
{
if(a[i] != val)
{
count--;
}
else
{
count++;
}
if(count == 0)
{
count = 1;
val = a[i];
}
}
return val;
}

2. 不用遞歸寫出樹的中根遍歷。
這個問題已經是很經典很經典的面試題了

struct TreeNode
{
int data;
TreeNode* pLeft;
TreeNode* pRight;

};


void InOrder(TreeNode *pRoot)
{
stack<TreeNode*> s;

while(pRoot || !s.empty())
{
if(pRoot)
{
s.push(pRoot);
pRoot = pRoot->pLeft;
}
else
{
pRoot = s.top();
s.pop();

visit(pRoot );
pRoot = pRoot ->pRight;

}
}
}

現在回憶起來還是很簡單的,當時因為沒有做過任何面試題和復習數據結構,所以面的很水。所以我感覺IT面試還真需要特別的准備,否則容易敗的很慘~即使做過再牛逼的東西,面試的時候表現的很水,雇主就會有不雇傭你的理由。

Copyright © Linux教程網 All Rights Reserved