- 1、本文档共2页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
google iterator 笔试考题
Google iterator question
给一个MergedSortedStream 的class 包装一定数量的SortedStream,Stream 都有hasNext()和
next() 的方法,SortedStream 定义是从这个流读取的数据一定是升序的,现在让我实现
MergedSortedStream 的hasNext()和next()方法,从而达到MergedSortedStream 的next()返回
的数据也是升序的。大概思路跟leetcode 的merge k list 一样,用min heap 来做,但是这里
有个问题就是SortedStream 缺一个 peek()方法,我一开始没往定义一个wrapper class 那方
面想,被面试官提醒才突然想起来以前在地里看过的GOOGLE 面经有考过PeekIterator 的实
现,如出一辙。慌慌忙忙写完了wrapper class 时间已经到了
1) Why do we have interfaces?
2) What does synchronized do?
3)
interface Iterator {
Object next();
boolean hasNext();
}
[3, 3, 2, 4, 5]
while (hasNext()){
next();
}
interface Stream {
Object next();
boolean hasNext();
}
[3, 3, 2, 4, ... ]
/** Precondition: ever call to .next() returns the minimal value in the stream */
interface SortedStream {
Comparables next();
boolean hasNext();
}
[2, 3, 3, 4, ... ]
while (hasNext()){
next();
}
ListSortedStream list =
[new SortedStream([2, 3, 3, 4, ... ])
[2, ... ]
如何实现iterator 的peek。
iterator 实现next hasnext,flatten list 交替输出 [[7 8 9] [] [2 3 5] [1 19]] 7 2 1 8 3 19
9 5
Google iterator question
OO 题,java 中的iterator 使用的是什么design pattern ?decorator 就是个inner class。写出
代码并且使得iterator 可以查看前一个遍历的内容。有点记不清了,大致就是包装一下iterator
多出一个存储单元记录内容。
写一个PeekIterator,包装一个普通的Iterator,要实现peek()方法,返回当前iterator 指向的
元素,但是不能移动它。除此之外也要实现hasNext()和next()方法。第二题,给一个BST 的
Node,有父节点的指针,求该Node 的下一个Node。这一面感觉不错。
写一个EvenIterator(汗,这年头这么流行考iterator 么?),包装一个普通的Iterator,只返回
even number 。要求实现next()和 hasNext()方法。这一面感觉不太好,没想到先写个简单的
方法。最后时间到了还是有bug 没有修改完。
写jump iterator 类, 构造函数传入一个普通的iterator, 然后实现next(), hasNext(). next()返回
传入iterator 的next().next(), 就是每次跳过一个元素输出.
然后再实现一个 rotateIterator(), 构造函数传入 ListIteratorT, 实现 next(), hasNext(). 例
如:
传入的三个iterator 里面的值分别是[[1,2,3],[4,5,6], [7,8]], 那rotateIterator 的next()应该输出
[1,4,7,2,5,8,3,6]. 就
文档评论(0)