LinkedIn面经(下篇)



  • 面经1:
    第一部分–coding
    Input:
    A method getRandom01Biased() that generates a random integer in [0, 1], where 0 is generated with probability p and 1 is generated with probability (1-p)

    Output:
    A method getRandom06Uniform() that generates a random integer in [0, 6] with uniform probability

    follow up: a method getRandomUniform(int a, int b) that generates a random integer in [a, b) with uniform probability

    第二部分–ML questions
    logistic regression: objective function
    ensemble methods: 主要是楼主简历上的,只调过包不记得detail了,完全没答出来
    unsupervised learning: if we have emails and user profiles, how do we determine if an email is public or private? 主要是考察unsupervised learning,楼主唯一知道的就是k means,于是问k means的assumption是什么,怎么用在这个问题上,但面试官明显想要的不是k means

    ML部分答得太差了,感觉要跪,教训是简历上的每种model都必须了如指掌啊…

    面经2:

    • 一面:
      nice国人小哥,写完题目还聊了一会代码风格,强调了一下代码的可读性。 leetcode原题: ltc 102:level order traversal, ltc 339. Nested List Weight Sum. 无followup。

    • 二面:
      本来是国人小哥,不过因为有事临时换了一位。小插曲是电话刚接通时感觉声音有点杂有点远,沟通之后面试官换了一个房间接电话继续了面试,声音质量也好多了。晚五分钟打来,简单介绍了一下他所在的组,然后我也简单介绍了一下自己。
      一共面了三道题,

    • 第一题:lc 380 - 要求实现一个能insert/remove/getrandom的set,楼主一开始问了一下是不是会有duplicates(想确认一下是不是ltc381),然后被反问了set是否允许重复,这下我才发现我题目没看明白… 然后就顺利的做了。Corner case中被问到了如果remove的元素不在set中以及getRandom时如果set中没元素该怎么办,回答了throws exception。

    • 第二题:原题ltc 205,用两个数组的解法解决了。

    • 第三题:205的follow up,给一个string数组,将iso的词归在一组 {‘fff’,‘abc’,‘foo’,‘haa’,‘www’,‘vvv’}-> { {‘fff’,www’,‘vvv’} , {‘haa’,‘foo’} , {‘abc’} }
      借了group anagram的方法把所有的string都换成a开头的iso string,然后用hashmap<String,Set>解了。

    面经3:

    • 第一轮:
      中国人,在linkedin工作两年,第一道题valid num没有科学计数法,秒。第二道题permutation 2,注意是generic类,没复习java generic怎么写的回去复习一下linkedin似乎很喜欢用接口啊generic等等的。楼主沙比之前一直都没想起来用visited标记这种方法都是傻乎乎的搞了另一个set存现在还能用什么元素。写了这种set的方法,效率不够,问怎么能够优化,才想起来可以用visited,说了思路。大叔(小哥?)就说好了不用写了,庆幸啊!回去仔细想了一下还真没那么简单的,现场改很可能改错。大叔人很好,明显感觉放水(其实放水不一定要题很简单,你在写的时候他会给你feedback,有可能遇到的坑他会及时把你带出来就很好了)在hr给的feedback也很好,非常感谢!

    • 第二轮:
      韩国人+中国人shadow,就写了一道题,intersection and union of two list(sorted),注意参数给的是List ,不知道实现的话get方法可能是o(n)的。一开始写了个用get的,doubt 我的时间复杂度,我说这个可能是o(n),那可能需要用iterator。考官说对那就写吧,然后秒写,这里楼主就突然傻逼了。这题相当于peeking iterator,双指针(双iterator)遍历两个list时,iter.hasNext()是不能作为跳出循环的依据的,因为有一个元素是缓存起来的,只有当那个缓存的头元素也用完了之后才能跳出循环。所以这个bug卡了十分钟都没查出来,其实非常明显的但就是先入为主觉得这怎么可能错没有注意检查这个边界条件。最后给了个test case我才恍然卧槽,这智商真是坑了坑了。.

    建议再有这种要在iterator上搞peek的,不要嫌费事,写一个peekiterator的类包装一下原来的iter。然后时间空间复杂度再问写完了这个,问union多个list的话怎么办,我说那就merge吧,面试官说不行这个空间复杂度很高。我说那就priorityqueue吧,面试官表示满意,问了下空间时间复杂度。然后继续follow up问那就俩list union,你搞个parallel算法。楼主蒙了一下,想了两分钟,说那就第一个数组分n份,找到pivotal点在第二个数组上二分搜索该元素对应的位置,得到这些位置传给并行算法就可以了吧。面试官说行,问了下空间复杂度(我觉得并没有卵区别,还是和以前一样)。
    面试过了大概45分钟(晚打来了6分钟),就直接问问题了。

    韩国人和中国小哥都很好,面试过程中韩国人一直都ok ok,让你感觉到你在right track上。看linkedin也都是大神,希望能高抬贵手,当然写一道题还有bug还半天没发现其实表现的挺差的。。。看人品吧

    面经4:
    面试官是俄罗斯小哥,上来互相介绍几句,就开始写题,刚开始码就发现他那边collabedit给崩了,然后就换成googledoc。。。。

    • 第一题:union/intersect list(此处为arraylist),我用的hashset做的,回来跟同学商量才发现list是已经排好序的,最优解是应该two pointers,虽然当时小哥什么也没说,就开始下一道题了。
    • 第二题: 相当于实现Microsoft里面的查找替换的功能,给一个string article, 一个string find,一个string replace,把文章里所有的find都替换成replace,例如abcdbc把bc换成e ---->aede。思路比较简单,直接indexOf做了,只不过本来应该是用indexOf(“bc”,index),我给写成indexOf(index,“bc”)了(这个是错的)。写完小哥让我口头跑test case,发现一个bug修复,然后剩下5分钟了。

    总结出来他家二面的时候有一定概率会出面经里没有的,当然难度应该不会太高,比如我这个。。。。

    面试的过程中基本我能想出来的毛病都写在里面了,不知道会不会因此挂我,虽然理由也是能找得出来

    平常心平常,我面完想到的唯一一句话就是 Do your best and let God do the rest。。。。我的L家面试算是告一段落了,这段时间我刷完了前人总结下的100多道的最全面经,已经尽全力做到了最好,剩下的就交给上帝吧,祝好

    面经5:
    Begins with a super brief introduction of current work. Followed by 3 LC problems.

    1. LeetCode 364. Nested List Weight Sum II
    2. LeetcodeC 244. Shortest Word Distance II
    3. LeetcodeC 245. Shortest Word Distance III

    推荐给大家一个CS群,都是找工作的大家聚在一起,定时会在群里分享IT咨询、工作机会,交流大牛的工作心得。
    0_1482532315932_782300758280234399.jpg


登录后回复
 

与 BitTiger Community 的连接断开,我们正在尝试重连,请耐心等待