一亩三分地论坛

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

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

Google电面 已跪

[复制链接] |试试Instant~ |关注本帖
morgendave 发表于 2015-4-2 05:22:30 | 显示全部楼层 |阅读模式

2015(1-3月) 码农类 硕士 全职@Google - 网上海投 - 技术电面 |Failfresh grad应届毕业生

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

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

x
LZ 刚刚打完google的电面就来发面经。。球攒人品。面完就知道应该要跪了。.鏈枃鍘熷垱鑷1point3acres璁哄潧
口音是个白人小哥,上来先问我recent employment和experience。扯了一下就进入technical问题。
问题是:给一个Iterator<Double> stream,windowsize,implement 一个movingwindow类
要求是有构造器,double next(), 以及hasNext(),要抛出异常。
就是个移动窗口得到平均数的题。平时没用Iterator,写的时候脑抽了基础上卡住了。最后时间用完了也没看是不是bug free。。
铁定跪了。。。发面经攒人品。LZ自己半路出家这种基础数据结构都没怎么仔细看过。。。迭代器基本没用过。
看了别的面经好像别人说google喜欢迭代器。。。anyway,大家都加油。

.1point3acres缃

评分

2

查看全部评分

莫小乐 发表于 2015-4-2 09:11:43 | 显示全部楼层
没太明白。。请问楼主
是stream和windowsize做input吗?
next是(*stream+*(stream+1)+...+*(stream+windowsize-1))/windowsize ??
回复 支持 反对

使用道具 举报

 楼主| morgendave 发表于 2015-4-2 10:20:38 | 显示全部楼层
input是这个,但是stream是iterator,只能用next和hasNext。语言是JAVA,然后就是前面小于size个数的数也要做平均. 鍥磋鎴戜滑@1point 3 acres
next返回下一个平均。stream.next如果为空就会抛异常
回复 支持 反对

使用道具 举报

EchoO 发表于 2015-4-2 10:24:23 | 显示全部楼层
lz说的抛出异常是对moving window 还是 iterator?
回复 支持 反对

使用道具 举报

 楼主| morgendave 发表于 2015-4-2 10:30:55 | 显示全部楼层
都要抛。。。两个都抛。
回复 支持 反对

使用道具 举报

 楼主| morgendave 发表于 2015-4-2 11:07:25 | 显示全部楼层
EchoO 发表于 2015-4-2 10:24. visit 1point3acres.com for more.
lz说的抛出异常是对moving window 还是 iterator?

都要抛。。。两个都抛。
回复 支持 反对

使用道具 举报

EchoO 发表于 2015-4-2 21:57:41 | 显示全部楼层
morgendave 发表于 2015-4-2 11:07
都要抛。。。两个都抛。

摸摸头,是用try catch抛么?想不到有什么异常啊
回复 支持 反对

使用道具 举报

 楼主| morgendave 发表于 2015-4-3 07:31:11 | 显示全部楼层
EchoO 发表于 2015-4-2 21:57
摸摸头,是用try catch抛么?想不到有什么异常啊

对。。。next如果为null就抛异常。我写的时候脑抽了用了stream.next()!=null,然后小哥说这时候抛异常你就不用这个条件了。。后来想了想其实用Stream.hasNext要好点。。。
回复 支持 反对

使用道具 举报

EchoO 发表于 2015-4-3 10:32:18 | 显示全部楼层
morgendave 发表于 2015-4-3 07:31
对。。。next如果为null就抛异常。我写的时候脑抽了用了stream.next()!=null,然后小哥说这时候抛异常你 ...

那也还好,还是考虑到哪些情况是invalid的,加油!
回复 支持 反对

使用道具 举报

mm豆 发表于 2015-4-5 05:11:52 | 显示全部楼层
stream,windowsize 这两个输入的平均数是不是(stream1 + stream2 + .. + streamN)/ windowsize?
回复 支持 反对

使用道具 举报

 楼主| morgendave 发表于 2015-4-5 05:31:09 | 显示全部楼层
mm豆 发表于 2015-4-5 05:11
stream,windowsize 这两个输入的平均数是不是(stream1 + stream2 + .. + streamN)/ windowsize?

对的。N=windowsize,next 输出后移窗口的平均。前面不足窗口大小的next就输出全部的平均值
回复 支持 反对

使用道具 举报

