一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 2702|回复: 23
收起左侧

LinkedIn 实习电面 ml track

[复制链接] |试试Instant~ |关注本帖
zj00377 发表于 2015-11-24 07:53:36 | 显示全部楼层 |阅读模式

2015(10-12月) 码农类 博士 实习@Linkedin - 内推 - 技术电面 |Otherfresh grad应届毕业生

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
原本是上周一面,面试官有事改成这周一面了。HR  原本发的邮件是 1v2 面,但是面试的时候就成一个人了,还是个阿三,各种挑刺,估计是跪了。。。。。
上来 先寒暄几句,然后聊project。然后聊着聊着就打断我了,问你的project做 Logistic regression 和 ADMM 比过吗,谁的比较快?
我说我的(Stochastic coordient descent)比较快。你和 spark 那些开源ML包比过吗?  我说开源包没加 regularization term, 目标函数不一样,没发比。
然后又问我为什么要做 feature selection, 我说 去掉 inactive features, 让算法在shrinked 矩阵上做 regression, 结果和原来矩阵是一样的,这样更快。 阿三一直质疑和刁难。。。
然后 又问我你在别的数据上比过吗? 我说 在 基因上的数据比过, 更快。然后我补充说如果 unbalance data, 我做了cross validation 和 undersample 和 oversample 来处理 unbalance data 的问题(正负类差很多的问题)

然后三哥说,那我们来做code 吧,我看了一眼表,快半个小时已过。。。。
code 不难,multi dimension array 的求 summation。 之前准备地里的LinkedIn高频题一个没碰到。。。
鏉ユ簮涓浜.涓夊垎鍦拌鍧.
/** Suppose you are given a class that implements a k-dimensional array
* interface and you want to perform an operation that requires you to . 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
* iterate over all elements of the array using its indices. To be
* specific, let's assume we want to calculate the sum of all elements in
* the array. The interface only provides you a get(int[]) method which
* allows one to fetch the element at that location given the indices along
* each dimension.
*
* For e.g, suppose we are dealing with 4D arrays, given [2, 1, 3, 0], the
* class will provide you array[2][1][3][0].. From 1point 3acres bbs
*
* Write a function that given an instance of the k-D array class and size
* of its dimensions, calculates the sum of all elements.
*
* @param instance of MultiDimArray class that implements a k-D array of . visit 1point3acres.com for more.
*        ints which provides a method x.get(int[]) to get the element
*        located at the indices in the array
* @param array of ints stating the size of each dimension of the k-D array
* @return an int which is the sum of all elements in the k-D array
*
* example: Given object m that holds a 2x2x3 array
* a=[[[3, 2, 2], [1, 5, 0]], [[2, 0, 1], [1, 1, -2]]] (Only for illustration
* purposes. This need not be the internal implementation of our k-D array)
* the function call arraySum(m, [2, 2, 3]) should return 16
* (=3+2+2+1+5+2+1+1+1-2)
*/

/* DO NOT IMPLEMENT */
public interface MultiDimArray {
    int get(vector<int> indices);
}

. more info on 1point3acres.com
public int arraySum (MultiDimArrayImpl m, int [] dimensions) {
}

坑爹的是 做之前HR 问我prefer 什么语言,我说C++。 尼玛给我来了个Java, 还有接口。。。
我开始以为 是 nested interger,  然后题目10分钟才搞懂。. 鍥磋鎴戜滑@1point 3 acres
然后 我开始写code, 不太流畅, 因为 搞半天才明白 那个接口是返回 对应的矩阵的值。
最后总算写出来了,然后 三哥指出了点错误,然后就Q&A了。.鐣欏璁哄潧-涓浜-涓夊垎鍦
交流不太流畅,三哥口语太重了,发那个 collabedit link, 是给我念出来的, t, d 我都被他搞混了, 最后我让他给我发了的email。
然后三哥问project 的口气和吃呛药似的,问到死的节奏。。。。



补充内容 (2015-11-28 08:03):
周三感恩节前一天收到HR邮件,居然过了,不敢相信。。。。

