2017秋招小结

这只是秋招求职面试的一个回忆,由于2017年秋招已经过去很久,许多细节已经淡忘了,这里不谈多少心路历程和感慨,只把秋招的面试记录填上,毕竟也是令人难忘的经历。

拖了这么久才把这份秋招求职记录补上😓

我准备面试的时间并不长,差不多7月份才开始准备,之前都在打比赛+做科研,整个过程差不多3个月,9月底就不再投简历了,也陆续推掉了后面的所有面试。结果是,一共面试了6家,拿到5个offer,自我感觉还是比较满意的。

下面是对求职过程的一些回忆。

面试经历小记

华为

面试岗位:软件工程师

面试形式:现场面

由于参加CodeCraft并进入全国总决赛的缘故,有华为面试绿卡,免了简历筛选、笔试和技术面,直接参加了校招最早的提前批面试(6月份),这个面试基本正常表现就不会有多大的问题,这就是参加企业编程比赛的好处~

面试官还是问了一点技术相关的问题:

  • 如何管理10亿用户要访问的网络资源和内容数据?
  • 如果同时有2亿用户量的访问,如何组网应对线路压力,以避免拒绝服务?

这个问题很大,很明显是个系统设计相关的问题,考察系统思维能力和一定的工程经验。不过完全没有相关经验,除了分布式存储、负载均衡、冗余备份等,我只从算法角度简单提了几个措施。面试官并不满意,似乎更想得到的是实用的、低成本、易部署的解决方案。第二个问题最后大概合理的解决思路是做了负载均衡后在拥塞节点继续设计分层架构,然后采用轮询等手段来保证公平性,而如果服务器资源有限,则必须采用流控以避免系统宕机或出现大规模的拒绝服务。

华为由于校招规模很大,招人数量很多,因而HR的工作压力很大,这个最早参加的面试到9月底才出结果。最终拿到的是云核心网的软件工程师岗位(SP),而且比较好的是HR允许选择杭州和南京的岗。

阿里巴巴

面试岗位:算法工程师

面试形式:电面

第二家拿到面试机会的是阿里,岗位是算法工程师(运筹优化方向),可惜只经历了一轮面试就结束了,可能是面试比较紧张,加上准备得不充分,很多地方没有注意,另外也可能是这个岗位招人数量很少。后来和清华的一位博士学长(在CodeCraft2017全国决赛现场认识的)聊,得知他也投了这个岗位,估计他是肯定拿下了的。

能想起来的几个面试问题:

  • 做过的比赛细节,聊了很久
  • 讲讲求解线性规划里的Big M处理方法
  • 讲讲整数规划里的列生成方法
  • (有什么要问的)

远景能源

远景能源在南京市区就设有工作地点,在南京中心大厦,工作环境不错,办公室空间宽敞,由于在大厦高层,采光也良好,非常适合远眺。面试的体验也不错,面试一天内完成,效率很高。

面试岗位:算法工程师

面试形式:现场面试

约的9月13日11:00面试。10点前就到了面试地点,熟悉一下环境。签到后就被要求做一道算法题(研发岗应该都要做),我拿到的题目是用栈实现队列,比较简单,纸上写完代码就交了。之后把自己准备的资料又拿出来翻了翻,没一会就到约定的面试时间了,于是面试准时开始。

一面(技术面)

拿着之前写的题到面试官那儿,先解释代码,之后问基础。

  • 给你1分钟时间,在纸上写所有你知道的机器学习算法,写完解释。(提问的同时打开我的博客和GitHub看)
  • GBDT和XGBoost有什么区别?
  • XGBoost如何实现并行?
  • 工业界用得较多的算法有了解吗?
  • 讲LR,讲为什么工业界SVM用得少。
  • 对分布式和大规模并行计算了解多少?
  • 知道参数服务器吗?
  • 聊项目。基本就是解决了什么问题,用了什么方法,为什么用这个方法,遇到最大的困难是什么,结果怎样等等。
  • (有什么要问的吗?)

二面(技术面)

  • 全程聊项目/比赛。

  • 除了简历上写的这些,还做过什么?
  • (有什么要问的吗?)

三面(HR面)

  • 和HR聊人生、聊远景的发展、职业规划,等等。
  • 三面结束之后按要求做一个性格测评,之后回去等通知。

