2016找工作回顾

在校招找工作期间没有找太多家,拿了网易游戏转正offer之后,本来已经快决定去了。后来offer给了白菜价(27W),有点失望,又考虑到游戏行业的特殊性,就又找了几家…

笔试大多数都没有什么问题,Google和Hulu笔试都比较难,然后没有过笔试很悲催。网易互联网很奇怪为什么没有过笔试。Airbnb也很奇怪,做了笔试,笔试就一道简单题目,给我发了面试邀请,后来又告诉我没有过笔试,猜测是因为题目发给了别人被查重。 Amazon很可惜,题目不难,但是环境不太熟悉,总出现编译不过的问题,也没有通过笔试。

下面都是主要面试的几家。


宜信大数据

  • 一面:
    1. 在一个字典中,找出最相像的一个单词
    2. code,编辑距离
    3. 在一个页面上显示社交用户之间的关系(关注、被关注、相互关注),如何设计?
    4. 用户关注多个大V,怎么在页面上按时间顺序显示大V发布的内容?
  • 二面:
    1. 先介绍了一下公司整体情况,有哪些Team,做些什么东西,说了好一会。人超nice。
    2. 二叉搜索树删除一个节点
    3. 求一个城市的剪影。(若干个矩形分布在X轴上,求轮廓线,回答了一个O(N)的算法,面试官说有一个分治的算法)
    4. 操作系统,堆和栈的区别
    5. 进程和线程
    6. 还问了一个求凸包的问题,但是之前遇到过,我就说了我知道,就没再继续问。(Graham算法)
  • 三面:
    1. 两个相交物体怎么检测相交?求出相交的区域?(这个真不知道,面试官给我讲了一下思路,四叉树或者八叉树)
    2. code,二叉搜索树,给一个数值v,删除v的下一个节点。(先找再删,但是当时删除写得有些问题,找的那部分直接找v的下一个,写得也有些复杂,但是面试官说思路没问题,建议可以分开写,先找v再找v的下一个)
      • 现在看这个题,找v的下一个那一块,不要返回节点指针,而是返回节点存的值,然后二叉树删一个值的所有节点,好写
    3. MySQL引擎哪两种?
      • MylSAM
      • InnoDB
    4. 数据库索引?
      • B树
      • B+树

offer √, 白菜offer,17 * 15,户口按排名分配

宜信大数据原来也是京城30W俱乐部,可能面试成绩不好,给的并不多。但是自从原来的老大走了,领走了很多Hulu人,感觉变得不是很有吸引力了,但是我觉得公司前景还是不错的…


百度

  • 一面:
    1. code,一个堆,一个value,删除这个value(准备的不充分,堆的删除写错了,应该在把最后一个元素替换过来,我写成把左右孩子拿过来替换了…)
    2. code,大整数加法,尽可能考虑全了异常情况
    3. code,最短路算法,dijkstra
    4. C++多态
    5. 生产者消费者问题(回来看书发现写错了,面试官也不告诉我一下)
    6. 问我的优点和缺点…后来聊着聊着,面试官建议我后面学习学习机器学习…
  • 二面:
    1. 介绍网易游戏实习项目,而且是比较详细的介绍,需求分析、应用场景、LogServer结构,应用的每一个模块
    2. 给了一段程序,给出输出。但是由于我对Linux不熟悉,面试官给我讲了一下fork是怎么回事,然后又说了一下printf有\n和没有\n的区别,再让我看看输出什么。(好在我最后分析对了,给出了正确输出)
    3. 两个链表,判读是否相交?是否有环?让我只遍历一遍来把相交和环的情况都判断出来,而且不能有额外的空间话费。也是没好好想清楚,所以一开始有些懵,后面面试官给了提示,简单写了一下。
  • 三面:
    • 聊天
    • 不得不说,这次三面让我学到很多。不知道面试官聊的怎么样,我是聊的很开心,就像和一个有经验厉害的姐姐聊天一样。面试官给了我很多鼓励、建议。可能一直在不断训练自己解决问题的能力,但是对于分析问题、总结问题上,没有去过多注意。其实也真的很有必要不断训练自己分析问题、总结问题的能力,这样我觉得可能成长的更快吧。
    • 还有就是,我第一次感觉到认可别人有多重要。谢谢那位面试官。

offer √,小sp,17*14.6,没户口

百度嘛,狼厂,锻炼几年很好跳槽


今日头条

  • 一面:
    1. 聊项目
    2. C++,内存类型,或者说是程序内存布局
      • 栈区
      • 堆区
      • 全局区(静态区)
      • 文字常量区
      • 程序代码区
    3. code,大小为n的无序数组,数字范围是[0, n-1],判断是否有重复元素。
    4. 在浏览器输入一个URL到得到响应的整个过程
    5. 上面问题刚说了一半,就开始问我DNS是咋回事?转发是怎么实现的?
    6. 讲一下KMP算法,主要是fail是咋回事,以及推导过程
  • 二面:
    1. 聊项目,聊得比较深
    2. 因为接触过memcached,针对cache问了两个问题
      1. key-value,怎么hash出这个key
      2. 现在有5台memcached的缓存服务器,并且满了,怎么扩展
    3. code,min queue,类似 LeetCode 上的 min stack
    4. code,在机器上写
      1. 字符串,输出所有组合,比如”ab”,输出 “a”, “b”, “ab”
      2. 字符串,输出所有组合的全排列,比如”ab”,输出”a”,”b”,”ab”,”ba”
        • 没想好这个,写错了…

offer:✘,说我经验少…