评分

3

查看全部评分

罹年 发表于 2015-12-8 13:35:32 | 显示全部楼层
这题可以用backtracking求解,贴个我的java代码,返回值是所有可能的index组合~
  1. public List<int[]> getAllIndex (int[] dimensions) {
  2.                 List<int[]> result = new ArrayList<int[]>();
  3.                 int[] index = new int[dimensions.length];
  4.                 helper(result, index, 0, dimensions);
  5.                 return result;
  6.         }
  7.        
  8.         private void helper(List<int[]> result, int[] index, int depth, int[] dimensions) {
  9.                 if (depth == dimensions.length) {
  10.                         result.add(index.clone());. 鍥磋鎴戜滑@1point 3 acres
  11.                         return;. from: 1point3acres.com/bbs
  12.                 }
  13.                 int currentDimension = dimensions[depth];
  14.                 for (int i=0; i<currentDimension; i++) {. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  15.                         index[depth] = i;
  16.                         helper(result, index, depth+1, dimensions);.鏈枃鍘熷垱鑷1point3acres璁哄潧
  17.                 }
  18.         }
复制代码
回复 支持 1 反对 0

使用道具 举报

Iancss 发表于 2015-11-25 13:58:13 | 显示全部楼层
题主,这道题的主要考察点是在哪?直接暴力求解吗?因为无论如何都要访问矩阵里面所有的元素,时间复杂度怎么都不可能低过O(n^k)
回复 支持 反对

使用道具 举报

不再记起 发表于 2015-11-26 00:40:20 | 显示全部楼层
LZ有消息了吗?~
回复 支持 反对

使用道具 举报

 楼主| zj00377 发表于 2015-11-27 01:59:59 | 显示全部楼层
Iancss 发表于 2015-11-25 13:58
题主,这道题的主要考察点是在哪?直接暴力求解吗?因为无论如何都要访问矩阵里面所有的元素,时间复杂度怎 ...

对,时间复杂度是改不了的,就是把全部元素都遍历一遍,然后求和。这题的关键是给出index 数组。
回复 支持 反对

使用道具 举报

 楼主| zj00377 发表于 2015-11-27 02:00:23 | 显示全部楼层

昨天收到HR邮件,居然过了。。。。。
回复 支持 反对

使用道具 举报

Iancss 发表于 2015-11-27 02:27:26 | 显示全部楼层
zj00377 发表于 2015-11-27 01:59
对,时间复杂度是改不了的,就是把全部元素都遍历一遍,然后求和。这题的关键是给出index 数组。

for (int i = 0; i < dim1; ++i) {
    for (int j = 0; j < dim2; ++j) {
        //.....
        vector<int> indexes;
        indexes.push_back(i);.鐣欏璁哄潧-涓浜-涓夊垎鍦
        indexes.push_back(j);
        // ........ Waral 鍗氬鏈夋洿澶氭枃绔,
        sum += get(indexes);
    }
}

是这个意思吗?感谢LZ

回复 支持 反对

使用道具 举报

heroic 发表于 2015-11-27 02:44:24 | 显示全部楼层
其实collabedit上面是可以自己选语言的,右上角可以修改语言
回复 支持 反对

使用道具 举报

不再记起 发表于 2015-11-27 04:16:15 | 显示全部楼层
zj00377 发表于 2015-11-27 02:00. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
昨天收到HR邮件,居然过了。。。。。

我19号面的,现在还没鸟我,看来我是要跪的节奏...
回复 支持 反对

使用道具 举报

 楼主| zj00377 发表于 2015-11-28 08:00:57 | 显示全部楼层