四面(2017.9.15)

  • 拿了哪些offer,职业规划,对自己的认识。短平快的模式,3分钟结束。

四面结束后,当天下午收到OFFER。

美团

投递岗位:软件工程师(外卖配送事业群)

面试形式:电面

一面(技术面,电面,2017.9.6 晚上)

  • 聊项目
  • C++如何实现动态绑定
  • 使用过哪些开发工具和框架,阅读过哪些源码
  • 开放型业务场景题:如何设计美团外卖的调度系统

二面(技术面,电面,2017.9.7 中午)

  • 程序的编译、链接过程
  • C++虚函数,虚函数表,虚指针,内存模型
  • 说说进程间通信机制
  • STL的map原理
  • 100亿URL,找出现频次top k
  • 说说堆数据结构,底层用什么实现,为什么数组可以实现
  • 算法题:给你1000万个形如(a,b)的元组,像(1,2), (2,5), (1,7)可以合并成(1,2,5,7),要求对所有元组进行合并,输出合并后的所有集合族

三面(技术面,电面,2017.9.14 中午)

  • 面试之前面试官很有礼貌地发了一条短信询问什么时候有空
  • 聊Linux/Unix
  • 聊开发工具,面试官分享自己的经验:homebrew, iterm2, vim, zsh, virtual box, ssh, neovim…
  • 聊职业规划,聊技术学习,聊日常习惯,聊工程师素养,聊教育…
  • (我能感觉到面试官用不完的热情和对技术狂热的喜爱)

四面(HR面,电面,2017.9.18 晚上)

  • (HR姐姐的声音有点像张怡宁,于是我有点语无伦次,比前面三面技术面都要紧张…)
  • 主要问了职业规划和求职意向

2017.9.30晚上收到录用意向通知,后端开发(sp)。美团的面试体验非常棒,面试官很专业且都人很nice!

滴滴

面试岗位:算法工程师

面试形式:视频+现场

一面(技术面,视频面,2017.9.6 中午)

  • 自我介绍
  • 聊项目
  • 决策树如何处理缺失数据(训练数据特征有缺失怎么办;模型训练好了,测试数据有特征缺失怎么办)
  • LR损失函数推导
  • 为什么要对似然函数取对数
  • SVM
  • SVM的模型是什么,优化目标以及如何优化
  • SVM的推导过程:SVM的原理,函数间隔和几何间隔,目标函数的等价转换,拉格朗日乘子法,原始问题和对偶问题,KKT条件等
  • 如何选择核函数
  • 写代码:用梯度下降或最小二乘求解线性回归模型的参数

二面(技术面,视频面,2017.9.6 下午)

  • 自我介绍
  • 聊项目
  • 看过XGBoost源码吗,XGBoost如何实现并行,能深入解释吗
  • (光回答特征粒度并行、预处理存入block是不够的,因为面试官会深入地问下去,我如实地告诉面试官了解不深)
  • 对广义线性模型了解多少
  • LR原理
  • LR如何实现并行
  • 特征工程
    • 为什么LR中要做特征离散化,特征离散化有什么好处,最核心的功能是什么
  • 了解哪些优化算法

三面 (技术面,现场面,杭州西湖区,2017.9.23 下午)

  • 自我介绍
  • 聊项目/比赛
  • 聊组合优化/连续优化
  • 聊VRP, TSP
  • 带业务场景的算法题:设有一辆车,此时有4个乘客发出乘车请求,计算最佳载客路线,最小化路程;如果不止4个乘客呢?
  • 4个乘客的话,枚举全排列去掉不可行的解(一个乘客的目的地落在出发地前面的情况)即可,n很大的话比较难。我有调研过这类问题,其模型是Pickup and Delivery Problem, 一类NP-hard路径规划问题,主要有两类:静态和动态,静态问题可以离线通过整数规划或者各种启发式算法求解,动态问题是真实世界中面临的问题,需要做实时优化,难度更大。我分别针对两类问题,结合自己看过的论文和实践经验给出思路并分析算法性能。
  • 聊上面问题的延伸,比如真实场景中,并不是埋头去优化单条线路就行的,而是有很多的车(供给方),同时有很多的乘客发出乘车请求(需求方),为乘客安排哪辆车,如何规划路线,如何实现供需的良好匹配,如何动态调价,等等,通过各种策略,最终能够期望达到一个全局上的优化。