头条真的是一个不错的公司,但是据说很累,10-10-5.5


FreeWheel

  • 一面:
    1. 英语自我介绍
    2. C++多态、纯虚函数
    3. Java、Python多态…这我哪会
    4. C++对象转换
    5. code,二叉树和两个数字,返回两个数字的路径
      • 说了思路就没写code,面试官觉得我先找到最近公共祖先再打印路径的想法不是很好…
    6. 设计题,更新每一个group的视频浏览数
      • 建图:从视频节点出发,dfs一遍找到能到的group,简历数据更新边,然后就可以直接更新
    7. 设计模式,当时没有太复习…
    8. 聊了一下简历
      • 问了博客都写了什么东西
      • 问我简历上写的 “在花 2 个小时手工解决问题与花 1 天编写程序自动化解决问题之间,我会选择后者” 是怎么回事
  • 二面:
    1. 聊天
    2. 笔试算法题
    3. 面向对象,设计微波炉
    4. 业务理解能力考察
    5. 问优缺点、聊人生
  • 三面:
    1. 聊了一下两次实习经历
    2. Linux熟悉吗
    3. Linux IO 多路复用…Linux真不是很熟悉…
    4. 看了简历感觉没什么问..然后我和他找话说…忘记胡说什么了…
    5. 我让面试官给我介绍一下高性能广告业务平台是怎么做的
      • 然后借着这个又问我服务器高性能工具你用过吗…

offer: √,薪水不提了,是拿到的最多的,属于传说中京城30W俱乐部的(虽然现在的公司动不动就30W+)。公司环境好,公司做视频广告(平台,推荐)也很有前景,对自己发展也感觉不错。


微软ASG

  • 一面:
    1. 闲聊,我说我是软粉,然后一起扯了一会Windows Phone
    2. 三个链表归并
      • 写了一个循环写法,面试官说了一下递归写法,确实更简洁
  • 二面:
    1. 闲聊,问了一下两次实习
    2. 判断链表是不是回文
      • 因为我先把链表的前一半翻转再判断,面试官不是很满意,面试官的思路用了额外空间
      • 写出了两个Bug,所以要注意写代码要注意Bug Free
    3. 1-N个数字打印所有和大于等于M的组合
  • 三面:
    1. 闲聊了一会
    2. 打印1-N的全排列
      • 在这题目上面讨论了时间复杂度、空间复杂度、以及栈空间溢出、函数调用栈空间的花费
  • 四面:
    • 竟然是外国面试官,准备的英语也没用上。而且遇到外国面试官超级紧张…
    • 一道题目,分割字符串,也就是完成一个这样的函数: vector split(string input, vector & separators) ,返回 split之后的结果,比如: input: "abc---defghijk;l" separators: {"-", "--", "ghi", ";"} 一个可能的答案是: {"abc", "", "def", "jk", "l"}
    • 先简单写一个暴力,要求Zero Bug(虽然写出了一个Bug)
      • 分析复杂度,N = input.length(), M = separators.size(),O(NM)
      • 如果 N <= 10^12, M <= 10^12, 但是separators的每一个string的长度 k <= 5,怎么优化?
        • 为什么这么笨没想到…

offer:至今也没收到拒信…难道???(✘)

MSEND


NVIDIA

NVIDIA在中国一般很少校招,今年(2016)赶上了一次,并且师兄帮忙内推,运气好,参加了面试(1轮电话面试+4轮技术面)

  • 电话面试:
    • 主要是聊项目,聊了简历上OpenGL的项目,比较基础。后悔没有把项目代码过一遍,因为现场二面的时候,项目问得好深…
  • 一面:
    • code,设计一个shared_ptr
      • 忘记考虑隐式转换(explict)和自我复制
      • 写完代码后又问了下多线程情况怎么处理…
    • code,算法题,两个数组,A={a1, a2, … an} && 0<=ai<=9,B={b1, b2, … bm} && 0<=bi<=9,从两个数组一共选出k个数{c1, c2, … ck},保证选出的c1c2…ck组成的数字最大,并且保持在原数组的先后顺序,比如A={3, 6}, B={8, 4, 9}, k=3, 结果为896
      • 面试官给了一个提示,有了想法后,因为二面面试官比较急,就没写代码…
  • 二面:
    • 二面是视频和美国那边视频面试
    • 感觉二面就是社招的标准,项目问得特别深,然后项目的代码还没有去review一遍,一些细节也不记得了,还一直让我用英语说,血崩..
    • 又问了一些pipeline基础,也涉及到了pipeline算法中的一些细节,比如裁剪是怎么做到的…
    • 还有就是,中文还可以说出来,总让我用英语说…
    • 最后问我会web开发吗… 我觉得可能是觉得我graphics不行,看看招过来能不能写网页…
    • 要问我JS的问题,我说别问了,问了估计也不会… 二面面试官直接说,”那我觉得今天面试可以结束了”(原话)
  • 三面:
    • 以为都不会有三面了,好在二面面试官忙,没有反馈…
    • 三面就比较顺了,问得都是graphics并且很基础
    • 还让我写了一下最长公共子序列的状态转移方程
  • 四面:
    • HR后面和我说的,是临时找来的一个面试官,而且主要是做hardware的
    • 主要介绍我的项目,然后聊了一些C++的东西
      • 说到了 string copy-on-write,借此扯到了lazy思想,又扯到了缓存更新策略write-back…

可能之后也不会在graphics领域继续学习成长工作了,最后这个面试也是我对自己喜欢了3年的学科的交代了…

offer:✘

NVEND