Iancss 发表于 2015-11-27 02:27
for (int i = 0; i < dim1; ++i) {
    for (int j = 0; j < dim2; ++j) {
        //.....
鏉ユ簮涓浜.涓夊垎鍦拌鍧.
对,差不多的意思,那个m 是高维的数组,然后数组的维度在 public int arraySum (MultiDimArrayImpl m, int [] dimensions)的 dimension 里边。 比如给的例子, arraySum(m,[2,2,3])。m 就是一个2×2×3 的一个数组,这题关键就是产生 数组的 index。 你那个方法是可以,但是你总不能写n 个循环。。。。。因为 dimension 的维度是个变量,我面试的时候这个问题就纠结了好久。。。。。最后就是大概弄个计数器的数组产生的,每次都加一,到维度大小之后,往前进一位,然后后边都设成0。
回复 支持 反对

使用道具 举报

 楼主| zj00377 发表于 2015-11-28 08:01:26 | 显示全部楼层
heroic 发表于 2015-11-27 02:44
其实collabedit上面是可以自己选语言的,右上角可以修改语言

恩,我也是后来才发现的。。。。
回复 支持 反对

使用道具 举报

 楼主| zj00377 发表于 2015-11-28 08:02:10 | 显示全部楼层
不再记起 发表于 2015-11-27 04:16
我19号面的,现在还没鸟我,看来我是要跪的节奏...

再等等吧,现在是感恩节假期,大公司都在放假,会有好消息的!
回复 支持 反对

使用道具 举报

Iancss 发表于 2015-11-28 08:25:50 | 显示全部楼层
zj00377 发表于 2015-11-28 08:00. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
对,差不多的意思,那个m 是高维的数组,然后数组的维度在 public int arraySum (MultiDimArrayImpl m, i ...

原来维度是变量!!那么这道题有点像是将digit放在一个vector里面,然后每次都不停加1。感谢楼主!
回复 支持 反对

使用道具 举报

不再记起 发表于 2015-11-28 13:23:51 | 显示全部楼层
zj00377 发表于 2015-11-28 08:02
再等等吧,现在是感恩节假期,大公司都在放假,会有好消息的!
.鐣欏璁哄潧-涓浜-涓夊垎鍦
希望把 我是infra组 你是ML组?
回复 支持 反对

使用道具 举报

saberkun 发表于 2015-11-28 13:30:33 | 显示全部楼层
阿三就是很给中国女生放水的么,lz妥妥滴
回复 支持 反对

使用道具 举报

 楼主| zj00377 发表于 2015-11-29 09:58:13 | 显示全部楼层
不再记起 发表于 2015-11-28 13:23
希望把 我是infra组 你是ML组?

恩,因为我research 是搞ML的,就投了这个。
回复 支持 反对

使用道具 举报

 楼主| zj00377 发表于 2015-11-29 09:58:44 | 显示全部楼层
saberkun 发表于 2015-11-28 13:30
阿三就是很给中国女生放水的么,lz妥妥滴

是滴,本来以为碰到阿三完蛋了。。。。
回复 支持 反对

使用道具 举报

jyhang1991 发表于 2015-11-30 11:37:48 | 显示全部楼层
感谢lz分享。还是不明白
public interface MultiDimArray {
  int get(int[] indices);
}.鐣欏璁哄潧-涓浜-涓夊垎鍦
里的get到底是个什么东西,求更多detail
回复 支持 反对

使用道具 举报

xnature 发表于 2015-12-1 23:51:28 | 显示全部楼层
因为他们家用了很多ADMM
回复 支持 反对

使用道具 举报

 楼主| zj00377 发表于 2015-12-6 15:13:48 | 显示全部楼层
jyhang1991 发表于 2015-11-30 11:37
感谢lz分享。还是不明白. 1point3acres.com/bbs
public interface MultiDimArray {
  int get(int[] indices);

get 就是 取得对应位置中m 的元素。 比如例子中 m 的 dimension = {2, 2, 3}。如果想查询 m 的 (1, 1, 2)的值,就要调 m.get(indices) 来获得对应的元素, int indices[] = {1, 1, 2}。   
回复 支持 反对

使用道具 举报

 楼主| zj00377 发表于 2015-12-6 15:15:11 | 显示全部楼层
xnature 发表于 2015-12-1 23:51
因为他们家用了很多ADMM

对呀,看了面我的人和 manager 的主页, 里面优化的方法都是ADMM 来解 logistic regression.
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-9 04:30

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表