网易杭州研究院实习面试题和答案

22 篇文章 0 订阅

这个实习都是发生在去年的事情了,大概是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面试还真需要特别的准备,否则容易败的很惨~即使做过再牛逼的东西,面试的时候表现的很水,雇主就会有不雇佣你的理由。 
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值