上机考试:

网易有道的筛选模式是先上机考试,然后根据上机考试选择大概1/3参加面试。上机的平台和ACM有点类似,提交代码然后有手动阅卷。

上机考试时隔比较久远,不过还能想起两个题目:

1. 给定一个点分IP地址表示,写个程序把它转换成相应的32位的无符号整数并输出,如果输入不是合法数据,就返回0.

这个题目如何利用好标准输入输出,其实可以很容易判断出不合法的输入用例,不过当时没有想好,导致这个题目没有AC。

后来回去写的代码如下:

#include <stdio.h>
#include <string.h>
bool checkpoint(char *str){int npoint = 0;while(*str){(*str) == '.' ? npoint++ : npoint;if(*(str) != '.' && !((*str) <= '9' && (*str) >= '0')) return false;str++;}return npoint == 3;
}bool checkinrange(int addr[4]){for(int i = 0; i < 4; i++){if(addr[i] > 255){return false;}}return true;
}
bool convertIP(char s[], int addr[4]){char tmp[128];if(checkpoint(s)){sscanf(s, "%d.%d.%d.%d",addr, addr + 1, addr + 2, addr + 3);sprintf_s(tmp, sizeof(tmp), "%d.%d.%d.%d", addr[0], addr[1], addr[2], addr[3]);if(strcmp(s, tmp) == 0 && checkinrange(addr)){return true;}//sprintf_s()}return false;
}
int main()
{char s[128] = {0};int addr[4];while(scanf("%s", s) != EOF){memset(addr, -1, sizeof(addr));if(convertIP(s, addr)){unsigned int result = 0;result = addr[0] * (0x1 << 24);result += addr[1] * (0x1 << 16);result += addr[2] * (0x1 << 8);result += addr[3];printf("%u\n", result);}else{printf("-1\n");}}return 0;
}

2. 给出大小为N的数组,用最快的办法找出前M个大的数字

这个题目可以用一个大小是M的最小堆来实现,初始建堆用数组前M个建好后,如果后面的元素a[i] 大于堆顶元素,那么就删除堆顶,插入新的元素。

#include <queue>
#include <vector>
using namespace std;int main(){priority_queue<int,std::vector<int>, std::greater<int>> q;int n,m;int num;scanf("%d%d", &n, &m);int i;for(i = 0; i < m; i++){scanf("%d", &num);q.push(num);}for( ; i < n; i++){scanf("%d", &num);if(num > q.top()){q.pop();q.push(num);}}
}

一面:

面试官是一个看起来比较技术的MM,MM上来什么也没有问,直接来算法。

题目1. 一个人在网上做项目,加入每天都有很多项目可以选,每个项目都有一个开始时间和截止时间,假设每个项目的钱是一样的,那么在n天内,如何安排自己的接活才能保证赚钱最多。

问题简化后就是贪心的活动安排问题, 传送门:http://blog.csdn.net/a9529lty/article/details/4042019

然后证明(想半天,没有想出来)

问题2. 假如这个时候,每个活的钱数是不同的,可以获得最大的钱数是多少?

(我给的答案是枚举任务,然后做dp)

写代码....

#define MAX_TAST 100
struct Task{int s, e;int val;
};bool TaskInRange(const Task &t, int s, int e){return t.s >= s && t.e <= e;
}int dp[MAX_TAST][MAX_TAST];
int nTask;
Task aTask[MAX_TAST];
int GetMaxValue(int s, int e){if(dp[s][e] != -1){return dp[s][e];}if( s == e){return dp[s][e] = 0;}int maxvalue = 0;for(int i = 0; i < nTask; i++){if(TaskInRange(aTask[i], s, e)){int value = GetMaxValue(s, aTask[i].s) + GetMaxValue(aTask[i].e, e) +aTask[i].val;if(value > maxvalue){maxvalue = value;}}}return dp[s][e] = maxvalue;
}

然后她问我如何优化,我说可以先把任务排序,然后搜索到合适的任务岂止点,将枚举从O(n)降低到O(logn).

二面:

二面先聊自我介绍,简要介绍之前做的项目

问题1. 写代码:判断一个数字序列是BST后序遍历的结果,下面是我现场写的代码,没有测试过

bool IsPostOrderOfBST(int array[], int low, int high)
{if(low >= high){return true;}int split = -1, i;for( i = low; i < high; i++){if(split != -1 && array[i] < array[high]){return false;}if(split == -1 && array[i] > array[high]){split = i;}}if(split == -1){return IsPostOrderOfBST(array, low, high-1);}return IsPostOrderOfBST(array, low, split-1) && IsPostOrderOfBST(array, split, high-1);
}

问题2. 写一个单件模式,然后顺便被我引导到扯扯 线程安全 异常安全等话题,我不断完善最初代码使得满足线程安全和异常安全。

下面的代码大概是最初版本:

#include <stdio.h>class Singleton{private:Singleton(){}Singleton(const Singleton &);Singleton& operator=(const Singleton&);public:static Singleton *Instantialize();static Singleton *pInstance;
};Singleton* Singleton::pInstance = 0;
Singleton* Singleton::Instantialize(){if(pInstance == NULL){pInstance = new Singleton();}return pInstance;
}

然后大概扩展到如下形式:

