歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 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