data-com / weekly

For community discussion on the weekly topics, please click here https://github.com/data-com/discussions
65 stars 0 forks source link

Data Weekly [第十一期] #12

Closed emptymalei closed 3 years ago

emptymalei commented 5 years ago

欢迎大家来到 Data Weekly 第二季!点击查看第一季十期

大家多关注供稿作者们啊!

欢迎大家投稿

Science/Math/Statistics

[@necogy 提供] [讨论此话题]

最近因为换工作参加了不少面试,其中有 startup 也有百年历史的大公司。坐标东京,仅作参考。

一般技术面试有三种:

  1. Coding test: 可以在家做,有限时。Codility/HankRank 的题可能性很大。有些公司不仅会只出大题,也会有选择题,有时候可能后者难度大于前者。
  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 的变种 three sum, 输出所有可能的 pair.
    4. 其他的暂时记不得了><
  4. 当面问 interviewer 感兴趣的问题。

    1. 请向一个七岁小孩解释 random forest
    2. 解释特征向量/特征值,以及他们的关系。
    3. 如何解决高维数据 --> 思路大概是怎样降维/有效提取特征
    4. 如何处理不平衡数据的问题
    5. 解释 over-fitting 并提出解决方案。
    6. 关于推荐系统的思路,能说出来哪些
    7. 解释 sampling bias 并举例
    8. 如何优化 CNN
    9. 解释 Kalman filter
    10. 解释如何计算 camera matrix
    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 可以查看我们的第一季第四期
  2. 关于 Camera matrix: Dissecting the Camera Matrix Part 1, Part 2, Part 3

Communication/Visualization

[@xiaohanyu 提供] [讨论此话题]

Graphviz 是一个开源的绘图引擎,其最大的特点在于内置了很多布局(layout)算法,然后通过 dot 描述语言自动生成图形,并支持多种输出格式。

Graphviz 非常适合画复杂节点之间的关系图,比如流程图、OOP 语言类的继承图、算法中的各种数据结构如链表、树、图等。

著名的文档工具 doxygen 就内置 graphviz 支持,用以生成复杂的 OOP 类图关系,比如 C++ boost 库中的一个样例 http://charette.no-ip.com:81/programming/doxygen/boost/grid__graph_8hpp.html

image

从流派上来看,graphviz 是一种 WYTIWYG(What You Think Is What You Get,所思即所得)的工具,使用 graphviz 时,用户其实用 dot 语言来描述节点之间的关系,而底层的节点布局则由 graphviz 内置的布局算法自动完成,相较于 WYSIWYG(What You See Is What You Get,所见即所得),两者可以说是各有优劣及适用场景,后面我们会再谈。

Graphviz 主页上有一些非常有创意的例子,这些例子描述了大量节点之间的关系,生成相应的 PostScript 文件并在 PostScript 之上进行进一步的处理,如上色等等,生成了另人相当惊艳的

image

更多的例子可以参见:http://yifanhu.net/GALLERY/GRAPHS/index.html


如果想要分享你的视角或者经历或者建议,可以通过 Discussions 来提交,或者参与讨论,也可以写邮件给我们:hi@getdataweekly.com

来自 GetDataWeekly.com