class Lock{
private:       CRITICAL_SECTION &m_cs;
public:Lock(CRITICAL_SECTION cs):m_cs(cs){m_cs.lock();}~Lock(){m_cs.unlock();}
};class Singleton{
private:Singleton();Singleton(const Singleton );Singleton operator = (const Singleton &);public:static Singleton *Instantialize();static Singleton *pInstance;static CRITICAL_SECTION cs;
};
Singleton* Singleton::pInstance = 0;
Singleton* Singleton::Instantialize()
{       if(pInstance == NULL){//double checkLock lock(cs);//用lock实现线程安全,用资源管理类,实现异常安全if(pInstance == NULL){pInstance = new Singleton();}}return pInstance;
}

问题3 对C++ virtual的理解 . 我从实现角度给他说了  虚函数和虚继承

问题4 如果有一个websever,例如12306,用户量特别大,网站面临效能问题,如何解决。

我先胡扯了线程池,然后又扯到多个机器搞这个问题等等

最后问一下我对什么感兴趣,他给我介绍了有道云笔记。

总结:

和很多人分享了一些面试题目,感觉我面试的题目难度是比较水的,感觉其他同学面的都很难。有道说十一以后还会安排三面,是技术总监面试,估计也是终面了吧~

网易有道面经(2013校园招聘杭州站)相关推荐

  1. 网易有道面经(2013校园招聘杭州站)zz

    原文地址:http://blog.csdn.net/hopeztm/article/details/8026457 上机考试: 网易有道的筛选模式是先上机考试,然后根据上机考试选择大概1/3参加面试. ...

  2. 2012网易校园招聘杭州站笔试

    恩,今天去参加了网易的笔试.题目随后更新. 1.长度为M字符串匹配与长度为N的字符串匹配的时间复杂度? 我查了查,O(M + N).KMP能做到. 这里:http://blog.csdn.net/me ...

  3. 杭州java校园招聘_网易校园招聘杭州Java笔试题

    地点:杭州 职位:java研发 第一部分:计算机科学基础 (注:所有职位必做) 1.(2分)最坏情况下时间复杂度为O(nlogn)的排序算法有() A.基数排序 B.归并排序.C.堆排序 D.快速排序 ...

  4. 【面试笔试-c/c++】兰亭集势2013校园招聘试题。

    兰亭集势2013校园招聘试题. 投递职位:软件开发工程师,笔试通过,接到面试但是没有去.公司总部在望京利泽中园启明国际大厦.据说上午的面试很是混乱,问的技术问题不多. 一.选择题: 1.下面程序的输出 ...

  5. 转: 多益网络2013校园招聘第二轮笔试题目

    多益网络2013校园招聘第二轮笔试题目 转载于:https://www.cnblogs.com/kira2will/p/4039539.html

  6. 360 2013校园招聘笔试题(含参考答案)

    360 2013校园招聘笔试题(含参考答案) 参考答案: 1.D  5*5*5=125 2.C  排除法 3.A  仅个人意见 4.A 5.D   ABC三语句一定保留,D不确定,EF一定删除 6.不 ...

  7. 我的梦想,我的飞翔! 南航天合2013校园招聘火热启动

    我的梦想,我的飞翔! 南航天合2013校园招聘火热启动 一.公司简介                                                                   ...

  8. 搜狐2010校园招聘第一站北邮笔试题

    搜狐2010校园招聘第一站北邮笔试题 转自 狼窝 http://blog.csdn.net/haoxing168 转载请注明出处 一.填空选择题.(好像是20多分) 太多了,忘了,总之是基础的啦,有看 ...

  9. 搜狐2010校园招聘第一站北邮笔试题(转) 以及 本人做的部分答案

      搜狐2010 校园招聘第一站北邮笔试题  <script type="text/javascript"> </script> <script ty ...

最新文章

  1. Virtex-6中的GTX模块、GTH模块
  2. java 序列化概念和作用_结合代码详细解读Java序列化与反序列化概念理解
  3. Python中list、set和tuple
  4. 中国移动将向广大开发者开放了SDK/API等开发工具
  5. 【leetcode】Path Sum II
  6. 十大面试问题解惑,秒杀一切HR、技术面试。iOS程序员必读!
  7. Spark Structured Straming:'writeStream' can be called only on streaming Dataset/DataFrame
  8. jQuery技巧总结(转)作为JQuery学习总结
  9. GitHub上下载资源
  10. 在windows上安装 chocolatey.1.1.0.nupkg
  11. 基于NSGA3的swat模型情景的多目标优化算法,python
  12. python字体和图片合成
  13. 【附Python版教学】“那些年用过的奇葩辞职理由”哈哈哈,看完笑掉牙。
  14. AIR202的lua开发
  15. 德国是2018世界杯夺冠最大热门? Python数据分析来揭开神秘面纱…
  16. 收到offer不想去,如何优雅拒绝?
  17. OCR识别新能源车牌的原理
  18. Java 通过EWS JAVA API发送exchange邮件
  19. 关于flask-sqlalchemy同字段多条件的过滤方法
  20. linux eval命令详解,linux命令详解——eval

热门文章

  1. hostapd wpa_supplicant madwifi详细分析(十一)——wps原理及实现 三
  2. JavaScript基础第01天笔记
  3. 网页中的表格保存为EXCEL表格,打印网页中的表格
  4. 华虹宏力探索智能制造 亚信安全洞察全网风险
  5. myeclipse/ eclipse断点没有对勾,断点打不上,方法无法访问
  6. Android生成简单的图片验证码
  7. 模型部署到移动端_分分钟打开倾斜摄影模型,新版本的老子云移动端也太好用了吧!...
  8. 计算机测绘程序设计实验报告,测绘程序设计(VS2008)实验报告--文件操作.docx
  9. 高档的电数码产品机箱设计标准和方法
  10. day02_《谷粒商城》的完整流程(详细版一)