---
# System prepended metadata

title: Data Weekly Issue 11
tags: [DataWeekly]

---

---
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)**