四面(HR面,现场面,杭州西湖区,2017.9.23 下午)

  • 开始HR一直在看我的简历,见HR姐姐没说话,我说要不我先做个自我介绍,姐姐很干脆地回应不用这么正式
  • 聊职业规划,为什么选择算法,是因为在这方面有优势还是喜欢还是其他原因
  • 简要通俗地介绍机器学习和运筹优化的概念
  • 目前有哪些offer,期望薪资是多少,意向工作地点
  • 对求职的企业在做选择时会优先考虑哪些因素

2017.11.5中午收到录用意向通知(拼车策略组)。滴滴的算法岗面试是我面过的最纯粹的机器学习算法面试,面试官都非常专业,一面和二面的技术面给我感觉到的压力非常大,虽然聊的问题看起来不多,但是整个面试过程持续了很长时间,一面从上午一直面到下午,吃了中饭继续面…面试官也非常有耐心,给的算法题如果第一眼感觉不太好还可以申请换题,很人性化。赞滴滴的面试官!

网易

面试岗位:机器学习算法工程师(考拉海购)

面试形式:现场

面试时间和地点:2017年9月27日下午2:30-4:30,杭州网易

一面(技术面)

  • 说说LR(模型假设,损失函数推导,优化方法)
  • LR有什么缺点
  • 特征工程了解多少,one-hot编码中,如果类别数很多怎么办
  • 了解SVM吗
  • C++如何实现多态
  • C++纯虚函数的意义
  • STL的vector原理
  • 写代码:计算二叉树的高度

二面(技术面)

  • 说项目/比赛(面试官同时也在看我的博客)
  • 监督学习和无监督学习算法了解多少
  • k-means有什么缺点
  • 了解红黑树吗
  • 说说http协议
  • Hadoop和Spark了解多少
  • 期望的工作内容

三面(HR面)

  • 自我介绍
  • 一个人做比赛和三个人做比赛有什么不同
  • 遇到的最大挫折?怎么走出阴影的
  • 为什么选择考拉海购
  • 投了其他哪些公司,拿到了哪些offer
  • 工作意向如何,期望薪资多少

2017年10月1日凌晨收到录用意向通知。网易的面试体验也是相当棒的,整个面试一个下午全部完成,面试是短平快的方式,有时一个问题我还没答完就开始问下一个问题了,须要快速思考并作答,比较考验对问题掌握的熟练程度和语言的凝练表达。说实话,之前对网易没抱太大希望的,但就是有执念,提前批内推笔试挂了,秋招大不了再战,好在把握住了这次机会。收到面试通过短信的那一刻,我无比的开心。那一天一位室友也收到了通过的短信,我们来了个大大的拥抱:D

后记

最后的选择是网易。结果只有一个,然而选择的过程却是艰难的,因为你不可能完全预测每一个选择对未来发展轨迹的影响。至于人们总是喜欢问的「为什么」,我在这里有不算解释的解释。

奇妙的是,我们寝室的三个研三同学都不约而同地选择了网易:)

不过,于此延伸出的另一个值得思考的问题是:为什么会觉得选择困难?原因可以很复杂也可以很简单,一个简单的解释是,在当前时间点当前阅历和心态下,对选择的评估是差不多的,因而就觉得做决定比较困难。在机器学习的角度上也有类似的解释:对于选择,可以把它看成一个分类决策问题,很多分类问题在低维度上很难做,因为很多是非线性的,很难找到一个分类决策面做出完美的分类,然而如果把它放到高维空间里问题往往就变得很容易了,一个明显的例子就是支持向量机的核方法。对应到生活中,也大抵如此,有时回头看曾经面临的一些选择,觉得都不是问题,然而当时却觉得无比艰难,因为那时我们能站在更高的层次看待问题了。所以还是应该多读书多思考多交流,提升自己的思维层次,走在生活的前面,这样也许在面临一些选择时,能够做出合理的乃至「最优的」决策。

我有时会想象,另一个平行世界里的我是不是就做出了其他的选择,使得世界线朝着其他某个方向前进… :P

-----EOF-----

Categories: 随笔 Tags: 求职