国内一线互联网在职谈谈对归国留学生的看法

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
E轮2.5亿美元融资
K12教育独角兽一起作业
北京-诚聘人工智能/教育/大数据岗
[Google级团队]
实时大数据分析领域践行者
北京/深圳-大数据/搜索/机器学习岗
码农求职神器Triplebyte:
不用海投
内推多家公司面试
把贵司招聘信息放这里
查看: 3900|回复: 9
收起左侧

twitter 电面两轮题目放松。

[复制链接] |试试Instant~ |关注本帖
aifer 发表于 2016-7-12 04:03:36 | 显示全部楼层 |阅读模式

2016(7-9月) 码农类General 硕士 全职@Twitter - 网上海投 - 技术电面  | Fail | fresh grad应届毕业生

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

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

x
面的是full stack engineer。两轮都是国人小哥。昨天2轮结束的,已挂。第一轮是给你一个数n, 让你计算出从1-n的时候,(0-9)每个数出现的次数。答得磕磕绊绊,不过还是感谢国人小哥给我过了进入第二轮的机会。
第二轮是给一个sorted array,找出出现频率最高的那个数,如果多个的话,返回任意一个即可。楼主给了hashmap和遍历数组的解法。小哥问有没有average case 优于linear,worst case better or equal linear的solution。
我想了一个binary search的方法,遍历数组第i个元素的时候,在右半数组里做binary search找到第一个与a不同的index。我个人感觉这种方法在average case情况下可以优于Linear,因为可以跳过一些重复元素。如果是worst case,即全部是distinct number的时候,复杂度会达到nlogn。跟小哥讨论了半天,也不给个hint。最后时间比较紧,就把之前遍历的O(N)solution写了一下。

.鏈枃鍘熷垱鑷1point3acres璁哄潧总结:电面不难,国人何苦难为国人。
.鐣欏璁哄潧-涓浜-涓夊垎鍦

补充内容 (2016-7-12 04:03):
第二天收到拒信。
wangxinbo1123 发表于 2017-2-3 15:50:10 | 显示全部楼层
                a. For a given number at i, check nums[i] == nums[i + maxLen], maxLen is the current highest frequency. If they are equal, calculate the range of the number, and renew the maxLen. Use binary search to find the range of a given number.
回复 支持 2 反对 0

使用道具 举报

Urumic 发表于 2016-7-12 04:43:01 | 显示全部楼层
他家都没有new grad职位。楼主直接投的是需要经验的职位吗?
回复 支持 反对

使用道具 举报

 楼主| aifer 发表于 2016-7-12 05:13:21 | 显示全部楼层
Urumic 发表于 2016-7-12 04:43
他家都没有new grad职位。楼主直接投的是需要经验的职位吗?

很早之前投的,后来联系我的。是fullstack position
回复 支持 反对

使用道具 举报

jamesyin 发表于 2016-7-12 08:32:33 | 显示全部楼层
第二题感觉你的思路是正确的啊,除了binary search应该没有更好的了。我觉得细节方面可以优化一下,比如在binary search之前先看看下一个数是否相同,如果不相同,就不要binary search了,这样最坏情况就是O(n),平均情况比O(n)要好
. 1point 3acres 璁哄潧
        public int highestFrequence(int[] nums){
                int len = 1;
                int left = 0;
                while(left < nums.length - 1){
                        if(nums[left] != nums[left + 1]){
                                left++;
                                continue;
                        }else{
                                int right = binarySearch(nums, left, nums.length - 1);
                                len = Math.max(right - left + 1, len);
                                left = right + 1;
                        }
                }.鏈枃鍘熷垱鑷1point3acres璁哄潧
                return len;
        }
        . 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
        public int binarySearch(int[] nums, int lo, int hi){
                if(lo == hi){
                        return lo;
                }
                if(lo + 1 == hi){
                        return nums[lo] == nums[hi] ? hi : lo;
                }. 鍥磋鎴戜滑@1point 3 acres
                int target = nums[lo];
                while(lo + 1 < hi){
                        int mid = lo + (hi - lo) / 2;
                        if(nums[mid] > target){. more info on 1point3acres.com
                                hi = mid;. Waral 鍗氬鏈夋洿澶氭枃绔,
                        }else{. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
                                lo = mid;
                        }
                }
                if(nums[hi] == target){. 鍥磋鎴戜滑@1point 3 acres
                        return hi;
                }else{
                        return lo;
                }
        }
回复 支持 反对

使用道具 举报

say543 发表于 2016-8-21 14:15:22 | 显示全部楼层
jamesyin 发表于 2016-7-12 08:32
第二题感觉你的思路是正确的啊,除了binary search应该没有更好的了。我觉得细节方面可以优化一下,比如在b ...
-google 1point3acres
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
upeer bound 不是1*logn + 1*logn-1...... log1 = o(nlogn)?
回复 支持 反对

使用道具 举报

codemonk 发表于 2017-9-1 13:14:53 | 显示全部楼层
say543 发表于 2016-8-21 14:15
upeer bound 不是1*logn + 1*logn-1...... log1 = o(nlogn)?

第二题upper bound 我觉得是对应这种case {1,2,2,3,3,3,4,4,4,4,...},时间是 log(N-1) + log(N-3) + log(N-6) + log(N-10) + log(N-15) + ...  = O(N log N) ? 不知道这个对不对,坐等大神解答。
回复 支持 反对

使用道具 举报

一次就好 发表于 2017-9-24 14:34:17 | 显示全部楼层
这二题我有点想法,iterate每个数时,维护一个max,遍历到一个新数nums[i]时,直接看nums[i + max]是不是还是这个数,如果是就继续向后找,然后update这个max,如果不是这个数了,就用二分找到nums[i]这个数的结束位置,继续iterate。这个二分的start = i, end = i + max - 1。 不知道这么想会不会快一点。
回复 支持 反对

使用道具 举报

lingyuan811 发表于 2017-10-18 07:59:45 | 显示全部楼层
想问下,这个第二题不是应该用2pointers做吗, 不是O(N)吗。
回复 支持 反对

使用道具 举报

renou 发表于 2017-12-27 07:56:34 | 显示全部楼层
是不是在查找树的时候用指数方式递进,比如+1,+2,+4,+8直到遇到不一样的树,再倒退到上一个一样的数接着重新递进。这样在很多连续重复的数列会递进很快log(N),worst case就是没有duplicates,O(N)。话说我觉得第一位小哥那个题好难啊

补充内容 (2017-12-27 07:57):
树=》数
回复 支持 反对

使用道具 举报

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

关闭

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

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2018-4-26 06:21

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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