mm豆 发表于 2015-4-5 05:42:31 | 显示全部楼层
morgendave 发表于 2015-4-5 05:31
对的。N=windowsize,next 输出后移窗口的平均。前面不足窗口大小的next就输出全部的平均值
. 鍥磋鎴戜滑@1point 3 acres
前面不足窗口大小的next就输出全部的平均值 的意思是在next函数中, if(stream < windowsize) return 平均值 else return stream, 是这个意思么?
回复 支持 反对

使用道具 举报

 楼主| morgendave 发表于 2015-4-5 05:49:03 | 显示全部楼层
mm豆 发表于 2015-4-5 05:42
前面不足窗口大小的next就输出全部的平均值 的意思是在next函数中, if(stream < windowsize) return 平均 ...
. 1point 3acres 璁哄潧
比如说windowsize是4,那么stream一个个往后读,前三次next分别输出1,(1,2)平均,123平均。后面开始输出4个数的平均,窗口向后移动一个数。
回复 支持 反对

使用道具 举报

mm豆 发表于 2015-4-5 05:56:44 | 显示全部楼层
morgendave 发表于 2015-4-5 05:49
比如说windowsize是4,那么stream一个个往后读,前三次next分别输出1,(1,2)平均,123平均。后面开始输 ...
. more info on 1point3acres.com
你的意思是时说如果stream的个数小于windowsize,那么输入为次数的平均值,比如 1, (1 + 2)/2, (1 + 2 + 3)/3;
如果次数大于windowsize, 输出(stream1 + stream2 + stream3 + stream4)/windowsize。是这个意思什么?
窗口向后移动一个数,是什么意思?
回复 支持 反对

使用道具 举报

 楼主| morgendave 发表于 2015-4-5 06:05:27 | 显示全部楼层
mm豆 发表于 2015-4-5 05:56. 鍥磋鎴戜滑@1point 3 acres
你的意思是时说如果stream的个数小于windowsize,那么输入为次数的平均值,比如 1, (1 + 2)/2, (1 ...

对。移动就是iterator的next实现。比如1234后是2345.。其实就是强行让做iterator然后我正好不太会。。。。
回复 支持 反对

使用道具 举报

mm豆 发表于 2015-4-5 06:36:56 | 显示全部楼层
morgendave 发表于 2015-4-5 06:05
对。移动就是iterator的next实现。比如1234后是2345.。其实就是强行让做iterator然后我正好不太会。。。 ...

这题倒是有意思,谢谢啦!Arraylist的iterator的java实现,希望你能有用
    private class Itr implements Iterator<E> {.鐣欏璁哄潧-涓浜-涓夊垎鍦
        int cursor;       // index of next element to return
        int lastRet = -1; // index of last element returned; -1 if no such. more info on 1point3acres.com
        int expectedModCount = modCount;

        public boolean hasNext() {
            return cursor != size;
        }
.鏈枃鍘熷垱鑷1point3acres璁哄潧
        @SuppressWarnings("unchecked")
        public E next() {
            checkForComodification();
            int i = cursor;-google 1point3acres
            if (i >= size)
                throw new NoSuchElementException();
            Object[] elementData = ArrayList.this.elementData;
            if (i >= elementData.length)
                throw new ConcurrentModificationException();
            cursor = i + 1;
            return (E) elementData[lastRet = i];
        }
.鐣欏璁哄潧-涓浜-涓夊垎鍦
        public void remove() {
            if (lastRet < 0)
                throw new IllegalStateException();. Waral 鍗氬鏈夋洿澶氭枃绔,
            checkForComodification();.1point3acres缃

            try {
                ArrayList.this.remove(lastRet);
                cursor = lastRet;
                lastRet = -1;
                expectedModCount = modCount;. 1point3acres.com/bbs
            } catch (IndexOutOfBoundsException ex) {
                throw new ConcurrentModificationException();. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
            }
        }
回复 支持 反对

使用道具 举报

宝贝忆彼岸 发表于 2015-9-17 04:31:50 | 显示全部楼层
请问LZ当window向右移动的时候,怎么删去最左边的哪个?
回复 支持 反对

使用道具 举报

坐看云起 发表于 2015-9-18 07:34:51 | 显示全部楼层
mm豆 发表于 2015-4-5 06:36
这题倒是有意思,谢谢啦!Arraylist的iterator的java实现,希望你能有用
    private class Itr impleme ...

应该没这么麻烦吧,直接用一个队列和一个int老保存window内的值和总和就可以吧。。。。
回复 支持 反对

使用道具 举报

xman 发表于 2015-12-28 22:09:24 | 显示全部楼层
http://www.ibm.com/developerworks/cn/java/j-5things1/
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-5 18:46

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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