--- title: Data Weekly Issue 11 tags: DataWeekly --- # Data Weekly Issue 11 > 欢迎大家来到[ Data Weekly 第二季](https://github.com/data-com/weekly/issues?utf8=✓&q=label%3ASeason2)!点击查看[第一季十期](https://github.com/data-com/weekly/issues?utf8=✓&q=label%3ASeason1)。 > > 欢迎大家关注供稿作者们! > > 欢迎大家[**投稿**](https://github.com/data-com/discussions/issues/new)呀 ## Science/Math/Statistics **[@necogy 提供] [[讨论此话题](https://github.com/data-com/discussions/issues/25)]** 最近因为换工作参加了不少面试,其中有 startup 也有百年历史的大公司。坐标东京,仅作参考。 一般技术面试有三种: 1. Coding test: 可以在家做,有限时。[Codility](https://www.codility.com)/[HankRank](https://www.hackerrank.com) 的题可能性很大。有些公司不仅会只出大题,也会有选择题,有时候可能后者难度大于前者。 2. 深入到简历里的 project 细节,彻底搞明白是否 candidate 能说明白自己的 project. 3. 当面问 interviewer 感兴趣的问题。 4. Take-home assignment. 很多时候是其中几类的结合,或者全部都有。 流程通常情况是 3-4 轮,有一些会到 5-6 轮。 一般来讲最后一轮谈 offer 的面试会很轻松,但最近的 DS 面试最后一轮都变得很 intensive... **具体如下**: 1. 逻辑题:题目难,时间短。 大公司特有的 cognitive test 并没有外包给别的 coding test 公司,而是采用自己专门的系统入口。有很多其公司特有场景的测试。图形逻辑测试题类似于幼儿园练习册里的找规律,但题比较难,除非专门准备过,很难拿到高/满分。这种测试都会说明不要瞎猜,这样反而会倒扣分,能做多少做多少。 G 家的 screening test 里也有类似的逻辑题,代码故意用特殊符号写成了伪码(估计是为了公平),需要在很短时间内完成。 2. Brain teaser 把一块蛋糕分成两半,蛋糕可以是任意形状,每一半都比另一半大。请问怎么分。 3. Coding test:有难也有简单的,后者的话一定会考察 edge case/testing. 几个case: 1. Java/HTML/SQL/Python: 都不算难,细节处理好就可以。 2. 很多时间很短的计算题/逻辑题,coding 大题相对简单。 3. [two sum](https://leetcode.com/problems/two-sum/) 的变种 [three sum](https://leetcode.com/problems/3sum/), 输出所有可能的 pair. 4. 其他的暂时记不得了>< 4. 当面问 interviewer 感兴趣的问题。 1. 请向一个七岁小孩解释 random forest 2. 解释特征向量/特征值,以及他们的关系。 3. 如何解决高维数据 --> 思路大概是怎样降维/有效提取特征 4. 如何处理不平衡数据的问题 5. 解释 over-fitting 并提出解决方案。 6. 关于推荐系统的思路,能说出来哪些 7. 解释 sampling bias 并举例 8. 如何优化 CNN 9. [解释 Kalman filter](https://github.com/data-com/weekly/issues/4) 10. 解释如何计算 [camera matrix](http://ksimek.github.io/2012/08/14/decompose/) 11. 已知旧模型工作得不错,新模型的目标值暂时没有,如何检验新模型是否 work。 12. tree-based algorithm 的优缺点 13. regression 和 classification 各自的 evaluation 方法都是什么 5. Take-home assignment 基本上课题类都和公司业务紧密相连,比如说图像处理类的就会给很多 video 让算一个目标值。金融类的公司可能给一个 classification 题算是否可以借贷。 **总结**: DS 职位的面试准备最起码需要对自己的项目内容很熟悉,能把细节讲清楚。 其次要对 deep learning/machine learning的基础算法有清晰的概念。 Coding test 一般来讲对于 DS 职位来说不会太为难,时间不够的话准备到 leetcode medium 就够了。 参考和尾注: 1. 关于 Kalman filter 可以查看我们的[第一季第四期](https://github.com/data-com/weekly/issues/4)。 2. 关于 Camera matrix: [Dissecting the Camera Matrix Part 1](http://ksimek.github.io/2012/08/14/decompose/), [Part 2](http://ksimek.github.io/2012/08/22/extrinsic/), [Part 3](http://ksimek.github.io/2013/08/13/intrinsic/) ## Communication/Visualization **[@xiaohanyu 提供] [[讨论此话题](https://github.com/data-com/discussions/issues/21)]** Graphviz 是一个开源的绘图引擎,其最大的特点在于内置了很多布局(layout)算法,然后通过 dot 描述语言自动生成图形,并支持多种输出格式。 Graphviz 非常适合画复杂节点之间的关系图,比如流程图、OOP 语言类的继承图、算法中的各种数据结构如链表、树、图等。 著名的文档工具 [doxygen](http://www.doxygen.nl/) 就内置 graphviz 支持,用以生成复杂的 OOP 类图关系,比如 C++ boost 库中的一个样例 http://charette.no-ip.com:81/programming/doxygen/boost/grid__graph_8hpp.html : ![image](https://user-images.githubusercontent.com/1164623/62818190-944b2b00-bb76-11e9-8bab-3aaab0d16329.png) 从流派上来看,graphviz 是一种 WYTIWYG(What You Think Is What You Get,所思即所得)的工具,使用 graphviz 时,用户其实用 dot 语言来描述节点之间的关系,而底层的节点布局则由 graphviz 内置的布局算法自动完成,相较于 WYSIWYG(What You See Is What You Get,所见即所得),两者可以说是各有优劣及适用场景,后面我们会再谈。 Graphviz 主页上有一些非常有创意的例子,这些例子描述了大量节点之间的关系,生成相应的 PostScript 文件并在 PostScript 之上进行进一步的处理,如上色等等,生成了另人相当惊艳的[图](http://yifanhu.net/GALLERY/GRAPHS/GIF_SMALL/AG-Monien@biplane-9.html): ![image](https://user-images.githubusercontent.com/1164623/62818243-919d0580-bb77-11e9-9dbd-7292c6951b17.png) 更多的例子可以参见:http://yifanhu.net/GALLERY/GRAPHS/index.html ------ 如果想要分享你的视角或者经历或者建议,可以通过 [Discussions](https://github.com/data-com/discussions/issues) 来提交,或者参与讨论,也可以写邮件给我们:hi@getdataweekly.com **来自 [GetDataWeekly.com](http://getdataweekly.com)**